妹がJavaで挫折した時の話
妹「そういえば……先日のスライドに出てた、Javaの話なんだけど、あれなんで上手くいかなかったかをちょっと思い出してきたんだけど」
「なんで上手くいかなかったんだっけ? そもそもなんでJavaだったのかというあたりから」
妹「色々候補はあったんだけど、一番の理由は、インターネットで見てたらわかりやすそうなサイトがあったことかな」
「たしかに、良い言語だけど日本語の説明がほぼゼロってことはよくある」
妹「でも結局そのサイトはあんまり見てないかもしれない。まず図書館で借りてきた本でやってみようとして、そしたら最初の段階からサイトのやつと違ってて。本ではEclipseをダウンロードしましょうって書いてあるんだけど、サイトの解説では、たしかなんとかビーンというのが」
「NetBeansかな。兄もどちらかといえばそっちの方が好きかも」
妹「好き嫌いはいいんだけど、あんまり色々あるのは困る……まあでもHello Worldは出せたんだよ。ただ一番簡単な、ダブルクリックしたらウィンドウが出るやつが作れなくて、本をペラペラめくっても作り方がさっぱり書いてなさそうな感じがヒシヒシと」
「それは……多分書いてなかったんだと思う」
妹「なんで入門書なのにそういう一番肝心なことが書いてないの? コレ絶対要るやつでしょ?」
「実はそうでもない。HelloWorldと同じような、文字だけで完結してるプログラムというのも世の中にはたくさんある。そういうの作る場合にはウィンドウの出し方とかは脇道の話になる」
妹「文字だけ出てきてもしょうがないのでは?」
「例えばディープラーニングで作った超強い将棋プログラムとかも、敵味方の駒の位置は文字データで入力して、結果どこに置けばいいかも文字で出せばいいから、プログラムとしては実は文字のやり取りが出来れば作れる。問題なのは強いか弱いかで、将棋盤の絵を出して見やすくとか、マウスで駒を操作したりとかは、別にあってもなくてもいいというか」
妹「そういうものなのか……でも、プログラムの初心者が作りたいのって、そういうのではない気がするんだけど」
「Javaは初めてだけど、他の言語の経験があるという人も入門書読むし、あと対象がWindowsかどうかでもちょっと変わってくる。それとゲーム向きのウィンドウの出し方と、ゲームじゃないアプリ向きのウィンドウの出し方なんてもあって……Javaを使ったゲーム制作系の入門書だったら、そのへんも載ってるはずなんだけど」
妹「ゲームとか書いてある本もあったような気がする。でもなんかダウンロードしなきゃいけないとか書いてあって、また兄に頼むのもめんどくさいなあという気持ちになった記憶が。そもそもウィンドウ出すだけでそんなに色々必要ないだろっていうのが」
「たしかにAWTとかSwingとかウィンドウを出す仕組み自体はJavaに標準で入ってたと思うけど、その方法だと後がめんどくさかったのかも。ゲーム用として考えると特に」
妹「ウィンドウ1つ作るのがなぜそんなおおごとに……」
「ゲームって画面を高速に何回も書き換える必要があるから、普通のアプリとはちょっと作り方が変わってくる。あとフルスクリーン処理とかも。でもJavaはわりと親切な方な気がする。他の言語だと開発環境以外にプラグイン的な物をダウンロードしないとウィンドウ1つ出せないというのはよくあることだから。そしてWindows以外は別の方法で、とか」
妹「でもUE4だと新しいプロジェクトを作れば、とりあえずウィンドウ出来るよね? あんな感じでよかったんだけど。真っ黒とかので」
「最初からゲーム用に作られてるゲームエンジンだからね。Unityとかもそう。ゲームを作るのに便利なように設計してある。入門書もゲームの入門というのが前提だからわかりやすい。でも汎用プログラミング言語の入門書だと、説明から何からあんまりゲーム向きではないから、最初からゲームと名のつく本を読んだ方が良さそうな気がする」