おるずラボ -22ページ目

おるずラボ

発想、プログラミング、デザイン・・あなたも『Creative』な力を手に入れませんか?

「漫画」と「プログラミング」。

漫画や小説、映画など
ストーリー性のあるコンテンツには
ある程度決まった「パターン」があります。

こういう順番で話を展開すれば
読み手が惹き込まれやすいという大枠。

実はプログラミングの世界にも、
こうしたパターンは溢れているのです。

題して・・

『読みやすいコードには、ストーリーがある!』


【目次】

読みやすいコードにはストーリー性がある


ストーリー = 物語というイメージがあると思うので
「それがプログラミングと何の関係が??」と感じるかもしれませんが
ストーリーというものを「出来事を時間軸に沿って並べたもの」と考えると
その関連性が見えてきます。

(厳密に言えば「プロット」「ナラティブ」などといった区別もあるのですが)

例えば、漫画や映画の王道パターンは
「主人公が逆境を乗り越えていく」といったやつです。

今の主人公では太刀打ち出来ない敵や状況。
それを乗り越えるために主人公はこうした。
そしてついに逆境を乗り越えた・・!

・・まぁ、言葉で表すとチープですが(笑)

ワンピースとか、HUNTER×HUNTERとか、
主人公が成長していくタイプの漫画は
よくよく見ればこういったパターンが繰り返されているはずです。

漫画のこうしたパターンは
「感情の起伏」を念頭に置いたものとなっています。

一度は挫折した事を乗り越えた瞬間って、
見ていてスカッとしますよね!

悪の親玉:
「やれやれ、また来たのか。何回やってもムダさ」
 ⬇
「・・な、なんだとっ!?」

みたいな?(笑)

こういうパターンって、見ていても分かりやすい。

ある程度漫画や映画に触れている(大多数の)人なら
もう初めから「挫折を乗り越える」前提でストーリーを
読み進めていく事もあると思います。

・・もちろん全てがパターン化するのはつまらないし、
パターン化されすぎた時にはあえてパターンをぶっ壊してみるというのも
必要となってくるのですが。

この、「パターン化されている分かりやすさ」は
プログラミングの世界でも大いに活用されています。

あなたのコード、誰かに読まれる。


プログラミングでは「コード」を記述していきますが、
これって言ってみれば単なる「文章」に過ぎません。(ほぼ英語ですが)

つまり、日本語の文章でストーリーを書き表せるのと同様
コードでストーリを書き表せても不思議ではないでしょう?

漫画や映画のストーリーは、
「こうなって、こうなって、こうなった」という出来事の順序。

じゃあ、プログラミングの場合は?

TwitterBotを例に挙げてみましょう。

僕が今作っているTwitterBotは
「予め登録しておいた140文字のフレーズを、1時間ごとにランダムでつぶやく」
という仕組みになっています。

これを時系列に書き表してみると・・

・まず、1時間ごとにプログラムが起動する
・ランダムで番号を選ぶ
・選んだ番号に対応するフレーズを取得する
・取得したフレーズをTwitterへつぶやく!

といった流れになります。

これって、1つの『ストーリー』になっていますよね。
TwitterBotが毎回何やってるのか?、と。

コードとしても、
この順番に書いていてくれると分かりやすい。

何かバグで動かなくなった時も、
「このタイミングでエラーになっているから
 ストーリーの中でこの辺りに問題あるんじゃない?」
と推測する事もできます。

逆に、ここで明確なストーリーが無いと、
「このプログラムは一体何がしたいんだ?」となってしまうのです。

ある処理をやったと思ったら、次にまったく関係ない処理をやってみたり。
動くっちゃ、動くんですが。何も知らない読み手は混乱してしまします。



・・さらに抽象的になると
各プログラムの配置や関連性までをパターン化した
「デザインパターン」なんてものも存在します。

こういう機能を実現したい時は
こういうプログラム構成にしてやれば
うまい事動く仕組みになりますよー、という感じ。

コードの読み手が「デザインパターン」を知っていれば、
パッとみるだけで何がしたいか分かってしまうとメリットも。



漫画もプログラミングもそうですが、
こうした「パターン」というものは最初から存在するわけでなく
たくさんの作品やプログラムを元に抜き出された、1つの「定石」。

何も考えずにただパクると大火傷しますが(笑)
知っておくだけ知っておいて、その通りやるかあえて外してみるかはあなた次第。

これは、漫画やプログラミングに限らず
どんな分野でも言える事なのかもしれませんね。



【告知】
メルマガ始めました。

プログラミングを「武器」にするためのさらに具体的な方法や、
VB.NET、Java、PHPなどの体験型プログラミング講座、
自作Webサービスの開発進捗などなどをテーマに発信しています。

=> メルマガ『武器としてのプログラミング』に登録