2012/04/26
KAICHO: s_naray[at]yahoo[dot]co[dot]jp
※SPAM防止のため捻ってある

KAGEXを使わないいくつかの理由

■はじめに

本文書は、我輩がKAGEXをなぜ使用しないのか、について述べる。

誤解なきように書いとくと、KAGEXは非常によくできている。表現能力も高いし、 KAG単体ではかなり複雑なコードが必要になるような機能が、既に実装され、テスト されている。これを使うことで、最低限の労力で、かなり高度な表現を実現できる。 のだが、それでも我輩はKAGEXを使用するのに躊躇してしまう。それは何故か、 というのを、以下に書き記す。

■理由1:バイナリ配布されていない

最も大きいのはコレ。「吉里吉里のソースリポジトリからSubVersion使って持って きなさい」なんて、どんだけハードル高いんだ。使い始める前に、「SubVersionとは 何か」を理解することから始める必要があると、そりゃフツーの人は二の足を 踏むだろう。いくら相手がスクリプタだからって、こんなのを毎回やらせてはイカン。 せめて、ピリオド単位(三ヶ月くらい?)でバイナリ化したものを まとめてバイナリ配布するようにすれば、利用者の数は飛躍的に増えると思う。

また、そういうピリオド単位のリリースが無いと、問題が発生した時に バージョン間の差異が微妙になり、原因の特定が難しくなる場合がある。 元コードが A→B のようにバージョンアップされた時、Aだけで「運良く」発生する 問題(Bにも問題は残っているがなかなか発生しない)が出た場合に、 「最新版試せ」が必ずしも奏功しないため、根本原因の追究が極めて困難になる。

※余談だが、『とりあえず最新版で試せ』と言うヤツはソフトウェアを知らん アホの子だと思うがどうか(しかも自分で作ってないヤツに限ってこう言う)。 上の例でも判るように、原因は残っているにも関わらず タイミングなどが影響して、最新版では問題が発生しない、なんてことは起こりえる。 我輩経験上はよくある。 問題というのは、それが発生する原因を特定して初めて解決できるのであって、 最新版に変えたから起こらなくなったーよかったー、などとノタマウのは ただの素人アリスチャンだけだ。古かろうと新しかろうと、問題が発生するなら、 その原因を真摯に追求するのがフツーのソフトウェアエンジニアである。 手間はかかるけどね!

更に余談。同じ理由で、 銀行、電力、鉄道、ガス、水道とかそういう社会インフラ系のシステム管理してる 人に『とりあえず最新版で試してみてよ』と言うと、まず間違いなく刺されるので 注意。そのくらい『最新版で試せ』は一般的にダメな対応なのだということを知れ。 最新版には旧版になかった新しい問題が入り込んでることもある。 少々古かろうが、『今まで動いてきた』というのは、何物にも代えがたい財産なのだ。 …ま、吉里吉里は社会インフラでは動いてないけど。でも、こういう考え方は ちゃんと理解しとくべき。

■理由2:十分なドキュメントがない

これも利用されない原因の比重としてはかなり大きい。ユーザは、中身がわからない ものは使わない。いいモノだと判っていても、すぐに導入可能な状態でなければ あえて使おうとはしない(これは上のバイナリ配布とも被る)。 同様に、知りたいことがあった時にすぐに参照できる資料が無ければ、使うのを 諦めてしまう。吉里吉里では、 よくできたドキュメントがオフィシャルから頒布されている。内容の是非が 問われる場面が無いとは言わないが、これだけ整理されたものが頒布されている ソフトウェアは珍しい。だからこそ吉里吉里/KAGは普及できたのだと思う。 KAGEXにも、せめてこのくらいのドキュメントがあれば、さくさく普及が進むと 思うんだけど。

一部有志によって、ドキュメントが用意されつつあるのは知っておこう。 こういう努力をしてる人は尊敬に値する。もっと世間的にも評価されるべき。

