Java初級・中級から上級への階段 ~アーキテクトへの道

      2017/01/14

Javaのロゴ

「Javaそこそこ出来るようになったけど次何やればいいんだろう?」
「フレームワークやORMも使いこなせてるし、あとは何が必要?」
「デザインパターンとか学べばいいのかなぁ?」

プログラミングの学習って

  1. 言語の文法など基礎知識を学ぶ
  2. フレームワークやライブラリの使い方を学んでアプリを作れるようになる

って段階があると思います。2まで来ると普通に仕事できる人になりますよね。

では次のステップは何でしょうか?

それは、アーキテクチャを設計できるようになることです!

私はこれまでに10年ほどJavaで業務システム開発をしてきました。経験を積んでいく内に、システム全体のアプリケーションアーキテクチャを設計・実装する仕事をするようになりました。

そんな経験を踏まえて、今回は「Java中級から上級への階段」を紹介します。

まず、初級・中級・上級の定義をしてみます

・初級
Javaの文法やJDKの主要なクラスライブラリ、Servlet、JSP、JDBCを覚えて使えるようになってきたという段階が初級かと思います。企業の新入社員研修で教えるような内容を理解した段階です。

・中級
StrutsやSpring、JSF、Play、Wicketなどのフレームワークをどれか覚えて使えるようになった段階が中級かと思います。単独で現場の仕事が出来るレベルになります。

・上級
プロジェクトの特性に合わせたフレームワークの選定・実装が出来るレベル。いわゆるアーキテクトってやつです。

中級までは知識を修得すればいいですが、上級は知識を応用してプロジェクトに合わせたアーキテクチャ設計・実装が出来なくてはなりません。

どうすれば、出来るようになるかというと…、

代表的アーキテクチャ・デザインパターンを学ぶ

最近の多くのフレームワークはMVCアーキテクチャです。

プログラムをModel(ビジネスロジックやデータ)、View(表示)、Conrtoller(制御フロー)に分けます。

また、フレームワークにはデザインパターンが使われています。

例えば、Struts1のActionクラスやActionFormクラスにはStrategyパターンが使われています。

プロジェクトでStrutsを使う場合はActionクラスを継承しプロジェクト用のBaseActionクラスのようなものを作って、プロジェクトで開発する全Actionクラスはこのクラスを継承するという設計をする場合が多くあります。これはデザインパターンのTemplate Methodパターンです。

★がポイントです。★の所に例えば、アクセスログ出力のコードを追加したとします。

するとUserEditActionが動作する時のもItemCartActionが動作する時にも、アクセスログ出力がされます。

一か所にコードを追加するだけで全機能へと変更を反映させることが出来るのです。これが、Template Methodパターンのメリットです。

Struts1のように古いフレームワークを使う場合にはTemplate Methodパターンが多用されていましたが、最近はそうでもありません。

フレームワークが元々持っている機能を使えば済むからです。

AOPという概念があります。AOPとはAspect Oriented Programming = アスペクト思考プログラミングです。

超おおざっぱに説明すると、AOPを使えばメソッドの前と後ろに任意のロジックを実行させることが出来るんです。

ですから、最近のフレームワークを使う場合には、プロジェクト用に凝った基底クラスなどを作らずにフレームワークをそのまま使うだけで済む場合も多いので、時代によって使う技術要素は変わるということです。

とはいえ、ここまでで説明したデザインパターンの知識はソフトウェアを設計するうえで発想のヒントとなるので学んでおいて損はありません。

今どきのアーキテクトはフレームワークを自作しない?

古いJavaプロジェクトのメンテをすると、素のServletの基底クラスを作って、複雑なコードを書いたり、自分でコントローラークラスを作って独自仕様のActionクラスのようなものに処理を委譲するようないわゆるオレオレフレームワークを見かけることがあります。

これ、昔だからしょうがないけど、今やる人はいません。

  • オレオレフレームワークを実装する時間が無駄。既存のフレームワークの方が優秀
  • 既存のフレームワークの方が本やWebサイトなどの技術情報が豊富で学習コストが低い
  • 既存のフレームワークはバージョンアップやバグフィックスがされるが、オレオレフレームワークは自分でメンテしなければならない

よって、オレオレフレームワークは特別な理由(そのプロジェクトに合った既存フレームワークが見つからない)がない限り実装するべきではありません。

