川井: | Ruby会議でプレゼンをするStar Rubyについて聞いてもよろしいですか?
|
|
星: | 僕はスーファミが好きだったので、スーファミのような2Dグラフィックで豊富な描画エフェクトがあるライブラリが欲しかったんですよ。なおかつ、開発者にとってとても使いやすいものが。最初は独りよがりで作っていて、APIがどんどん変遷していったんですけど、一人で作ってると視野が狭いもので、その人にしか使えないものが出来ちゃうわけです。実際に他の人が必要としていない機能がいっぱいあったりとか、余計なものがあったんですね。で、友達がいてそのライブラリを使ってくれたんですけど、まあ色々文句を言ってくれるわけです。ありがたくそれを聞いて、また文句を言ってくれて、その人の言うとおり修正していきました。そうしたら、自分にとってはベストで、かつおそらく他の人にとっても良いであろうというものが出来ました。
|
川井: | それは、「友達が一緒に作ってくれた」というよりは、「指摘をしてくれた」というだけですか?
|
|
星: | そうです。コミッターは僕だけです(笑)本当はもっとコミッター欲しいんですけどね。
|
川井: | オープンソースなんですよね?
|
|
星: | はい、オープンソースです。友達には、もうちょっと宣伝というか、他の何も知らない人を惹きつける何かが必要だと言われました。プログラムも大事なんですけど、プロダクトを作ったら、そのプロダクトを使うためにチュートリアルとかドキュメントがいっぱい必要なんですよ。それが無いと誰も使ってくれないっていう。それの重要さをガンガン指摘されて、今後はそれに力を入れていこうと思ってます。
|
川井: | これから作るんですか?それとも原型はあるんですか?
|
|
星: | チュートリアルですか?まだ無いですね。
|
川井: | いつぐらいまでに作りたいと思ってますか?
|
|
星: | まだ時間がある大学院にいるうちにやりたいなと思ってます。
|
川井: | 格好いいロゴとか出来てますか?
|
|
星: | ロゴじゃないですけど、このフォントでこの大きさで書けばこのイメージになる・・・っていうのはありますが、正式なロゴはないですね。
|
川井: | やっぱり、人を集めるにはそういうのも大事じゃないでしょうかね?
|
|
星: | そうですね、デザインは重要ですね。プログラムがいくら優れてても、やっぱりそういうので不利な部分になってるのはあると思います。
|
川井: | ネットの世界ってあくまで、中身は見つけてもらってからの世界で、「見つけてもらう」っていうのがいかに大事かっていうことですよね。意外と重要な入り口ですね。いいコンテンツがあっても発見されなければ誰にも読まれないっていうのがありますよね。
|
|
星: | 確かにそうですね。あとやっぱり、僕はエンジニアの勉強会にいっぱい来てる人の知り合いは多分そんなに多くないほうだと思うんですけど、そういう人たちとの人脈も重要だなと思いますね。
|
川井: | じゃあもうこの歳にしてプログラミング以外のものが難しいんだって気付いて取り組もうとしてるんですね。
|
|
星: | そうです。
|
川井: | 凄いですね。それを30歳になってもやらないで苦労してる人がいますから。そういう人たちは概して、30歳、35歳まで全くやらずにコーディングしかしないんですよ。そして35歳になって、「35歳だからリーダーやってください、マネージャーなってください」って言われても、「人と話しなんかしたことないです」「目を見て話すことも怖いです」みたいな状態から、いきなりリーダーなれとか予算管理しろって言われて出来ないですよね。それで苦労しちゃう。で、結局リーダーとか出来なくてまた現場に下ろされちゃう。そして、年寄りになって今度は気力、体力も落ちてきて・・・そういう苦労をしている人が多いんですよ。それをこの歳で気付くっていうのは、凄いことだと思いますね。
|
|
星: | それでもまだ完全に気付いてないかもしれないです。プログラムは楽しくてはまりがちなので、ライブラリを使ってる友達に「もっと外に出ろ」とどんどん引っ張られてる感じです。
|
川井: | あんまり今度プログラム以外のことに力が入っちゃうと、こっちのスキルが思うようにいかなくなったり、難しいですね・・・センスですかね。
|
|
星: | そうですね、あとバランスだと思いますね。
|
川井: | そのセンスやバランスが長けている人が成功するんでしょうね。でも周りに笹田さんみたいないろんな先輩がいるわけだし、いろんな意味でアドバイスをしてもらえるし、いいんじゃないですかね。
|
|
星: | ありがとうございます。
|
川井: | 楽しみですね。当面このStar Rubyを磨いていって、理想のゲームライブラリーを作っていくということですね。
|
|
星: | フィードバックを得たら、その時ごとに考えるっていう感じですかね。
|
川井: | もうちょっと突っ込むと、そのゲームライブラリの良し悪しって、「使いやすいかどうか」以外に、機能の面ではどうですか?
|
|
星: | 機能でいうと僕の作ってるものは、実は最小公倍数的というか、DirectXみたいに何から何までいじれるライブラリよりは少ないんです。わざと少なくしてます。バラエティの豊富さよりも、僕は快適さのほうが重要だと思ってるんですね。快適さというのは、このメソッドを呼び出した時に、裏でどんな処理が行われて、どんな結果になるか、どんな状態になるかがすぐ分かることが重要だったんですよ。それが分からなくて、このメソッドを呼んで・・・ブラックボックスにメッセージ送ったけど何が起きたか分からないっていうのは、良くない設計だと思うんですね。そういう風にならないように気をつけました。
|
川井: | じゃあ機能的とかよりは、効率的とか即時性とかそっちのほうに重点を置いたということですね。
|
|
星: | そうです。なるべく内部状態を持たないようにするとかですね。ブラックボックスを無くしてシンプルに・・・ですね。
|
川井: | 他のだとブラックボックスがあるんですね?
|
|
星: | そこまで深く触ってないですけど、「この関数はどういう状況には呼んではいけない」だとか、そういう暗黙の了解みたいなのがあって。まあブラックボックスではないか。。。知らなきゃいけない知識が結構あったりして、そういうのを無くしたかったんですよ。
|
川井: | 特殊な例外ルールとかローカルルールみたいなのが蔓延ってるってことなんですね。それは確かに使い勝手が悪いですよね。
|
|
星: | そうですね。DirectXも初期化の順番とかあったりとか、「実はこういう時これが発生するからこうしなきゃいけない」とか、そういうルールがいっぱいあるんですね。DirectXも(以前と比べて)だいぶ簡単になったらしいんですけど、それでもまだ僕は複雑だと思います。そもそもC++自体が複雑ですからね。
|
川井: | なるほど。よくわかりました。
|