しかし、逆に言うと、KAGEXに対する詳解はこのくらいしか存在を知らない。 他に詳しく解説してるところってあったっけ?
俺の日記 - 吉里吉里 - KAGEXは非常によく書いてあると思う。こういう情報が もっと公になって、誰もが迅速に参照できるようになればいいのに。

ところで、ソースコード中にコメントでマニュアルっぽく書くのとか、ソースコードと 同じディレクトリにこっそりマニュアルっぽいものを置くのは反則だと思うがどうか。 それがマニュアルだと気付かなければ、永遠に見てもらえないからだ。せめて 「マニュアルはここ!」というようなポインタを、マニュアルディレクトリ掘って 置いておくべき。

■理由3:最初に動かすまでの道のりが長い

覚えなければいけないこと、KAGからの変更点が多いこともハードルを上げる一因だ。 最初に設定が必要なenvinit.tjsとか、tjs知らないと(というか辞書配列が何か 判らないと)書くことすらできないという初心者バスターっぷり。 まずは%[] だけでいいよ、ってどっかに書いてあるか、最初からソレを提供すりゃ いいのに。これだけハードル高いと「色々できるんだ、そっかー、じゃぁひとつ KAGEX使ってみるかー」みたいなノリの人には難しいだろうなぁ。 そういう一見さんお断りなんだ!というなら止めないが、だったらいっそ システムとして公開しない方がよかったかもしれない。 特にオフィシャルサイトから公開するということは、それが使われることを 前提にしている(と捉えられる)ため、ハードルを下げる努力をしないといけないと 思うんだ。我輩みたく自分トコだけでこっそり公開してるのはまだしもさ。

うん…そうだねぇ、envinit.tjs ってハードル高いよね、やっぱり、うん。

■理由4:KAGEXじゃないとできない機能がない

既に実装されているかどうかはさておき、 吉里吉里/KAGをフツーに拡張して実現不可能な機能がKAGEXにあるか?と問われると、 やっぱり無いんですよな。そりゃ吉里吉里使ってるんだからアタリマエだろ、と 言われたらそれまでなんだけど。これは我輩の美学に大きく関わるので個人差が あるのは承知しているけれど、同じ機能を実現可能なものを、あえて新しく別物と して作るということは、つまり『車輪の再発明』というヤツじゃないのか、と 思うのであるよ。同じ機能が実現できるんだったら、吉里吉里/KAG + 各種プラグイン、 で実現した方が、今まで使ってきた人々が、それぞれの機能を導入するのが 楽チンじゃないか、思うわけで。プラグインの形式なら、ほしいものとそうで ないものを取捨選択できるし。

「吉里吉里/KAGは古いから」というのはちょっと乱暴な言葉だ。 時間がたつと、後発のものに追加された機能がなく、 デフォルトでできないことが増えていくだけ。 古くても、じゃぁアドオン作ればなんとかできないの?と 問われた時に、まぁなんとかできるなら、それはつまりまだイケることを表している。 「どうやっても無理」ならそれはデザインが古いと認定してもいいと思うけど。

とはいえ、「KAGデフォルトで出来ることが少ない」というのは事実。だから プラグインとかがあるわけで。KAGEXも、機能別プラグインで全部実装できちゃわない? と問われた時に、ああ…うん…まぁ…がんばればね…、ということになると、あえて KAGEXを使おうという意欲が減退しちゃうんですよな。もちろん、既に用意されて いるというのは確かにメリットだけど、それを使うために上で述べたような別の ハードルがあったりすると、やっぱり躊躇しちゃうのですよ。

KAGEXをベターKAGと捉えるからよくないんだろうけどね。いっそ表記からして別の ものだったらスガスガしく分かりやすくてよかったかもしんない。

