今回はJava未経験の私が急にJavaに挑戦することになり約1年、大変だと思ったこと、いいなと思ったことなど率直にJavaに対する思いを語りたいと思う。これから初めてプログラミングにチャレンジしたい方、オープン系言語開発にキャリアチェンジしたい方の後押しになれば幸いだ。
筆者の経歴
- 新卒でIT企業に入社
非常にマイナーなレガシー言語を駆使して金融機関のシステム保守を行う。 - 紆余曲折あり、退職
- プログラミングスクールを受講
2ヶ月だけRubyを学習してみる。(いわゆる「さわった」程度。) - 事業会社のIT部門に転職
1年程前、急にJavaを駆使して新システムを作れと任命される。
感想1:Javaって難しい!
どんなプログラミング言語でも違うポイントで簡単or難しいと感じることはあるが、Javaは率直に、習得まで時間のかかる言語だと思った。特に私が個人的に難しいと感じる点はやはりJavaの根幹となる考え方、オブジェクト指向。今まで手続き型でしかコードを書いてこなかった(というか手続き型でしか書けない言語で書いてきた)ため、頭では理解できても自分でアウトプットすることに困難を感じている。その理由は、まだオブジェクト指向で整理されたサンプルコードを見て、美しい・良いと思えず、良いと思えないから自分に取り入れられないのではないかと分析している。
この価値観や考え方の転換はもはや改宗に近い。
まだまだ悩むことも多いが、オブジェクト指向カンファレンスのセッション資料を見てみたり、先輩社員の書いたコードを参考にするなどして、少しずつオブジェクト指向を自分に染み込ませてみている。
感想2:Javaって意外と処理が重たい!
レガシー言語にもいいところがあって、処理自体がシンプルなので大量のデータを高速に処理できる言語が多い。私がこれまで開発に使用してきた言語は少なくともそうであり、コードを書いているときに処理の負荷や速度を気にしたことなどほぼなかった。
しかしJavaはできることが多くて複雑な処理もできてしまう分、気をつけないとメモリを過剰に使うコードになってしまい、大量のデータを扱う際とても実運用できるような処理時間に収まらなかった、ということがあった。Java自体コンパイラ型言語と呼ばれる、Python・Rubyといったインタープリタ型言語と比較して圧倒的に速いと言われている言語であるにもかかわらず、だ。もちろん、適切な書き方であれば問題はない。
コーディング担当者の腕で性能まで変化してしまう言語なのだと痛感した。
現在はコーディング段階でメモリの使用に気を配ったり、開発の早い段階で実際の稼働環境で性能をチェックするなどの工夫をしている。
感想3:Javaって世の中に情報がたくさんある!
これはとてもいいことだ。世の中にはどんどんと新しいプログラミング言語が出てきているが、それでもこれまで長年多くの現場で選択されてきたJavaには、多くの参考書・技術記事が存在している。また、ライブラリも無料で使えるものが多数公開されていて、ちょっと複雑だけどこんなことしたいな、は大体どこかのライブラリをインストールすればできちゃったりする。長年レガシー言語をやっていて、わからないことは誰に聞いても知らない・わからない、図書館にも本屋にもネットの渦の中にもどこにも情報がない、という環境にいたため、この点に関しては非常にJavaのメリットを感じている。
ただ注意すべきこともあって、歴史が長い分、参考にしたサンプルコードが古いverのベストプラクティスであって、最新verでは動かなかったり適切ではなかった、といったケースもあった。
何か技術記事を参考にする際には、verや公開された年に注意するようになった。
感想 4:Javaって面白い!
単純に、書いていて面白いと思う。
こんな処理にしたいなと思ったとき、レガシー言語で何行にも渡って書いていたことが1行でできてしまったり、同じ処理でも(前述の通り、処理負荷等は考慮しなければならないものの)様々なアプローチや書き方があって、答えは1つではないということに奥深さを感じている。一方で型に非常に厳しかったりと、白黒はっきりしている部分もあり、気持ちのいい言語だと思った。
最後に
よりJavaと仲良くなるために(?)、Javaの資格にも挑戦中だ。今年の6月にはいわゆるJava Silver資格を取得した。より上位の資格取得も目指したいと思う。