Java上級者の仕事

ここまでの話を踏まえてJava上級者の仕事を考えてみましょう。

1. プロジェクトに合ったフレームワークを選定する

先ほども述べた通り、オレオレフレームワークを実装するのではなく、既存のフレームワークの中からそのプロジェクトに合ったものを選定します。

「プロジェクトに合っているか?」という観点は、「システムの特性に合っているか?」ということだけでなく、人員を集めやすいか、人員がすでに決まっているのであれば、その人員が使いこなせる難易度かなども含まれます。

2. フレームワークの使い方のガイドラインを示す

フレームワークを使うとモジュール分割の仕方は決まりますが、モジュールの中でどのようにロジックを実装していくかには自由度があります。

各人の判断で実装していては、プロジェクト全体でバラバラな実装となってしまいます。

そこで、ガイドラインを作成します。例えば「コントローラーにはDBアクセスのコードを直接書かずモデルの中に書く」のようなルールです。

3. 正しい使い方のサンプルコードを提供する

ガイドラインだけでなく、そのガイドラインに従ったソースコードのサンプルがあると、誤解なくスムーズに意図が伝わります。

言葉で説明しているのを読むよりも、コードを読んだ方が早いというのはよくありますからね。

そんなわけで、これらを実践していけばJava上級者へとステップアップしていけると思います!

とはいえ、会社によってはアーキテクトの仕事は元請けの会社の社員がやってしまうので、自分が担当することが出来ないという場合も多々あります。

そういう場合は、転職した方が良いと思います。あなたのスキルレベルがその会社を超えたということです。

私も転職することで仕事の幅を広げることが出来ました。

それに転職活動すると、いろいろな会社や仕事を知ることが出来て、将来の可能性が広がっていいと思います。

転職はやってみると思ってたより簡単!

私自身3回ほど転職してるんですが、思ってたより簡単で、転職エージェントを使ったらあっという間でした。

エージェントが応募先候補の選出から、面接の日程調整までやってくれるので、こちらから動かなくても半分くらい自動的に進む感じで楽でした。しかも今は好景気で売り手市場なので転職するのにちょうど良い時期です。

レバテックキャリアっていうエージェントがおすすめです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

なので、レバテックキャリアのホームページ見てみてください。「ホントだ、美人じゃん♪」ってきっと思うはずです笑

地方在住や、エンジニア未経験の人にも使える転職エージェントがある!

レバテックキャリアは東京・大阪近郊のエンジニア経験者向けサービスなので、地方在住の方や、エンジニアの仕事が未経験の方には、ワークポートがおすすめです。

未経験の人はサポート対象外のエージェントが多いんですけど、ワークポートは未経験者の転職も支援してくれます。以前エンジニア未経験の友達にワークポートを教えてあげた所、ちゃんと登録できて未経験可の求人を紹介してもらえました。未経験の人こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいくと思います。

ワークポートは全国の求人をカバーしているので地方在住の方もご利用いただけます。

人脈がなくてもフリーランスになれる!

フリーランスになりたい方にはレバテックフリーランスがおすすめです。人脈がなくてもレバテックフリーランスに登録するだけで案件を紹介してもらえます。案件の希望(どんな技術を使っているか、残業が少ないこと)等も聞いてくれるので、やりたい仕事が出来ます。対象地域は関東圏です。

「派遣社員」なら正社員とフリーランスのいいどこ取り!

フリーランスになりたいけど、確定申告とかめんどくさいなという方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるのでいいと思います。

私の先輩でフリーランスになった後、派遣社員になった人がいるんですが「自由かつ煩わしい手続きがなくて最高」って言ってました!パーソルテクノロジースタッフに登録するだけでかんたんに派遣社員になれます。

私(やまろう)への相談メールも募集中

転職や仕事術、勉強法等について質問や相談がありましたら、以下のメールフォームからぜひご連絡ください。
経験者から見れば簡単に解決できる相談って多いのでお気軽にどうぞ!こう書いてもなかなかメールくれる人って少ないのでホント気軽にメールしてくれると嬉しいです。

メールアドレス (必須)

相談内容

たまに間違ったメールアドレスを入力されていて返信できない場合があります。一週間経っても返信がない場合、メールアドレスを確認の上、再度送信をお願いします。

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 技術 , , ,