タイトル悩んだのですが、今回は少し明確にしました。「プログラミングを始めたい人・挫折気味な人に贈る、妄想プログラミング」です。
以前の記事(プログラミングとは何か?)からの続きですが、この記事だけでも内容は十分読めます。まだ読んでない方はぜひ以前の記事を読んで下さい。
この記事は
いまいち「プログラミングってなんぞや」という人への記事です。逆によくやっている人が読むと、
「なんておかしなプログラミングだ。」と思うかもしれません。
なるべくプログラミングの核の部分について触れずに話を進めようと思います。例えば、俳句を作りましょう、という時には、人間の言語理解の仕組みや日本語を発音する仕組み、日本語の歴史についていきなり全部は詰め込まないでしょう。最低限の俳句の仕組みだけを聞いてチャレンジすると思います。
同じ事です。
まず、プログラミング言語を妄想しましょう。CやJavaとかRubyとかありますね。ここでは
Topaz(トパーズ)という名前にでもしておきましょう。
今日妄想プログラミングするのは、
「Tomo List」というプログラムです。
友人の名前を登録して探すという電話帳みたいなプログラムです。では、まずルールを決めましょう。コンピュータでも手元の紙でもいいので、メモ帳を開きます。Topazというプログラムを書くときは必ず宣言をしなければなりません。これは、Topazっていうプログラムだよって。
"Topaz.program" 書きましたか?ちゃんと書いて下さい。
では、まず友達を登録する仕組みを作らなければいけません。項目が多いと面倒なので、名前だけ登録できればいいでしょう。見なさん、名刺入れって持ってますか?名刺を入れるやつです。
プログラミング言語も、「何かをいれよう」と思ったら、そのなんちゃら入れが必要です。では、その「何かをいれる何か」を
Nameと名づけましょう。
何か会員登録する時、入力画面というのが出ると思います。それも作りましょう。便利なことに、
Topazという言語は"view"という呪文を唱えると画面に表示されます。入力するための画面は"input"という呪文も一緒に唱えると、入力できるようになります。
思い出して下さい。これは妄想プログラミングです。では、まとめて名前を入力する画面を作るプログラムは次の通りです。
"Name.input.view"呪文は.(ピリオド)でつなげます。
名前.入力.表示。って感じですね。とりあえず、入力画面にはTakeshi Kunibeとでも打ち込んでおきましょう。これでTopazのNameの中には、
"Takeshi Kunibe"となります。もっと電話帳を登録したいですよね。もう一回書いておきます。
"Name.input.view"今度は、"Yasuhiro Sato"にしておきましょう。同じように、名前を入れたい数だけ、この
"Name.input.view"を書いて下さい。
最後に、電話帳から名前を検索してみましょう。
Topazではinputのように、searchという魔法があります。さて、どうやって書くでしょうか? 再確認、
これは妄想プログラミングです。想像を働かせて、あなたの目の前は今マトリックスのように何かプログラムが動き続けています。"Name.search.view"そうです。これが検索画面です。Googleのトップページでもイメージしておいて下さい。ところで、本棚に本を入れる動作を
"input"、本棚で本を探す動作を
"search"だとすると、本棚から本を取り出す動作はなんでしょうか?Topazは素晴らしい。
"output"です。
では
"Yasuhiro"と検索してみて下さい。そして、画面に表示できるようにしましょう。もうプログラムも完成に近づいて来ました。
"Name.output.view"この呪文を書いて下さい。ちょっと感の良い人は、もしかたら、Nameという電話帳に入れた名前が大量に出るかもしれないと思うでしょう。"探したやつだけ持ってくればいいよ"と伝えなければなりません。そうですね、そういう時Topazでは、
".from.search"とやります。 これによって、検索した後、画面には
"Yasuhiro Sato"が出てくるようになります。
下記がプログラム全体です。
Topaz.program // Topazのプログラムであることを宣言
Name.input.view // 名前を入力する画面を表示
Name.input.view // 2人電話帳に入れたい
Name.input.view // 実は3人電話帳に入れたい
Name.input.view // しまった、新しく4人目が必要になった
Name.input.view // 最近新しく友達ができた
Name.input.view // 好きなだけ追加しましょう。ただし必要なだけ書くこと
Name.search.view // 名前を検索しよう。Nameという箱にはたくさん名前が入ってるはず
Name.output.view.from.search //検索した名前を表示しよう
どうですか?プログラミングは上手くできたでしょうか。他に学んだことがある人は、全くイメージと違うかもしれません。ここで困ったことがあったと思います。
・どうやって入力画面ができるの?
・電話帳に入れたい人が増えたら永遠にinputを書かないといけないの?
・もっと効率良く何かできないだろうか。 このプログラミング言語はおそらく、もうプログラマーの人にはBASICやCOBOLがとても素晴らしく思えるでしょう。(アセンブリはややこしくなるので引き合いに出しません。理由は俳句の解説に書いてあります)。
今、世の中で動いているコンピュータに入力するほとんどのプログラミング言語は、
もっと高度にできています。私がこの記事を書いた理由は、
「プログラミングとは何か?」を理解してもらおうと思ったからです。
つまり、
「命令をお約束にそって書き、コンピュータに処理してもらう」。その命令(プログラム)を書くことがプログラミングです。プログラミング言語が難しかったりするのは、「命令を覚えることができない。」「命令の組み合わせが分からない。」「概念が理解出来ない」などの理由だと思います。
ここ数十年という歴史の中で大変頭の良い方々がこのプログラミング言語をもっと高度なものへとしてきました。高度なので、人によって理解の差異があるわけです。例えば、
「水泳」をするという行為は、「水かきをする」動作も、「バタフライ」「クロール」をする動作も同じ水泳です。技のレベルが違う。
でも、まず水に顔をつけて、足を掻くことによって水泳を理解します。そしてもっと早く、効率的に泳ぐために「クロール」という技を覚えます。
プログラマーは、
このTopazのようなイマイチな言語より、より高度で混乱しそうなことを予め整理した文法によって成り立つプログラミング言語を使い、プログラムを作成します。
ワケが分からない人もいるかもしれませんが、是非、他のプログラミング言語にチャレンジしてみてください。締めは前回と同じ文章にしておきます。
どのプログラミング言語を使うと、求める作品が制作できるのかを考え、そして選んだプログラミング言語について理解できるか、です。
この解説の感想をFacebookなりTwitterなりに反応していただけると、嬉しいです。
@cojilo