はじめに
ポエムだよ
背景
ある晴れた平日、社内ツールを作成していた日に、エンジニア以外の人から「プログラミングとはなにか?」と聞かれることになった。
プログラミングとはなんだろうか?一般解では、「プログラミング言語を用いてシステムを構築すること」になるだろうか。とはいえ、エンジニア以外の人にとっては、これは要領を得たものではないように感じる。プログラミング言語とは?システムとは?と新たな用語に出会うことだろう。
イメージできるように説明することが、こういった質問の際には大切であると考える。全員がイメージでき、また本質と矛盾がない言葉はなんだろうか?私は、「これから起こることを書く」ことがプログラミングであると考える。
これから起こることとは?
プログラミングとは「これから起こることを書く」ことである。
例えば瀟洒なホテルに泊まって、フロントに言伝をする。「1時間後にワインを持ってきて」と言えば、部屋で一休みしているときに完璧な状態に保たれたワインが運ばれてくるだろう。あなたはうっとりとした表情でワインクーラーからワインを引き抜く。
フロントはコンピューター、言伝をプログラミングと解釈してほしい。世の中は複雑なので、言伝もどんどん複雑になっていく。赤白ワインやロゼ、シャンパン、チリワインやカリフォルニアワインなどの種類を指定することが必要かもしれない。持ってくる時間は?風呂に入っている時に持ってきてほしくなければ、そう伝える必要もあるだろう。考えるべきは「起きること」である。「ポートワインを持ってきて、ただし私が風呂に入っていないときに」。優秀なホテルスタッフは暗黙に了解しているが、コンピューターはいきなり扉を開けることがある。
起きてほしいことはなんだろうか。例えば家を建てる時に、土台から設計するのではなく、体験から家を設計してみよう。リビングの扉を開けた時に広がっている景色を想像して、そこにある暖炉の暖かさを決める。また、部屋のライトをつけた時に、暗い部屋にどのように光が溢れるかを記していく。土台は制約に過ぎない。あなたは文字だけで家を建てていく。コンピューターの中ならあまり予算はかからない。
家を建てた後は、友人を呼ぶことになる。友人は残念ながら、あなたが意図しない動きをするだろう。扉を開けた後そのまま引き返したり、靴を想定の場所で脱がないかもしれない。ここが注意点になるが、「これから起きてほしいこと」は書くことができない。本人がそう書いているつもりでも、「これから起きてほしいこと」と「これから起きること」は異なり、家自体がひっくり返るようなこともしばしば発生する。あなたは「起きてほしいこと」を予言するが、言い間違いによって思わぬ不具合が起きることがある。
どう書くべきか?
webサイトにおいて考えてみる。ユーザーがサイトにアクセスした時のレイアウトや動きを、あなたは書いていく。あなたはまず、表紙ともいうべきtopページを作成する。ユーザーがどこかボタンを押すかもしれない。その、ボタンが押された時の動作も書く必要があるだろう。先程の例と同じく、問題はこれから起こることしか予言できない点にある。あなたが書いたものに不具合があった場合、それがそのままユーザーが経験することになる。
これから起きることを準備することが大切になる。例えば少年少女、例えば老人がサイトにアクセスすることを想定する。ボタンは見やすいほうがいいだろうか。それとも洗練されたデザインのものがいいだろうか。どちらにもメリットとデメリットがあるだろう。例えばスマホ、ラップトップ、20年もののデスクトップPCで見ているものもいるかもしれない。
ボタンの挙動も同様に、連続してボタンを押すもの、ボタンを押した後にPCをシャットダウンするものもいるかもしれない。自動車免許の試験のように気をつけて書いていく必要がある。あなたの言い間違えや想定漏れが思わぬ大事故を引き起こす。
なぜ書くか
人狼というゲームがあり、そこにも予言者が出てくる。狼は日に1人村人を食い殺す。村人は投票で狼を殺害する。予言者は1人を指名して、その者が狼かどうか判明させることができる。うまくバランスの整ったゲームで、予言者はその能力を活かしきれぬまま狼に食われることも多い。
プログラミングによってつくられたプログラムやシステムも同様に、期待されたことさえできないこともある。ただし、これは明らかに悲観している。予言者の力をうまく活用できれば、狼を早期に判明させ、ゲームに勝つことができるだろう。現実も同様に、数多くのプログラムやシステムが困難な問題を解決している。システムトラブルなどのニュースが賑わうこともあるが、それよりも多くの成果がある。
あなたが「起きてほしい」と願うことを書くこともあれば、誰かの願いを具現化することもある。それも、失敗と困難が続く急峻な山坂のような道になるだろう。ただ、挑む価値はある。「これから起こること」を書くことができるという点だけで、人生を賭けるに値する。