Home > Advent Calendar 2013 | 雑記 > レゴブロック型プログラミング

レゴブロック型プログラミング

この記事の所要時間: 37

Shin x blog Advent Calendar 2013 の 17 日目です。

lego

「プログラマーには 2 つのタイプがいる。ブロックを作るか、使うか、だ。」

レゴブロック型プログラミング

プログラミングをやるようになって、思ったのは、部品を組み合わせていく感覚が、子供の頃、夢中になって遊んでいたレゴブロックに似ているなあということです。

ブロック(部品)は多数用意されており、それらを組み合わせることで何かを作っていきます。ただプラモデルなどと違うのは、何度でもバラして、また組み直せるということ、そして、ブロックはプリミティブなものであり、組み合わせ方によっては全く異なるものを作ることもできます。

扱う言語や環境によって、そのブロックの粒度は変わっていきます。C がレゴブロックなら、LL は、ダイヤブロックくらいかもしれません。ただ、それらを組み合わせて何
かを作るということは同じです。

ブロックの粒度が大きくなる

ブロックの粒度は次第に大きくなっていきます。構文や標準関数の大きさだったものが、それらを組み合わせたライブラリを大きなブロックとして使うようになります。

次はライブラリとしてではなく、その機能に特化したソフトウェアと連携して動かすようになります。例えば、データの保存処理をライブラリを使って行っていたものを RDBMS に切り出して、それに特化した処理は全て任せてしまうという具合です。

そして現在では、そのソフトウェアを自らセットアップする必要もなくなり、SaaS として提供されるようになりました。データベースであれば、RDS や Heroku Postgres のようなものです。

こうしてブロックの粒度は次第に大きくなり、またその調達コストも低下していっています。

粒度の大きいブロックは組み合わせるパターンがある程度限定されるので、自由度は下がりますが、扱いやすいとも言えます。反対に粒度の小さなブロックは、組み合わせパターンが多くなるため、自由度は上がりますが、その分扱いが難しくなります。

問題にあったブロックを探し、組み合わせる

そこで、解決すべき現実の問題にどのブロックを使い、どう組み合わせるのかという考えが必要になります。

先ほど書いたように、ブロックを調達することは容易です。とくにクラウドサービスの拡充により、以前では考えられないようなコストと時間でブロックを調達できるようになりました。

ただ調達は容易ですが、どのブロックを調達するのかを決めるにはそもそもブロックを知っておき、どの問題にフィットするのかを把握する必要があります。

調達した後も、それをどう組み合わせるのかを考え、時にはブロックを加工したり、フィットするブロックが無ければ、より細かな粒度のブロックを使って作る必要もあるでしょう。

大小様々な粒度のブロックが増えた今だからこそ、ブロックを選定し、組み合わせるのかという技量が重要になってきているのだと思います。

さいごに

冒頭の話でいうと、私は「ブロックを使う」側の人間だと思います。もちろん必要な場合はブロックを作りますが、それより、すでにあるブロックを組み合わせて、問題を解決するという方向が好みです。

総論的なブロックの選定に関する情報はインターネットや書籍でも見つかるのですが、個々の問題を解決するためのブロックをどう見つけるか、というのは当然ながら当事者が個々でやるしかありません。

近頃は、こうした個々の問題にフィットするブロック探しや組み合わせ方の模索を支援する仕事が面白いなあと感じてたりします。

Pocket

follow us in feedly

Home > Advent Calendar 2013 | 雑記 > レゴブロック型プログラミング

検索
フィード
メタ情報

Return to page top