POPL:COLUMN:なぜペルソナ指向なのか

過去の記録を閲覧用に保存しています。投稿・編集はできません。一部の旧記法・画像や HTML の表示は再現されていません。同名ページは候補から選択してください。

POPL:Top

「ペルソナ指向プログラミング」ってなんじゃ?



犯人はヤス




PC が「マイコン」「パーコン」と呼ばれていた 8ビット前期〜中期の頃。人気のパソコンゲームジャンルに「アドベンチャーゲーム」がありました。

その頃のアドベンチャーゲームは、コマンドをキーボードから入力するとその単語に応じた反応があるといった多様性の感じられる作品で、その場面でどのような行動を取るかというより、どういった単語で行動を示すかといった所に頭をひねります。

徐々にエスカレートしていったそれは、遂に「アタッチ族」という悲劇(笑)を生み出します。

とあるゲームで手持ちの十字架を棺桶のくぼみに填めるのだろうと思われるシーンがあったのですが、どうしてもそこから進めなかった人たちの事を指します。'put cross' 'set cross' などなにをやっても駄目。結局答えは、他の場所で全く使わない単語である 'attach cross' だったというオチ。

それはそれで楽しかったのですが、言葉探しは微妙にストレスの貯まる遊びでもありました。



そんなアドベンチャーゲームがたった 1本のソフトによって急変します。

それが「ポートピア連続殺人事件」の「ファミコン版」。

ファミコンには基本キーがないためアドベンチャーゲームは不可能だと思われていたところを「コマンド選択方式」という解をひっさげてやってきたのです。その当時アドベンチャーゲーム慣れしていた人々にとって、それがどれくらい衝撃的だったか伝えることができるでしょうか。

コマンド入力ということは、言葉探しが無くなるというだけではありません。その時行える行動が全て画面に表示されているのです。言葉探しが最大の謎解きであった当時、それは答えを最初から明かされたクイズに見えたのです。

ですが、そんなものは杞憂だった事がすぐにわかります。

確かに言葉探しをする必要は無く、選択肢も多くないので、attach 一文字で半年ひっかかるとかいったことは無くなりました。誰がやっても総当たりで数時間もあれば終わってしまいます。

それでもアドベンチャーゲームは面白い物でした。

ただし、それは言葉探しという謎解きが面白いのではなく、純粋にストーリーや物語内の謎を楽しむといった形に変化していったのです。

ついには「弟切草」というサウンドノベルでは選択肢を探す手間すら無くなり、アドベンチャーゲームは「物語を楽しむコンテンツ」へと鋭角化していくのです。



物語を楽しむアドベンチャーゲームと言葉探しを楽しむアドベンチャーゲーム、コンテンツの本質としては前者の方にあるのでは無いかと考えます。

その本質のために余計な引っかかりを無くしていったというのが、アドベンチャーゲーム進化の過程といっても良いのではないでしょうか。



プログラミングに必要な道具




コンピュータープログラミングを行うにあたって必要な道具はなんでしょうか。

ソースコードを書くエディタ、それを実行するインタプリタ、もしくはコンパイラ。そしてプログラム言語の知識。

開発環境が IDE に進化したとは言え基本はソースコードをテキストで書いて、それを実行させる事にあります。その部分は数十年変わってないと言えるかもしれません。



ここでちょっと先ほどのアドベンチャーゲームを思い返してみてください。

プログラミングにおいてプログラム言語を覚え、ソースコードを書くというのは本当に本質なのでしょうか。

目的があって、その目的を遂行するプログラムを作成、実行することが多くの場合においての本質ではありませんか。プログラム言語の習得そのものが目的というのはあんまり無いはずなのです。

つまり、我々は目的のためにプログラミングという余計な作業を行っており、そのプログラミングが主体であるが故にそこに注視しすぎているのではないでしょうか。



プログラムが小規模で牧歌的世界であったときはそれでも良かったのです。

