自分の技術的な思いについて

なんとなく勉強会等で意見を言うとなんでかよく判らない感じに受け止められることがあるのでつらつらと書いてみる。

コアな技術はJava

自分のコアな技術はJava。多分、社会人生活が始まってずっとそのまま。学生時代にはPerlを触ってたけれどもなんとなく肌に合わなかった感じ。

なぜPerlは肌に合わなかったか

書き方がたくさんありすぎる。知らないといけないこと、暗黙の変数とかがありすぎて自分には書けないなと思った。他の人と同じ物を共有できない感じ。ただし、「TMTOWTDI」という言葉は大好き。「やり方はひとつじゃない」というのはなんだかんだで今の自分の思考の中心。すべてを同じように作る必要はないし、その時その時で最適な方法は変わる。

なぜJava

最初に、処理したいことは全てを書かなければいけないから。2つ目として、余分なメモリ管理は書かなくていいから。

全てを書かなければいけないことについて

throws句を中心に冗長な表現が多く、多重継承が出来なかったり色々とアレな言語でもあるJavaだけれども、自分は少なくとも今はコレでいいと思ってる。throws句を書かなければいけないのも面倒くさくは感じるけれども、Exceptionの概念を理解していない初心者にそういったものが存在するということを教える役には立つ。初心者はまずJavaを勉強するべきじゃないかな。他のもっと楽な言語はJavaでプログラミングの基礎を学んでからのほうがいいと思ってるぐらい。誰が書いたとしても(書いたなりには)理解できるというのも良い。理解できる最低限のセーフティーネットが確保されている印象。*1

メモリ管理が不要なことについて

Cやらなんやらのメモリ解放が必要な言語に比べるとほんとうにコレは大きい。GCに関しては好きなときにメモリを開放できないとか、メモリ管理が不要な言語ではなく、メモリ管理ができない言語だとか言われることもあるけれども、自分はGC賛成派。本来アプリケーション開発者が考えるべきことではないと思ってる。ついでにVMも賛成派。VMの存在を許さない某リンゴの会社とは相容れない。

なんでこんなことを考えるようになったか

実は(?)いわゆる金融系SEです。閉鎖環境で、Excel方眼紙で、ウォーターフォールで、技術者軽視で・・・・という環境で長いこと仕事をしてきた。(一時期違う仕事をしていたこともあり。)そんな環境で仕事をしているとものすごいコードに出会うことがあり、結局最終的には自分が何とか出来るかどうかを中心に組み立てる必要が出てくる。なぜJavaがよいと考えるかというと、言語としての簡素さ、書きやすさ、読みやすさ、判りやすさ、速さ・・・・等々色々な他の言語と比べると明らかに劣っていたりするものもあるけれども、ある程度のことには目をつぶりつつ、妥協を繰り返し、その中で良いものをとなるとJavaしかないという感じ。

割と技術的には中立

TMTOWTDIという言葉が好きということもあり、Javaの中でもJavaEEという標準技術を最近推しているけれども、世の中の大半で良い場合が多いと思っているからだけで、それぞれの現実に合わせて最適な解は変わってくると思ってる。最近もSpring勉強会に行ってきてSpringも広まって欲しいと言ったら驚かれたけれども、意図としてはそんな感じ。Javaじゃないというのもあり。技術的にいくら優れていても使う環境、組織と合わなければしょうがない。もともと技術は手段だと理解していて、何かの役に立たなければ意味がないと思っているのもある。

仕事をしていて思うこと

なんとなく、みんなにシステム開発を楽しんでほしい。特に初心者にはコンピューターの難しいところを知らなくてもアプリケーションを作れるようになってほしい。今はウェブアプリケーションだとUI用としてJavaScriptを知って、サーバーサイドで何か言語を一つを知らないとリッチな今時のアプリケーションを作れないけれども、一つ言語を知っていれば作れるようになってほしい。そういう意味で、JSFはすごい期待している。JavaScriptのテンプレートを用意して、それっぽい綺麗なUIを作れるというのはなかなか素晴らしい。あとは難解なフェーズリスナーとかがどうにかなれば・・・・・・
そんな感じなのに、今は入門書籍もなく、初心者勉強会も無いので、今後どうにかしていきたい。

こんな感じで考えてます。
金融系SEとして、技術力軽視の場所で技術力で勝負をしてきて、非常に歯がゆい思いをしてきたのもあり、最新の技術を使うことで昔に比べて簡単に作れることを広めて、同じ思いを後続の方々がしないようになれればいいなあとか。

*1:黒魔術が使用されていなければ・・・・・