エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

2007-01-01から1年間の記事一覧

壁ができた

職場に壁ができました。発注-請け負いという関係で仕事をしてきた協力会社の方々との間に。最近よく耳にするようになった法令遵守の流れから、会社間の関係を明確にするために、物理的に分離することにしました。 複雑な気分です。以前にも書いたように、わ…

既存の構造体に代入する仕組みを作る

C++

よく似てはいるものの、異なる構造体/クラスの間で値をやり取りすることを考えるので、正しくは「代入」ではないんですが、ここでは「代入」ということばを使うことにします。たとえば、どこかでこういった構造体が定義されていたとします。 #include <cstdlib> stati</cstdlib>…

コードがかわいそう

「コードがかわいそう」とか思ってしまったわたし、どんだけコード好き(…というかフェチか…?)なんだか。 とはいえ「かわいそう」とまでは行かずとも、もうちょっとどうにかならないだろうか、と思ったことは少なくなく。そんだけコードに変化がないというわ…

小さなことから黙々と

ついでにアンチパターン候補をもうひとつ。 小さなことを黙々と一人で開発。やがて、大きなことも黙々と一人で開発。 …。 もっとまめにレビューしなさいって。もっと頻繁に他者の目にさらされないと。実は、これは日頃頭を抱えていることのひとつでして。レ…

想像で設計する

今回も、半ばグチです。 ソフトウェアの開発をやっていて、意外と目につくのがこれ。想像で設計する。インタフェースする相手はこうするだろう、エラーのときはこう動くだろう、割り込みはこの順序で発生するだろう、などなど。 以前のエントリで「想像力、…

Prelude探訪

scanlを使ったフィボナッチ数列 fib = scanl (+) 1 (0:fib) allを使った最大値を求める関数 以前の例。 max_value ns = head [x | x <- ns, and $ map (\ n -> x >= n) ns] all関数を使って。 max_value ns = head [x | x <- ns, all (\ n -> x >= n) ns] 日…

「正直ベース」

ときどき「『正直ベース』で見積もると何日かかる?」といった会話を聞くことがあります。「立て前でなくて本当のところは…」という意味だと思うのですが、すごくヘンなことばです。そもそも正直な話をしていれば出てこないことばですし、正直に話をしていな…

自己紹介というイベント

夏風邪と夏バテと生来の体力不足でかなりやられている今日この頃。すでに先週の話になりますがPFPのワークショップに参加してきました。テーマは自己紹介。道具は偏愛マップ。まともな自己紹介など久しくしていなかっただけに、紹介するものがまるで出てこな…

フロ・メシ・ネル・プロセス

「○○の進捗が見られません。状況を教えてください」 「○○はバグじゃありませんか」 「ログからわかることを先に報告してください」職場での、進捗管理担当から現場の担当者へのメール。メールで連絡する内容がこれだけというのは、ちょっとさみしくないかい…

最後の一押し

今日、現場担当者から、報告なのか、なにかの依頼なのか、承認を求めているのか、内容をとらえにくいメールが届きました。なにか訴えようとしているのはわかるんですが、じゃぁ、わたしはどうすればいいのか、わからない。わからないことは直接訊くに限るの…

開発のフットワーク

先日、携帯電話開発でのデザイン競争の裏舞台をTVで見ました。番組の焦点はデザインでしたが、ソフトウェア開発の様子も暗示させられるような内容。韓国メーカーと国内メーカーを取り上げて、開発の様子を追ったのですが。なによりもフットワークの軽さの違…

3Tは遠く

先日の、先輩のとある台詞。 「どいつもこいつも定時で帰りやがって」 いや先輩、それ違いますから。定時で帰るのが正常なんですから、よしとしないと。残業しなければならない事態が非常事態なわけで。 こういった台詞が疑問なく出てきてしまう環境自体がか…

わかりやすいコードPart2・その3

いよいよもってわかりやすいコードからかけ離れてしまった感があるものの。 当り判定追加。相変わらずスコアを表示できず。代わりにコンソールにだだ流し。 かなりに雑なのは、わたしのHaskellスキルの限界か。でも、これだけのことを200行余りで書けてしま…

わかりやすいコードPart2・その2

エイリアン登場。まだ当り判定がありません。 一度作ったものの書き直しだからというのもあるのですが、思いのほか作業が早い。言語の違いにもっと手こずると思っていただけに、少し予想外でした。「わかりやすいコード」を意識したことで、より抽象的なレベ…

わかりやすいコードPart2

