見出し画像

002 「プログラミング」について

「ソフトウェアはプログラムによって動いている」ということは、ほとんどの人が聞いたことがあることだろう。だが、その「プログラム」というのが何であるのかをよく分かっていない人も多いと思う。
その「プログラム」というものを書くこと(=プログラミング)を生業としているぼくが「プログラミング」について書いてみようと思う。

たった今、「『プログラム』というものを書くことを生業としている」と書いた。また、ぼくは職業を聞かれたときは「プログラマーです」と答えることが多い。だが実は本当のことを言うと、最近はぼくは仕事でプログラムを書くことが本当に減った。ぼくはソフトウェア会社に勤めているということを001で書いたが、そこでの肩書も「プログラマー」ではない。場合によってはプログラムを書くことがあるけれども、それでも肩書は「プログラマー」ではないのだ。
それでもぼくは、ぼくのアイデンティティーとして、自らを「プログラマー」だと思っているし、プログラムを書くことをライフワークだと思っている。

さて、さんざん「プログラム」だとか、「プログラミング」、「プログラマー」などと書いてみたが、そもそも「プログラム」が何なのかがよく分かっていない人にとってはちんぷんかんぷんなんだろうな、と思う。ごめん。そういう人のために「プログラム」というものをひとことで書くとしたら(そもそもひとことで書くことができるのであればわざわざこうやって記事にする必要もないのだけれど)、「コンピューターがする振る舞いを書いた台本」とでも言おうか。「ユーザーがここをクリックしたらこういう動きをして。。。」というのをいちいち書いていくもの。「ユーザーに年齢を入力させて、20歳未満だったらこの先はこういう表示に変えていく」だとか、「ユーザーが保存ボタンをクリックしたときにディスクの残容量を確認して、保存できないようだったらその旨を表示してエラーにする」だとか。まあだいたいそういうことだ。
「台本」と書いてしまったのであらかじめ動きが決められたもののように思われるかも知れないが、そこでユーザーが入力しうるあらゆるパターンを想定して、無数の動きをさせることもできる。
想像してみて欲しい。例えばワードプロセッサーもプログラマーにプログラムされたソフトウェアに過ぎないものだが、それを使う小説家がいたとして、その小説家が何を書くかまではプログラマーには想定できない。ただ、ローマ字で”ba”と打たれたら”ば”と表示し、”ka”と打たれたら”か”と表示する。
ただ、ひらがなだけで文章を書くことはそんなにないはずなので、「”ば”のあとに”か”が来たら”馬鹿”に変換するかどうかを選択させる」ということをさせないといけないはずだが、あらゆる文字の組み合わせに対していちいち変換の判定をさせるための判定をプログラムの中で定義する、ということはきつすぎる。「”ba”のあとに”ka”が来たら”馬鹿”と変換する。そうではなくて、そのあとに”bon”が来たら”バカボン”とカタカナで」などといちいち書いていられない。

プログラムというものは一般的にはそういうことをいちいちやっているのではなくて、この場合であれば「辞書」をあらかじめ用意しておいて、プログラム側はローマ字からひらがなへの変換に一旦は集中する。そして複数のひらがなのかたまりが、そのあらかじめ用意しておいた辞書の中の単語に合致した場合は変換候補にあげてみる、ということをしているのだ。
つまりここには「プログラム」の他に「データ」というものが存在している。この例では「辞書」が「データ」に相当する。
「プログラム」が変換などの操作をおこない、「データ」と照らし合わせて以降の処理を決める。
ぼくは「(自分の手を動かすことなく)プログラムで絵を描く」という作品を創ることをぼくのアート活動にしているが、この場合のプログラムはその絵を描くためのルールで、その絵を描くために与える値がデータだ。一度プログラムを書いてしまえば、そのデータを変えるだけで無数の絵を描くことができる、というわけだ。

この記事が気に入ったらサポートをしてみませんか?