また余談。ここでは生産性の話は除いている。我輩はあんま生産性の話好きじゃ ないんだよね、WebアプリやJavaがちやほやされてんのを見てると。だってヤツラは オブジェクト指向がどうとかプラットフォームを選ばないとか、『作る側の論理』で 導入されてるけど、結局ブラウザ選んだりやたら重かったり処理系からしてバギー だったりして、ユーザからしてみたらまったくうれしくない。だから、「生産性」 という話は、ユーザに不利益を与えないという前提が無ければ、したくない。 …KAGEXってどうなのかな。KAGEXだからユーザに不利益あることってあるかしら。 KAGEX単体のバグが残ってる、とかはそうかもね。本家とくらべてどの程度の バグ発生率なのか、バグ数が収束曲線になっているかどうかとか真面目に検証して みたいもんだけど、きっとデータが無いだろうなぁ…。

■理由5:ユーザが少なく、プラグイン作っても嬉しい人が少ない

今までのが効いてくるのがこれ。我輩はゲームあんま作らずにプラグインばっかり 作ってるので、せっかくだったらいろんな人に使ってもらいたい。んだけど、 対象の絶対人口少ないとどうしてもね、使ってもらえないからさ。ああうん、 これは我輩だけに限った理由だし、本末転倒なのは分かってるけれど。

■理由6:一部ユーザがウザい

(2014/05/01追記)
ごくごく個人的な理由なんだけど。

KAGEXユーザから、直接我輩にメールでご意見を頂くことがある。 彼らは揃って曰く、「KAGでプラグインなんか作っても意味が無い、 今すぐスバらしいKAGEXにのりかえろ、そしてKAGEX用にプラグインを書け、 その方がオマエもユーザもシヤワセになれる!」だそうで。 まんま宗教だ!そして知らんがな。 キミらがKAGEXを使ってシヤワセになれたのは結構なことだが、 それを我輩や他の人に押し付けるな。我輩はヘソマガリなので、やれやれ言われると 絶対やりたくなくなる。オカーサンに「宿題やったの?」って言われたら 「今やろうとしてたのに!」って答えちゃうタイプ。 だから、彼らからのこういう偏向したご意見を聞くにつけ、んじゃやめとこ、と 思うことしきり。

困ったことに、 こういう「忠告」をくれるのは一人だけじゃなくて複数(N>=3の自然数)なので、 もしかしたらKAGEXを使った人は宗教じみた何かにハマってしまいやすいのかも しれない。ユーザの方はご注意を。

もしKAGEXを普及させたいなら、我輩なんぞに絡んでないで、自分でなんとかしてくれ。 やることはいくらでもあるだろう。初心者向けのチュートリアルを書け、 仕様書を書け、プラグインを書け、そのスバらしさを定量的に語れ。そうすれば、 それを見た人が「よしKAGEX使うか」という気になってくれるはずだ。 そうならないのはキミの努力が足らんからだ。そして我輩を巻き込むな。

KAGEXそのものと全く関係ないところで、一部の輩がそうやって我輩を(結果的に) KAGEXから遠ざける方向に強制しちゃってるのは、本当に残念だ。 しばらく使ってたんだけどな…。

■おわりに

というわけで、理由をつらつら書いてみた。逆に言えば、上が全て解消されれば、 爆発的(?)に普及するだけのポテンシャルをKAGEXは持ってる。よくできてるもの。 理由1〜3が解決されれば、それで十分ハードルは下がる。我輩はちょっと まだ思い入れ少なくてできないけれど、有志の方、是非対応をお願いしまス。

KAGEXの中の人は、実は これを普及させようとは思ってないんじゃなかろうか。 それも一つの選択肢ではあるけれど、せっかく便利なものがあるのだから、 みんながシヤワセになれるような方向に転がってくれることを切に望む次第。 せっかくイイモノがあるのに、勿体無いしね。 前述のように、ソフトウェアはそうそう古くならないので、今からでも遅くない、 ちまちま拡張で行けるところまで行くというのが正しい、と思う、から。

以上、エンタープライズOS屋の参考にならない偏向意見でありました。

■おまけ

吉里吉里/KAGに足りない機能って何だろう。誰か教えて下さい。リストアップして アドオンとかプラグインとか作れないか考えてみたい。