もう、コードがわかりやすいかどうかはどうでもよくなっている節がありますが。 こんどはHaskellで挑戦。 まずは、ウィンドウ上をなにかが動くところまで。 ghc --make moreComprehensible.hs ってな感じでコンパイルしてください。以下、コード。

心もオープンに

今日は同僚が悪態をつくのを見てしまい。その場にいない人への文句。悪態をつきたくなる気持ちはわからなくもない。でも、肝腎のその人にそのことばを伝えなかったら意味ないのに。と、ひそかに聞き耳を立てるわたしもよくないのですが。 フィードバックがな…

わかりやすいコード・その6

コードがブログに書くには長くなりすぎてしまったのでここにアップロード。 一応「わかりやすさ」というのに気をつけて書いてみたものの、書くうちに「わかりやすさ」がわからなくなってきます。 for(std::vector<Bullet>::iterator i = bullets_.begin(); i != bull</bullet>…

bool型の値を比較する

C++

今日始めて知りました。次の結果はどうなるか? std::cout << (static_cast<bool>(1) == static_cast<bool>(2)) << std::endl; C++のbool型は整数型なのでこの結果は0(偽)になると思っていたのですが、正解は1(真)。我ながら予想以上のショック。bool型専用の比較演算子が</bool></bool>…

わかりやすいコード・途中経過

元のお題とずいぶん違うものになりつつありますが。

二つの言語

C/C++における、プリプロセッサとコンパイラ。 わたしはC/C++のプリプロセッサがどうも好きになれなくて。より正しくは、プリプロセッサのある種の書き方がすきになれなくて。いわゆる、こういう書き方。 void foo() { #ifdef DEBUGGING デバッグのときだけ…

自分の色を加えない

コーチはアドバイスしないというのがコーチングの基本にあります。同じようにファシリテータは議論を自分の考えに誘導しない、というのを最近知りました。 ふと考えたアナロジーが、コーチもファシリテータも「自分の色を加えない」。 自分がコーチングをす…

わかりやすいコード・その5

エイリアンが攻撃してくるようになりました エイリアンの弾にあったたら即終了 プログラムを実現する、という目的の他に、タイトルにもしている「わかりやすいコード」が実現できているか、考えながら進行中。個人的にはBounds(0, 0, width, height).include…

わかりやすいコード・その4

エイリアンを倒せるようになりました スコアがつきました 表示をダブルバッファリングに替えたのでいくぶん綺麗になった気分 行数かかる書き方とはいえ、500行を越えてしまった まだグローバル変数がおおいなぁ、マジックナンバーも 以下、コード。

VDM

VDMというのを知る。ここにある例題を見ながら、「宣言的に定義する様子が関数型言語みたい」と思った、ので、書いてみました。 swap swapは普通に。 swap (x, y) = (y, x) max・その1 集合や列の代わりにリストを使って。 max_value (n:ns) = max_value' n …

操作の横恋慕

仕事をしていて、こういうコードをしばしば目にしてます。 class A { public: void doSomething() { doSomethingForB(b); } private: void doSomethingForB(B& b) { // Bに対する操作 } B b; }; 「操作の横恋慕」ですね。 これを、こう書いたほうがよいよ、…

概要と詳細

ここ2、3日、少しずつ時間をとってコンスタントにコードを書いてみて感じたこと。 わたしは割とボトムアップでコードを書く癖があります。今回のコードでしたら、まず自機を表示して、次に動かせるようにして、次に弾を撃てるようにして、次にエイリアンを表…

わかりやすいコード・その3

エイリアン登場。課題もどんどん登場。 グローバル変数が増えている マジックナンバーもいっぱい エイリアンの登場パターンがただのランダム エイリアンを倒せない エイリアンが減らないので画面上に溢れる 他、スコアがでないとか、エイリアンが弾を撃って…

わかりやすいコード・その2

エントリのタイトルはIBM developerWorks : ご指定のページは見つかりませんでしたから。ここで紹介されているゲームを目標にちまちまやっているところです。ここまで来ました。カーソルキーで上下左右に動いてスペースキーでファイア! 上下に動くのは反則っ…

わかりやすいコード

近く、グラフィックを使ったプログラムを書くつもりなので、それに先立ってサンプルを書いてみる。後ほどHaskellで再挑戦予定。 実は。カテゴリはOpenGLでなくて、GLUTが正しそうだけど、大目に見てください。わたしが使っている環境はMac OS Xなので、Linux…

想像力、大事!

思いやり駆動でひとつエントリを書きました。同じように大事なものが、少し乾いたことばで、「想像力」なんじゃないかな、と思います。自分以外の人の思いは、けっしてすべてを知ることができないものだけに、相手の思いを知るには想像する必要があります。…