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

追悼Steve Jobs

Steve Jobs氏が亡くなった。新しい世界を切り開いていく力を持つ偉人が、こんなにも早く亡くなるなんて本当に惜しいことだと思う。Appleのイベントの度に徹夜でストリーミング放送を見て、Jobsの強烈なメッセージに感動を覚え、そのままオンラインストアで新…

頑張らないプロジェクトの勧め

日本人はとにかく精神論が好きだから、開発プロジェクトが始まると「皆、全力で頑張ろう」という掛け声がかかるのだけど、個人的にはそのような意味の無いスローガンが出てきた時点でもう終わっていると思う。頑張って見事に成功したプロジェクトなんて見た…

孤独なソフトウェアエンジニアの味方です

好きでやっているソフトウェア開発の仕事だけど、周囲を見渡すと実はこんな仕事は好きではないと言い切る人が多くて驚いたことがある。与えられた仕事だけをやっておけば万事OK、チーム全体のレベル向上やプロセス改善、新しい創意工夫なんて自分には関係な…

「多い」「少ない」という不毛な議論

開発現場で良く聞くプロジェクト評価の表現として、こんなものがある。 バグが多い 忙しくて残業が多い レビューが少ない 経験に基づく直感というものは凄く大事(しかも意外に良く当たる)だし、当事者間で意識共有を図るには何も問題ない表現だと思うけど…

無知なリーダーがもたらす災厄

隣のチームの仕事ぶりを知ると、自チームで当たり前に出来ていることが全然出来ていなかったり、或いはその逆のケースも有ったりして興味深い。ペアプログラミングなんて言う言葉があるけれど、チームリーダは隣のリーダと一緒に働いて互いの働き方から学ぶ…

Robocopyの戻り値にはまる

JenkinsでRedmineのバックアップを取り、それを他のWindowsマシンへコピーする処理を作成したところ、少々はまってしまったので覚え書として残しておく。動作環境は下記の通り。 Windows 7 Professional/SP1/x86 まず、ファイルコピー(ミラーリング)につい…

BitnamiのRedmineを導入した

Redmineを直ぐに使いたいという要望が有ったので、Bitnamiのパッケージ(スタック)を使って導入してみた。このインストーラの良いところは、ApacheやMySQL、Rubyなどを全て含んでおり、Windowsインストーラを走らせるだけで直ぐに利用出来る点だ。面倒な設…

小さな発見の積み重ねが大切

