ソフトウェア開発

グローバル変数とスタティックおじさん

他人が書いたソースコードを読んでいると、知らないことは大いに勉強になる反面、時々とんでもないものに出くわすことがある。その一例がグローバル変数だったりするわけだが、最近はオブジェクト指向のフレームワーク上に作られるソフトウェアが多いので、…

仕様書で問われる日本語力

学生の頃、いわゆる国語の授業や試験が好きではなかった。日本語の文章を読んで何をどのように感じようと人の勝手ではないか。どうしてそのような感じ方に「正解」なるものが存在するのか理解出来なかったし、そもそも国語の試験が存在する意義も良く分から…

そのソフトウェア開発は儲かりますか?

仕事でソフトウェア開発に携わる人に良く尋ねる質問の一つに、このようなものがある。 そのソフトウェア開発は儲かりますか? 趣味でやっているとか、開発コストを度外視して良い特殊な用途は別にして、ビジネスとしてソフトウェアを開発するのなら、開発結…

ニッチな市場で生き延びるという選択

スマートフォンのアプリ開発に関して知り合いと議論。開発対象として、iPhoneを選ぶべきか、それともAndroidを選ぶべきかというホットな(?)話題だった。彼の主張はこのようなもの。 iPhone用のObjective-Cを使える開発者は数が少ない。Javaの開発者の方が…

心配性の人はソフトウェア開発に向いていないかも知れない

