tryプログラミング、リモートワーク、田舎暮らし、音楽、etc.2010-10-08犬小屋と高層ビルの違いシステム開発ちょっと興味深いエントリを見つけました。UIと呼ばれる作り方が、システムの品質を下げるという点は同意です。その原因がIDEにあるのかというと、必ずしもそれだけではない気がします。おいらが思う一番の原因は、犬小屋と高層ビルの作り方の違いに気づいていないプログラマが多いせいではないかと思っています。「はじめてのXXX」とか「一週間でわかるXXX」みたいな本やWeb記事には、ごく基本的な文法の説明や簡単なサンプルプログラムの作り方しか載っていません。UIパターンになっていると思います。初心者向けの内容なので、簡単な内容に終始してしまうのは仕方ありません。ここで説明されているのは、いわば犬小屋の作り方です。実際に業務でシステムを構築する場合は犬小屋レベルの案件はほとんどありません。業務で遭遇するのは一軒家やマンション、もしくは高層ビルです。犬小屋の作り方しか知らない人間が果たして高層ビルをまともに構築できるでしょうか?もちろん無理な話なんですが、そのままやっちゃうんですよね〜。実際の建築ではビルは作れませんが、システム開発においては「とりあえず動くレベル」のものは作れちゃったりします。そんなシステムがリリースできたりすると、開発者は変な自信を持ってしまったりします。犬小屋の作り方がベースなので、フタを開けてみると中は目も当てられない惨状が広がっています。いうわけで、犬小屋と高層ビルの違いを認識し、「はじめてのXXX」とか「一週間でわかるXXX」で書かれている内容はあくまで参考程度にしかならないということを理解することが重要だと思います。高層ビルを作るには高層ビルを作るための高度なスキルやテクニックが要求されます。その中の一つとして挙げられるのが「設計力」です。一つ一つのプログラムを作り上げるスキルだけではなく、システム全体のアーキテクチャを設計するスキルが重要になってくると思います。ところが大規模システムを開発する際に参考になる文献は、というと非常に数が限定されます。大体において分厚い本になってしまうので、読みたがらないプログラマも多いです。その結果、犬小屋しか作れないプログラマが蔓延する・・・という好ましくない状況が続いている気がします。そこで「それじゃあダメだ!」と思った方のために、おいらが今までに読んで参考になった本を紹介しておきます。見るプログラマから設計者へのステップアップを説いています。それほど分厚くないので読みやすいです。見る上の本と同様、こちらもプログラマからソフトウェアアーキテクトへのステップアップを推奨しています。分厚くない点も同じです。具体的なアプリケーションを構築しながら、一つの設計例を示してくれます。UIパターンではありません。見る一つのサンプルプロジェクトを最初から最後まで具体的に説明してくれます。UMLなんかでシステムが作れるんかい!?と思っている方にはオススメです。見るこのシリーズのVol.3〜5は、大規模な情報システムを構築する際に参考になる考え方がたくさん載っています。見るビジネスロジックを構築する主要なパターンとして、トランザクションスクリプト、ドメインモデル、テーブルモジュールがあることは押さえておきたいですね。あと、システムのレイヤー化についても載っています。訳が読みにくいのが難点。見るプログラミングだけでなく、システムを配置するハードウェアや運用面など、システム全体のアーキテクチャを構築する際に参考になる情報がたくさん載っています。見るプログラミング技術だけでなく、システムを設計する際にも参考になる情報が非常に多いです。技術者として幅広い知識を身につけることができます。読むときは必ず上下巻セットで!P.S.犬小屋と高層ビルのメタファはおいらが考えたものではなく、どこかで読んだ本に書いてあった話です。COMPLETEだったような気もするんですけど。2ちょっとこの話に関連した小ネタを追記しておきます。アーキテクチャの重要性を分かっていない人は全体最適ではなく、個別最適へ向かおうとする。UIの方がコードが少ないぜ!」みたいな。レイヤーに分けなきゃ自動化テストができないし、他の画面との一貫性もなくなる。2010ヘタにキャリアが長いとこれまでの自分の経験や考えに固執する人が多いので、そういう意見の相違があると非常に疲れる。いう意味では変な色に染まっていない新人君の方が成長が速いかも知れないね~。2010ご参考までに〜。はてなブログPro株式会社ソニックガーデンで働くRubyプログラマ。2017年11月に「プロを目指す人のためのRuby入門」を出版。blog)はてなブログをはじめよう!JunichiItoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。