昨今のプログラム規模増大、需要の拡大、消費の加速といった激しい世界においては、目的のための手段を選ばないとならなくなってきました。そのためにライブラリ、オブジェクト指向、クラスライブラリといった道具を駆使して手段の部分における手間を縮小化させようとしているのです。

そんなプログラミングの世界も UML といったモデリング技法の発達と、モデリングツールによって、プログラミングそのものをモデリングへ置き換えるといった世界へシフトしつつあります。

現在のところはモデリングとコーディングの間にまだまだ格差があり、モデリングは補助的な位置づけでしかありませんが、そのうちモデリングだけでおおよその目的が達成できるようになり「これでも良いんじゃね?」といった世界になるかもしれません。

コンポーネントとその間をイベントでつなぐ様なプログラミングスタイルはその間にある形とも言えるでしょう。



その様にプログラミングというものが変貌したとき何が起こるのでしょうか。

おそらくはそこに行き着いたとき、プログラミングという手段が評価されるのではなく、より目的が明確化し目的と結果が輝いてくるのではないかと思うのです。



そしてこれからのプログラミング




これまでプログラムの世界で生じてきた変化は、要求の激しさに答えるために絞り出されたものでした。必然といったも良いでしょう。

逆に予見から手段を提供し、新しい目的を創造できないものでしょうか。

そのために、これからのプログラミングを考えてみましょう。



あんまり大風呂敷を広げても畳めないので、取り敢えずアドベンチャーゲームに習ってみたいと思います。つまり「キーボードを使わずにパッドで操作できるプログラミングが来るね」と仮定してみたいわけです。

もちょっと砕くと「コマンド選択式プログラミング」。

これだけでもなんかそれっぽくはないですかね。



まあ、ツクールシリーズが近いっちゃ近いのですが。



ギャルゲーをプログラミングの世界に




この「コマンド選択式プログラミング」というキーワードは実のところ「ポートピア連続殺人事件」から導き出された物ではなかったりします。以前「萌え言語」の話を聞いたときに、ギャルゲーとプログラミングが区別付かないような世界は来ない物かと考えたときに浮かんだものだったりします。

ギャルゲープレイしている時ってキーボードかちゃかちゃ打っていたりはしないよなあ、と考え、頭に浮かんだのが 3択の選択画面だったのです。



といっても自分から能動的にアクションを起こしていたのではいまいちギャルゲーっぽくありません。ストーリーが進んでいき、たまにポンとコマンドが出るのではプログラミングという粒度には適合しません。

しかしギャルゲーにも意欲的な名作が存在しています。「NOёL」と「トゥルーラブストーリー」です。この二作は女の子との会話を重視して作られている傑作です。まあ、ノエルの方はちと面倒なのでおいておくとして、TLS のほう。この下校会話における会話っぽさが実にギャルゲー的であり、コマンドインターフェースと多様性の落としどころとして絶妙のモデリングがなされているのです。逆にノエルはモデリングされすぎていて、いまひとつ会話をしている気になれないというのはあるのですが。



キャラクターが存在していて、コマンド選択式で対話をする、でもそれが実はプログラミングであるという世界。

キャラクターに対して命令を出すという、エージェント性は昔から研究されており、アプリケーションのインターフェースとしては有力だと考えていました。

それらを総合することで「ペルソナ指向プログラミング」という単語にたどり着きました。



キャラクターとの対話に、ペルソナ(人格)を加えてそれっぽいやりとりをさせる。

そこには、エージェントというものも含まれていますのでプログラミングだけでなくアプリケーションインターフェースをも担える可能性があります。

実際の所「ペルソナ指向プログラミング言語」といってもプログラミング言語にペルソナというラッパーインターフェースをつけただけなのですが。



おわりに




取り敢えずプログラム言語として作りましたけれども、インターフェースとか対話ゲームとか別方面へ発展しそうな気もしています。



最初は使い物にならないでしょうしたいしたこともできませんけど、これをみんなで育てていく「育てゲー」としてみるのも良いのではないでしょうか。



RIGHT: written by rerofumi.