一つ一つの積み重ねの重要性

ソフトウェア開発の面白いところは、頭で考えたことをそのまま動かせることにあります。

演算や論理的な判断による処理の分岐、繰り返し、すでにあるライブラリの呼び出し、そういった小さなものを一つ一つ積み重ねた結果として開発者が意図した計画の下で何かを動かすというのは、対象としている処理が小さいうちはそんなに困ることはありません。しかし、規模が大きくなったり、いろんなものを統合していく状況下で、意図しないいくつもの新しい問題を抱えるようになってくると、解法はひとつではないので、単純な作業で終わるものではありません。

さらに近年は、複数のサーバとネットワークで接続されている状況で、物事を積み重ねていく必要があります。そうなると、単純にプログラミング言語が使えるだけでは十分ではない問題がいくつも出てきます。同期通信だけではなく非同期の通信が必要になったり、通信を暗号化したりといったネットワークに関する要件や、ユーザの認証や認可というアクセスコントロールやユーザの偽装などセキュリティ要件を無視することができなくなってきます。

ふと、「SilverlightによるAJAXアプリケーション開発」、とひとくくりに書いても、そのアプリケーションを実行するプラットフォームでどんな要素技術が関連しているのかということを、ぱぱっと図に描いて説明するのは実際のところ容易ではないかと思ってます。概要レベルは説明できても、いざ実行に移そうとすると、とたんに理解しなければならないことがたくさん現れてくると思います。また、頭ではなんとなくわかっていても、いざ、実際に開発をしてみて始めて気がつく問題というのも少なくないと思います。

久しぶりに開発の作業を続けてみて、改めて実感するのは、やはり、一つ一つの積み重ねの重要性です。何か新しいことをしようとして、サンプルプログラムを見て王道を探そうとしても、そんなうまい話はないということです。確かにサンプルプログラムから得られるヒントはたくさんあるのですが、なぜそのように考えられたのかというカラクリが文書化されているわけではないので、その謎解きをするつもりで追いかけないと自らの問題解決には結びつきづらいのではないかと思います。かくいう私も、気がつけば、一つ一つ問題にぶつかってはそれを理解し、解決しようとし、解決できなければ回避策を探し、という繰り返しを行っています。特に参考となるドキュメントが少ない状況においては、そもそもの想定以上に試行錯誤を繰り返さなければならず、読み間違いや勘違いをすることもあれば、投げ出したくなるようなこともあります。でも、そこでめげずにしつこく探求していくのが開発者のマインドではないかと思っています。

そんなわけで、今後の投稿において、知識を積み重ねていくためのポイントとなることを踏まえて、実体験に基づく記事を増やしていきたいと思っています。