日々の仕事や検索で得られた情報は、はてなブックマークに入れたり、ローカルのwikiに書きこんでおいて情報共有を図るようにしている。自分の役に立つのはもちろんのこと、似たような情報を探し求める人(同じチームで開発の仕事をしているのならメンバはそ…

時間に頼る働き方は半人前

最近、裁量労働制というポジションで働いている。いわゆる「給与は決まっていて、幾ら長い時間働いても残業代は(ほとんど)出ない」という位置付けだ。こんな話をすると、相手の反応は2つに分かれる。 裁量労働制で働くほどの専門的能力があるのか。それは…

仕様変更を言い出すのは誰か?

ソフトウェア開発時の仕様変更は頭が痛い問題だ。限られた時間とリソースの中で開発を進めているのに、仕様変更に伴う追加作業は「既存工程の中で吸収する」なんて言う、いかにも日本人的な対処を余儀なくされることが多い。工程が延びても、コードを書き上…

仕様変更の影響範囲はどこまで及ぶのか?

ソフトウェアの障害管理表を見ていたら、こんな問題を見つけた。概略を簡単に示すとこのようになる。 問題:ある特定の条件下である操作を行うと、アプリケーションがエラーを起こす。 原因:仕様変更の連絡が不充分で、担当者への連絡が出来ていなかった。 …

プロフェッショナルとして最も必要なスキルは何か?

技術者として必要なスキルは色々あるけれど、その中で最も大切なものは何だろうかと知人と議論したことがある。その中には、「自分の手で新しいモノを生み出せる力」や「曖昧な要求を確実に取りまとめる力」「プロジェクトを成功に導く力」「開発チームを引…

解決策は必ず記録しておくこと

ソフトウェアのバグやコンパイルエラーなど、開発作業の進行をブロックする些細な問題はたくさん有って、その度にリファレンスやウェブを検索して解決策を求めるのだけど、そんな類の問題は、実は何度も繰り返し発生することが多い。個人で開発をしていると…

前提条件が違うから話が噛み合わない

情報を発信する側が置かれている状況は千差万別だから「ある情報は必ず正しい」と評価出来るでもないし、「この情報は正しくない」と断定する性質のものでもない。個々の状況に応じて適切な案、対策、考え方、やり方が有るのが普通であり、その背景事情を理…

特許という武器

メーカーで開発の仕事をしている技術者は特許の出願・取得を強く勧めらることが多いのではないかと思う。ソフトウェアも例外ではなくて、新しく考え出したアルゴリズムや実現される新システムについて明細書を書き上げ、弁理士先生を相手に「考案した内容に…

AppEngineで面白アプリを作る本「作ればわかる!Google App Engine for Javaプログラミング」

AppEngineは面白い。単なるWebアプリケーションのインフラだけではなく、メールやインスタントメッセージの送受信、簡単な画像処理やcronによる定期実行など、様々なツールが用意されているので、今まで「環境準備が面倒だな」と思っていた類の開発を気軽に…

モデル活用のメリットは何か?

日経エレクトロニクス2011年8月8日号に、「違ったものになりがちなモデルとソース・コード」という記事が載っていた。モデル駆動開発を目指してUMLを導入したものの、現場ではなかなか活用できていないというのはよく聞く話だ。 ある民生機器メーカーのソフ…

技術を知っているという思い込みが怖い

ソフトウェアの開発現場には様々な人がいて、コードをガンガン書き続ける開発者がいる一方で、協力会社向けの仕様書を書き続ける人や、ひたすら打ち合わせを続けて「仕様調整」「工程管理」「障害対策」に励む人もいる。毎年新入社員が入ってくると聞かれるF…

それは大いなる勘違い

自分に与えられた仕事上の役割や役職が、あたかも自分の能力であるかの如く勘違いする人が時々いるので困ってしまう。 システム開発の上流工程を担当するようになった。 派遣社員や協力会社に指示を出すようになった。 開発担当からチームをまとめるリーダ役…

お掃除ロボット「ルンバ」を買った

ルンバを買った。ホントは掃除機を買い換えるつもりだったのだけど、電気屋さんに行ってみたらルンバの実物が展示されていて興味を惹かれたし、以前から気になる製品だったのでエイヤッと買ってしまった。以下、実際に使ってみた所感をまとめてみた。 掃除の…

ソースコードを読みにくい理由

慣れない環境や言語で書かれたソースコードを読み解くのはなかなか大変だ。個々の処理は分かるのに、それによって実現される一連の機能を理解するには、また別の能力を必要とするのかも知れない。そんなコードの読みにくさは、こんな所に起因するのではない…

Alloyで形式手法を学ぶ本「抽象によるソフトウェア設計」

UMLの図面を描いていてもどかしく感じるのは、モデルで表現された概念が本当に矛盾・モレ無く実行可能なのか確信を持てない点だと思う。シーケンス図やステートマシン図なら動的な振る舞いを示すものなので理解しやすいし、動作をシミュレーションできるツー…

楽天ブックスのシステムトラブル

日経ビジネスの2011年7月25日号に楽天ブックスでのシステムトラブル事例が載っていた。「単行本やDVD、CDなど200万点を扱う。現在1日約1億円を売り上げ、楽天にとって最大の店舗」(記事より)ということなので影響が大きく、アフターサービスランキングの「…

モデリングの考え方を学ぶ本「UMLモデリングの本質」

UMLの書き方を説明する本はたくさん有るけれど、そのモデリングの実践について書かれた本はそれほど多くない。開発現場では「書籍を参照すれば直ぐに分かる細かな記法」よりも「対象をそもそもどのようにモデリングするか?」という概念的な問題の方がずっと…

MacOSX10.7(Lion)でTracを稼働させる

MacOS Xを10.6 (Snow Leopard) から10.7 (Lion) へ更新した。既存のTracも併せて移行したので、その手順を覚え書としてまとめておく。動作環境は下記の通り。 MacOS X 10.7 (Lion) Trac 0.12.2 (MacPorts)(Snow Leopardではmod_fastcgi.so経由で利用) Pyth…

ボーダーレスな開発の時代

昔のソフトウェア開発なら、いわゆる業務系、ウェブ系、組み込み系といったカテゴリがあって、開発者はいずれかのカテゴリに属しているのが普通だったし、各々の技術者では前提となる知識が異なっていたので話が通じないことも多かった。同じ開発言語を使っ…

既知の問題を潰す方が簡単だ

ソフトウェアの開発現場では毎日様々な問題が起こるけれど、その問題は、基本的に下記のいずれかのカテゴリに分類されると思う。 未だかつて経験したことの無い未知の問題 既にどこかで経験したことの有る既知の問題 新しい種類の問題に対処するのは大変だ。…

Mac miniでCUDA 4.0を使う

CUDA 4.0を試してみた。動作環境は下記の通り。 Mac mini (Core2 Duo 2.4GHz, Memory 2GB) MacOS X 10.6.8 CUDA SDK ver.4.0 NVIDIA GeForce 320M SDKインストール 下記のサイトからドライバやツールキット類をダウンロードしてインストール。 cudadriver-4.…

そのチケットは保留

Tracのチケットを使ってタスクを管理していると、中には「今すぐアクションは起こせないけれど、かと言ってクローズも出来ない」という宙ぶらりんなものが出てくる。そのようなチケットの一例。 顧客からの要望事項必須の機能なら対応するのだけど、単に一件…

SQLiteのユーザバージョンを利用する

昨日に続き、SQLiteの話題。SQLiteのリファレンス本をパラパラとめくっていたら、schema_version, user_versionなるPRAGMAコマンドを見つけた。これは一体何だろう?schema_versionについてはこんな説明が載っていた。 データベースに変更が加えられるたびに…