ふとソースコードの断片に目が止まり、これが妙に気になって仕方ないことがある。 public int Foo(int i) { // do something wonderful here return x; } 例えば、上記のようなコードの場合、こんなことを考えてしまう。 int型の引数を取っているけど、これ…

負の連鎖を断ち切れない開発者

ソフトウェアの開発現場では、正しいことばかりではなくて、正しくないことも何故か平気で行われている。行われているどころか、問題を指摘する人がいないと、あたかもそれが正しいかの如く脈々と受け継がれていたりする。その一例。 正しくないAPIの使い方…

軽量データベースならH2がお勧め

世の中でデータベースというと、大きなサイトで膨大な量のデータを管理するものと思われがちだけど、実は「そんな仰々しいものでなくて良いから、手っ取り早く簡単にデータベースを使いたい」というニーズも意外に多い。そんなデータベースとしてお勧めなの…

開発現場の不満を取り除くのがリーダの仕事

ソフトウェア開発現場に種々の不満は尽きないけれど、そんな担当者の不平、不満、要望、要求を一つ一つ取り上げて対処し、決して無視しないのがリーダの大切な仕事ではないかと思う。担当者が快適に、しかも気分良く仕事を進められるからこそ、チームとして…

想定外を想定する思考

ソフトウェアの開発を行う際には、通常、何らかの想定を行う。システムの動作環境、利用者の使い方、満たすべき仕様や性能について想定を行い、その検討の結果は仕様書のような形で表現され、当事者間の合意を得ることになる。何でもかんでも対処可能な万能…

UMLの実践技法を学ぶ本「UML徹底活用第2版」

UMLについて書かれた本は多数有るものの、文法中心で読んでいて眠くなってくるようなものも珍しくない。たぶん、普通のソフトウェアの書籍とは異なり、自分で実際にコードを動かして試すことが出来ないのがその理由の1つではないかと思っていたりする。(違…

開発現場の危機管理を考える

危機管理と言っても特にその方面の専門家では無いので、自分の周囲5mまでの範囲を対象に考えてみる。ただし、ソフトウェア開発の現場で頻発する「仕様変更」のようなものは、今回は対象外。開発現場の周囲の状況について考えてみたい。ずっと同じところで働…

開発現場のガッカリ感

毎日前向きな姿勢で仕事に頑張ろうと思っているつもり(?)だけど、世の中、いろいろ有ってガッカリすることも少なくない。その一例: 仕様書レビューにて「何か本質的な指摘」を期待していたのに、誤字脱字しか指摘されなかった。 社内で勉強会を開いたの…

チケット駆動開発を導入しても変わらないこと

Tracのようなツールを導入してチケット駆動開発を始めた人から必ず聞かれる質問の1つに、下記のようなものがある。 「チケットの数が多くて管理出来ません。やっぱりチケット駆動開発は無理です」 確かに、やること、やらねばならない事を片っ端からピックア…

ファイルが消えるとき

Eclipse 3.6 (Helios)にて更新(Eclipse IDE for Java Developers 1.3.2.20110218-0812)が出ていたので素直に更新して再起動したものの、どうも調子が悪い。"out of memory"などと不可解なエラーが出るのでどのような設定になっていたのか確認しようとしたと…

ソフトウェアプロダクトライン開発入門セミナーに参加した

昨日は産業技術総合研究所関西センターで開催された「モデル駆動開発を組み合わせたソフトウェアプロダクトライン開発入門」に参加してきた。講師はセイコーエプソンの島敏博氏。参加は30名弱で、関西地区だけではなく、名古屋や東京から来ている人もいた。…

質的難しさと量的難しさ

ソフトウェア開発の難しさはいろいろ有るけれど、その観点の一つに質的難しさと量的難しさが有ると思う。質的難しさとは、開発対象や言語、ドメインの差異を指しており、量的難しさとは、開発が進んで数十万行規模のソースコードに成長したプロジェクトの開…

プログラミング言語の基本は変わらない

ソフトウェアの開発用として様々な開発言語を使ってきたけれど、その基本部分は実はあまり変わらないのではないかと思っている。もちろん、言語によっては得手不得手があるし、ライブラリの支援が有って初めて使える機能も有るけれど、その辺の差異は大した…

どの開発者に投資するのが効果的なのか?

先週のJaSST'11 Tokyoの最後のパネルディスカッションにて、正社員と派遣社員のどちらを教育すべきか?という意味の議論があった。有益な情報を社内に持ち帰ってきて横展開してくれれば誰でも良いと言う意見が出て、これはこれで正論なので特に反対意見は無…

XP祭り関西2011に参加してきた

昨年に続き、XP祭り関西2011に参加してきた。寒い日だったけれど会場はやる気ある人の熱気が感じられ、XP関係のイベントはどうしていつもこんなに雰囲気が明るいのかと不思議になる。他のソフトウェア関係のイベントとは雰囲気が少々異なるように思う。 XP…

JaSST'11Tokyoに参加してきた

少々遅くなったけど今週はJaSST'11 Tokyoに参加してきたので、その感想を簡単にまとめておきたい。久しぶりのJaSSTなのでかなり期待していたのだけど、会場での予稿集配布は無し(Webからのダウンロードのみ)、事例発表のセッション数は以前に比べて大きく…

想定されない状態への対処方法を考える

条件分岐を行うswitch処理にcase文を並べていき、最後にdefault文を書くといつも迷う。 この状態になるのは一体どんな時なのだろう? その昔、あるソフトを作っていて、そんなケースに直面したことが有る。各case文に対応したお知らせメッセージを表示すると…

チケット駆動開発で現場の問題を顕在化させる

開発チームとしてやるべき事は、大きなものから小さなものまで全てTracのチケットに放り込んで作業を進めている。目的は下記の通り。 作業量の顕在化チケットの更新状況を見れば、チームとしてどんな作業を進めており、どのくらいの分量が残っているのか一目…

自動車の電子安全に機能安全の進化を見る

日経エレクトロニクス(2011年1月10日号)に、自動車の電子制御系に関する安全規格ISO 26262の記事が載っていた。自動車の開発には関わった経験が無いけれど、ソフトウェアの安全性がどのように捉えられているのか興味があるので目を通してみた。ISO 26262を…

だからアジャイル開発は失敗する

アジャイル開発を現場に取り入れる事例が増えてきているようだ。もちろん、アジャイル開発により成功したという事例も多いのだけど、これも「銀の弾丸」ではないから必ず成功するという保証は何も無い。ソフトウェア開発のボトルネックがウォーターフォール…

開発ツールに望むこと

自分のスキルを棚上げして、開発ツールに対する勝手な要望を出してみたい。例えば、「難解だ」「現場では使えない」と酷評されがちな形式手法(SPIN等)は、ツールでもう少し簡単に利用出来れば、適用範囲が広がるのではないかと思う。コンパイラの最適化だ…

開発環境の逆転現象

ソフトウェア開発を行う企業の規模は様々だけど、大きな会社と小さな会社(特にIT系のベンチャー企業)で異なるのは、開発環境ではないだろうか?よく見聞きする事例として、こんなものが有る。 大企業:一昔前のパソコンと小さなモニタという貧相な開発環境…

トラブルの原因は曖昧性に有り

ソフトウェア開発の現場では様々な問題が発生するけれど、その大きな原因の一つに曖昧性があると思う。例えば、開発プロジェクトにおいて、こんなトラブルに遭遇した経験が有る開発者は少なくないはずだ。 開発プロジェクトの曖昧性開発を完了させれば終わり…

「ふりかえり」の振り返りを行ってみる

早いもので2010年の仕事も終わろうとしている。今年一年に作ったソースコードやらバグの山を横目で睨みつつ、開発プロジェクトの振り返り議事録を読み返してみた。振り返りの場では、KPTに沿った形で意見を集めて集約することが多い。例えば、こんな形だ。 x…

ドメイン特化型軽量フレームワークが必要だ

既存フレームワークやOSで用意されているAPIは、あらゆる処理で汎用的に使える形になっているのでいかなる目的でも使える反面、アプリケーション側から見ると必ずしも最適な形になっていない場合がある。例えば、「ファイルから文字列を読み込んで取得する」…

暗黙知という迷宮

Tracにはソースコード作成と同時に設計の考え方をまとめたり、関連する内容のチケットを作ったりクローズしたりしている。開発メンバー全員がこのような使い方をしてくれれば情報共有という面で有り難いのだけど、中には「リードオンリー」となって自分から…