“面白い”フリーソフトのはなし

この記事は KMC Advent Calendar 2015 の 11日目の記事です。

昨日は kmc-id: wass80 君の

mesos+marathon+docker と slack の shell チャンネルの話 - KMC活動ブログ

でした。

予定では今日はTeXのOTFパッケージ関連の話を書こうと思っていたのですが、想定以上に闇が深くて間に合わなかったので、フリーソフトコレクター(自称)としてのちょっとして随筆をお送りすることになりました。

では、気付いたら長くなっていた前書きから。


 世には無数のソフトウェアが存在します。中には、インターネットにおいて万人に対し無料で公開されているソフトウェアがあります。このようなものを、本稿では「フリーソフト」ということにしましょう。フリーソフトウェア財団などがいうところの「自由なソフトウェア」という意味ではありません。特に、個人や小さな企業が自分の目的に沿ってつくり、それを一般にも公開している……そういった趣味的なものをここでは扱うことにします。

 フリーソフトはその性質上、少し興味を持っただけで、気軽に試してみることができます。自分が本当にそれを必要としているかといったことを考える必要などありません。強いて言うならハードディスクの容量を心配するくらい。その心配にしても、落としてみてつまらなかったら後で消せば良いのです。まるで、図書館の本棚を眺めて、ふと面白そうだなと思った本を手にとって、前書きを読んで、パラパラと捲り、後書きや解説を少し読み、著者略歴を確認して、またそっと本棚に戻すかのように。

 ここでソフトウェアを本に譬えました。そう、ソフトウェアというのは本のようなものなのです。私たちは本を様々な目的の為に読みます。娯楽の為、必要な情報を得る為、難しい本を読んだと自慢する為、et cetera。ソフトウェアでも似たようなものです。娯楽を得る為のゲーム、実利を得る為の実用ソフトウェア、こんな変なものも扱えると自慢する為の(?)難解プログラミング言語

 もちろん、これらは排他的なものではなく、いくつかの目的を兼ねているものがほとんどでしょう。そして、本を読む時の目的としてあらゆる本についていえることであろうことが「自分の持っていなかった思想に触れる」ことです。それはソフトウェアについても言えるでしょう。ソフトウェアが自分には思いもよらなかった思想を示してくれることがあるのです。それは鮮烈な体験です。ソフトの実用性など関係なく、強烈に印象に残るのです。

 ようやく、本稿の目的を述べるところまで来ることができました。本稿では、上述の「図書館」で渉猟するなかで私が見つけた「“面白い”フリーソフト」、即ち私が常識と思っていたことを破ってくれたフリーソフトをいくつか紹介してみたいと思います。

1.Cat System 2

f:id:suzusime:20151211041148p:plain

