Tags: java
ある一定のフォーマットに沿ってExcelに仕様書を書くと、VBAのマクロがJava/Webアプリケーションのソースコードを自動生成する。世の中にはそんなツールが実在し、それを元に開発されたシステムが、名前を出せば驚くような場所で実際に本番稼働していたりもします。
2018年の夏、とある若手の同僚からこんな話を聞きました。曰く、彼の大学時代の同級生が、業界では大手のエスアイアーに新卒として入社。配属された開発現場では、Excelに設計書のようななにかを書くとJavaのソースコードが自動生成されるというツールを使うことになっているのだが、そのツールの使い方がわからなくて下請けのエンジニアと共に途方に暮れている、と。
そして夏のおわり、上の同僚(とその同級生君)とは全く関わりのない別の方面であるはずの知人と話していたら、完全に同じ話にでくわしました。かくかくしかじかな状況で途方に暮れている、と。
今日、これを書いている理由は、それ以上でもそれ以下でもありません。なお、件のツールの良し悪しの評価については2010年に書かれたこのブログに譲ります。これ以外のお上品な表現かつ真っ当な評価を目にすることは、この8年間、ついぞありませんでした。
できればメモリが16G乗ってるProがいいでしょう。奨学金の返済が厳しければ普通のMacBookでもかまいません。15インチは大きすぎて持ち運びに不便なので、13インチがおすすめです。もしもそこそこの知識と時間があるのなら、安いWindowsラップトップのOSをUbuntuに載せ替えるのもひとつの手です。最近のLinuxディストリビューションはWifiのドライバもちゃんとインストールされるようです。とにかく、POSIX互換のUNIXが安定して動く、持ち運び可能な環境が必要です。
エンジニアとして必要な最低限のPCを揃えたら、次は自分のアバターをネット上に作っておく必要があります。初めはギットハブとかそんな高尚なものじゃなく、ツイッターがいいでしょう。フェイスブックでもいいけれど、エンジニアとして過ごすならツイッターのほうがなにかと便利です。
これからウロウロするにあたって、そこそこお金がかかります。電車賃とか。節約できるところで節約するべきでしょう。個人的なおすすめはIIJ-mioです。「IIJなんてそんな会社聞いたこともない」と思ったら大間違い。
勉強会、カンファレンス、ミートアップ、LT(ライトニングトーク)大会。その名前と体裁はなんでもいいです。手始めはやはり connpass.com でしょう。初めは何が何だかわからないのは仕方がありません。少しでも自分のアンテナにひっかかるものがあれば(なくても)、とにかく申し込んで行ってみましょう。ツイッターアカウントで会員登録できます。
自分が興味のあるジャンルやコミュニティがまだ全く定まらない間は、カレンダー形式のものを見ながら自分のスケジュールに合わせて選んでもいいかもしれません。
登壇しているエンジニアのツイッターアカウントをフォローしましょう。プロジェクタに映る資料にたいていその本人のツイッターアカウントが書いてありますが、見逃しても大丈夫。「ハッシュタグはこれですよ」という告知がたいていはあるので、そのタグを追っかければ登壇者も関係者も捕捉できます。コミュニティの公式ツイッターアカウントみたいなのをフォローするのも手っ取り早くていいです。
そうこうして集めたツイッターのタイムラインを電車の中ででも眺めている間に、えっ、そんなコミュニティもあったんだ、そんなカンファレンスもあるんだ、あの話はそういうことだったんだ、みたいなのを目にするでしょう。そうやって自分なりの観測網を育てましょう。
残念なお知らせです。実は、勉強会に行っても勉強にはなりません。勉強会の目的は勉強することではなく、「それ、俺もやってみようかな」というモチベーションやヒントを得ることです。エンジニアが真に学ぶ術は自分の手でコードを書くことだけです。これについて今日は異論を認めるつもりはありません。得たモチベーションを糧に、自分のMacBookと孤独に向き合いましょう。
どうしても書きたいコードのテーマが見つからない、なんのコードを書いたらいいのかわからない場合は、せめて写経をしましょう。写経の方法はここに書いてあるとおりです。最近ではググって出てくるWebサイトに書籍より優れた簡潔なチュートリアルが存在することは事実ですが、初学者にはおすすめしません。ctrl-c, ctrl-vを駆使しただけで自分がコードを書いたつもりになってしまう、危険な罠だからです。
書いてみようと思ったプログラミング言語の種類によってはIDEを買う必要があります。JVM系言語ならEclipseという有名かつ無償のIDEがありますが、無駄な消耗を避けるためにも、個人的にはIntelliJ IDEAを強くおすすめします。こうしたソフトウェアのライセンス費用も、ためらうべきではない投資です。
リリースのない自己学習はオナニーに過ぎません。社会人は特にそうです。ここではあえて、アウトプットではなくリリースと表現しています。リリースじゃなくてローンチでもいいけど。
アウトプットせよ、と書くと、ブログを書いたりカンファレンスに登壇することをそれと認識してしまう危険があります。少なくともある時期1,2年くらいこの罠にハマっていた本人がこれを書いているのだから間違いありません。そうした活動にも大いに意味はありますがしかし、副産物あるいは中間成果物に過ぎません。俺はアドセンスとアフィリエイトで今月こんだけ儲かったぞ、だからお前らもブログを書いて、今月こんだけ儲かったと書けばいいのさ!みたいなことで消耗している場合じゃないのです。qiitaでいいねとストックの数を集めることも、githubの草を毎日生やして悦に入ることも、それはそれで趣味として好きにすればいいことではあるけれど、そこにエンジニアリングの本質はありません。
リリースしましょう。リリースが意味するところの最もわかりやすい例は、友達のスマホのGooglePlayで自分が書いたアプリをダウンロードできる状態のことです。Webサービスであれば、自分の独自ドメインでそのサービスのURLを表現できる状態のことです。方法はそれだけではありません。エンジニアがリリースするとはどういうことか?それは選んだテーマ次第です。
装備を揃えて外に出て見聞を広げ、コードを書き、リリースしましょう。
Happy Hacking.