CatSystem2 Web

 ……硬い文体に疲れました。以降はゆるめの文体でいきます。

 さてさて、Cat System 2はエロゲメーカーうぃんどみるのゲームで使われているゲームエンジンです。

 はい、いきなりエロゲの話がでてきてしまいましたね。安心して下さい、この記事は全年齢対象です。このソフトが与えてくれた知見は別にエロとは関係ないです。

 ちなみにうぃんどみるは「はぴねす」や「祝福のカンパネラ」を世に出した会社で す。最近はE-moteという技術を導入したゲームを作っていますね。「ウィッチズガーデン」の体験版を少しやってみましたが良い感じでしたね。どこかのレビューサイト曰く、「思いやりに溢れた」世界を描くことに定評があるらしいです。

 話が逸れました。閑話休題。嚙みまみた(違
ここで扱っている以上わかるとは思いますが、このゲームエンジンとそれに関わる開発ツールをうぃんどみるは一般に公開しました。会社などが使う際にはライセンス料がかかるとのことですが、個人が試しに使ってみるぶんには無料ということで、私は早速ダウンロードしていろいろと試していました。

 そして、このゲームエンジンで使うスクリプトの文法に驚きました。というのも、なんとこのスクリプトでは「半角英数字を命令用の特殊な文字として扱う」のです。例えば、

	春だった。

	frameoff fade 30 //「fade 30」を指定しなければ瞬間的に非表示
	wait             //コマンド直後はwait必須

	wait 180

	frameon fade 15
	wait //必須

	夏になった。

 

こんな風に書きます(マニュアルより引用)。この中で「春だった。」と「夏になった。」は普通の文字列として表示され、他のwaitなどはコマンドとして解釈されるのです。

 これは衝撃的でした。たとえば、“Hello, world!”とスクリプトに入力しても動かないのです。半角英数字を出力するためには専用の命令を使わないといけません。例えば、TeXでは普通に入力した英数字はそのまま出力され、\記号を用いることで命令を呼び出しますが、それと全く逆になっているのです。

 何故こんな仕様になっているのだろう、そう少し考えてみると、これの合理性に気付きました。そう、この言語はエロゲの本文と演出を記述する為の言語です。その中に英数字はほとんど登場しません。もし登場するにしても、この分野ではたいてい全角英数字が使われます(おそらくフォントによって文字幅が異なると困るので半角英数字を避けるのです)。つまり、半角英数は基本的に文字列として登場しません。ならば、エスケープする必要などないのです。エスケープしなくて済むなら、それだけ入力者の負担が減るのは明かです。まさに、このスクリプトの文法はエロゲの制作に特化しているのです。

 これが教えてくれたのは、目標とするものをきちんと見定めることの重要性です。私なんかがもしこのようなものを作ろうとすれば、何も考えずにTeXのような文法を考えてしまっていたでしょう。これは不必要な一般化です(無意識に、一般化しようとしてしまうのが人の性です。数学や物理学ならばいいのですが……)。世界展開などする気がない、と漢らしく断言できるならば、このCat System 2 スクリプトの文法は素晴らしいの一言に尽きます。ここに私は「プロの道具」の雰囲気を感じ、甚く感動したのです……

2.きらきら筆(Light EDitor)

f:id:suzusime:20151211041151p:plain

きらきら筆 Download

 これはいわゆるお絵かきソフトという分類に属するソフトになります。特徴を言うなら……“非常に使いにくい”。ええ、たぶん、これを初見の人が直観でまともに使うのは不可能でしょう。というのも、これは漫画家の都築和彦さんが「自分で使うために作った」ソフトウェアらしいのです(公式サイトトップには巫女さんの絵がありますね。良いですね)。時は溯り25年くらい前……PC-98パソコン通信Nifty-Serve、鮪だ、似非キース、そんな言葉が飛び交っていたらしい時代の話。その頃は自分のほしい機能を備えたお絵かきソフトがなかったのでしょうか、漫画家である氏は自分でお絵かきソフトを作ってしまったようです。

 びっくりしました。今ではなかなか考えられません。

 ……でも、ですよ。もともとソフトは使いたい人が作るのが当然自分が一番使いたいようにできるわけですよね。自分好みの「道具」なのです。場合によっては他人が使えなくともいいわけです。よくプログラマが自分の為に書くちょっとしたスクリプトみたいに。

 お絵かきソフトを自分で作ると聞いて驚いてしまったのは、単にそれが大規模なソフトだという先入観がある為でしょう。もともとどんなソフトにも差異はないはずなのに。あの途方もないUnixにしたって、確か最初にUnix上で動かされたプログラムはゲームだったはずです。そんなふうに、自分が欲しいと思ったら自分で作ることを試しに考えてみるのも悪くないのではないでしょうか。こういう初心を思い出させてくれるソフトでした。
(……もうちょっと色々と書きたいことがあったのですが、だんだん疲れてきています(現在AM2:05@部室)。ひとつ断っておきたいのは、これは決してこのソフトが初見の人に使いづらいということを攻撃したい訳ではないということです。純粋に“面白い”と思いました)

3.萌ディタ

f:id:suzusime:20151211041153p:plain

萌ディタ:: o v e r D O S E ::

 最後は萌ディタです。もう一つ紹介したいソフトがあった気がしますが、忘れてしまったのでこれで最後にします。

 萌ディタ。名前の通り、「萌え」を求めるために、背景に自由に画像を設定できるようにしたテキストエディタです。ですが、これだけではありません(これだけではあまり面白くありませんね)。なんと、このテキストエディタの内部処理はjavascriptで書かれていて、それを変更すれば自由に挙動を変えられるのです。また、一行入力ウインドウがついていて、それに適当なjavascriptの文を入れると実行できるのです。

 私はjavascriptを勉強していないのでほとんど使えなかったのですが、それでも面白いなと思いました。よくテキストエディタにはマクロ機能がありますが、その弄れる範囲がエディタの機能全て、になっているようなものです(たぶん)。例えば文字を1文字入力するごとに間にスペースを入れる、そんなあほみたいな処理が書けました。「こんな夢を感じるテキストエディタは初めてだ!」なんて言っていましたね。

 あとで考えてみたら、EmacsLispなんかもこんな風になっているのかも知れないなと気付きました。これは萌ディタに限ったことではなかったでしょう。でも、たといEmacsみたいなソフトが凄いと分かっても、「まあそれは凄いわなー」で終わっていたような気がするのです。

 そうです。ギャップ萌えっていうやつです。こういう不真面目そうなソフトがちゃんとしている。いいですよねー。似たような例をいくつか思い出しました。妹認証、つんでれんこ、TOMOYO Linux(最後のは真面目っぽい)。

 こういうのが本当に好きなんですよね。ゆるい見た目で中身はしっかり。そういうのを私は作りたい。絵を練習しようと思ったのもその辺りが関係しています。ゆるい見た目で敷居を低く、抵抗なく受け入れてもらえて、それであとで驚きが待っている。そういう体験を提供したい。

 

 ……うん。そうですね。ちょっと最後は真面目っぽくなりました。このあたりで締めましょう。

 私はKMCに入って以来いろいろとやっているのですが、なんだかんだまだ形には残せていません。今まで色々本も読んだし、色々ソフトを見てきました。そろそろ自分の得てきたものを表現したいと思うところです。

 しばらく待っていて下さい。なにか出しますよ、なにか。今はちょっとしたゲームのために絵とシナリオを書こうとしつつも進捗が生まれていないところなのですが……(でも共同開発者もいるのでこれはきっと完成させます(決意表明))


 明日は kmc-id: prime さんの「C89記念! ANSI C89コンパイラを作る」を予定しています。

 お楽しみに!