Java フレームワークの中でも特に人気の高い Spring ですが、Spring 学習用のサイト Spring Academy Pro が無料化されるアナウンスがありました。無料になったいまだからこそ、ぜひ挑戦していただきたいのが、Spring の公式認定資格である Spring Certified Professional です。このブログでは、Spring Certified Professional を改めて紹介するだけでなく、実際の認定者*である筆者が認定されるまでの体験記を交えてご紹介させていただきます。
*認定証がこちらで確認できます。
Spring Certified Professional とは?
※ 2024年4月の執筆時点の情報をもとに記載しています。
Spring Certified Professional は、Spring の開発元である Broadcom が実施している公式認定資格です。試験内容は以下です。公式な試験サイトと合わせてご参照ください。
- 場所を問わずオンラインで受験可能
- 130 分以内
- 選択式の 60 問
- コーディング試験はなし
- 500点満点、300点以上で合格
- 試験そのものは有料 ($250)
- 受験可能言語は英語のみ
試験サイトから “Schedule Exam” にすすむと、会場、日時などを選択して申し込みます。なお、場所を選ばず自宅でうけることも可能ですが、事前に Web カメラをつかった部屋のチェックが行われます。そのチェック時間は、130分とは別で、それが完了するまではスタートはできません。そのため、実際は130分より多く時間を確保することをおすすめします。130分・60問の試験内容は、個人差はありますが時間には余裕があるので、落ち着いて受けることができます。
受験にあたり試験の前提コースが Spring Academy のコンテンツであるという点が大きなポイントとなります。(「Spring Certified Professionalをうけるメリット」でも触れますが、全ての Spring 開発者へ受講をおすすめする内容です。)これが2024年4月より無料になったことで、試験がさらに受けやすくなっています。(試験は有料ですのでご注意ください。)
出題範囲は以下です。公式試験ガイドと合わせてご参照ください。
- Spring Core
- Data Management
- Spring MVC
- Testing
- Security
- Spring Boot
Spring Certified Professional の出題範囲を見る限り特徴として徹底的に”基礎”に絞っている点があげられます。特にWebアプリケーションをターゲットに、必ず知らなくてはいけない、機能を網羅的に抑えています。出題範囲からは、Spring Framework の分量が多いようにみえますが、Spring Bootを開発する上でも必須の知識がカバーされています。
過去に、公式サイト上で試験の前提知識を確認する問いが用意されており、以下それの一部です。現在例題は公開されていませんが、同等の知識が要求されることが予想されます。
- アプリケーションコンテキストを閉じるための推奨される方法は何ですか? Spring Boot がこれを行ってくれますか? (原文:What is the preferred way to close an application context? Does Spring Boot do this for you?)
- @Qualifier アノテーションは @Autowired の使用をどのように補完しますか? (原文:How does the @Qualifier annotation complement the use of @Autowired?)
- トランザクションとは何ですか? ローカルトランザクションとグローバルトランザクションの違いは何ですか? (原文:What is a transaction? What is the difference between a local and a global transaction?)
- Spring Boot starter POM とは何ですか? なぜ便利なのですか? (原文:What is a Spring Boot starter POM? Why is it useful?)
- @RequestParam と @PathVariable の違いは何ですか?(原文:What are the differences between @RequestParam and @PathVariable?)
- テストで @Transactional をいつ、どこで使用しますか? (原文:When and where do you use @Transactional in testing?)
- @PreAuthorized アノテーションと @RolesAllowed アノテーションは何をしますか? それらの違いは何ですか? (原文:What @PreAuthorized and @RolesAllowed annotations do? What is the difference between them?)
- @Controller と @RestController の違いは何ですか? (原文:What is the difference between @Controller and @RestController?)
試験では上記のような問いに対して選択式で回答をしていきます。なお、体験記でも記載していますが、コーディング経験なしに暗記だけで認定を得るのは難しい内容になっています。ですので、試験対策以上に実際のコーディング経験があることが強く推奨されます。
Spring Certified Professional をうけるメリットとは?
「Spring Certified Professional とは?」にかいたように、ここで身につくのは、徹底された基礎です。いわゆる、脱初級、の認定資格です。応用であるReactive/Spring WebFlux 、最新機能の Native Image などは出題範囲にこそ、ふくまれていませんが、そういった機能もスムーズに学習ができる基礎力が培われます。
Spring の人気とは裏腹に、各エンジニアのスキルの差は大きくなっています。また、日々最新機能を追いかけていく中、基礎の徹底が疎かになり、開発に役立てる知識と乖離が起きるケースもあるかと思います。自身の業務において、脱初級、基礎力が求められるような場面が増えてきたのであれば、Spring Certified Professional の認定資格は大きなメリットにつながると思います。開発を行っていく上で、より具体的かつ重みのある発言が増えるだけでなく、Spring 開発そのものがさらに楽しく感じるきっかけにも繋がっていくと思います。
なお、試験対策コースの Spring Framework Essentials および Spring Boot は、Spring で開発を行う全ての方が受講すべき内容です。なので認定されようが、されまいが、無料かつ受けない理由はないので、ぜひコースの受講のだけでもご検討ください。
Spring Certified Professional を認定されるまで
多くの方が気になりそうなポイントが、この認定資格が “どれくらい難しいのか?” という点です。端的にいえば、感じる難しさは個人差が大きいものです。それこそ、試験対策を一切行わずに、満点近い点数を取得するような猛者もいます。ここからは、一例として、筆者の体験記を記載します。
Spring Certificated Professional に挑戦
Spring Certified Professional を受ける前の私は以下のようなスペックでした。
- 典型的な “ド” インフラのエンジニア
- Java はおろか、主要なプログラミング言語での開発業務経験はなし
- Java を大学生時代に課題で経験した程度
見ての通り、Springの認定資格をうけるには、無茶な前提であることが伺えます。そんなわたしが、挑戦を開始したのが、2020年6月ごろでした。
暗記のみで臨んだ苦渋の1年
そこからの1年間の記録を以下のスライドにかいていますが、決して自慢できるようなものではないです。
上のスライドで出てくる “試験対策コース” ですが、当時は Spring Academy もなかったため、自費で Udemy のコースを申し込んで対策を行っていました。この試験対策コースのコンテンツなのですが、分量が多くただ聞いているだけでも、数十時間はかかる量です。初めて受けたのが2020年7月ごろでしたが次第に業務も忙しくなり、逃げるように一度断念します。
そして、業務がおちついた 2021年4月ごろに、なんとか同コースの学習を完了します。ところが、コースを一周したところで理解度も高くないので、その後は何度もコースを復習することになります。
2021年のゴールデンウィークが終わったころ、いよいよ腕試しということで試験を受けました。ところが、その後3回も試験に挑戦するものの点数が頭打ちで全て不合格になりました。この頃痛感したのが、Spring Certified Professional の認定資格がいわゆる暗記では臨めない試験でした。実際私の勉強方法は一切のコーディングをせずに、暗記で覚えていくものでした。
Spring のコーディングに挑戦
一旦試験はあきらめ、簡単でもいいのでコーディングが行えそうな場を探しました。ちょうど社内の中でプログラミング強化のような活動もあったので積極的に参加しました。社外でもコミュニティ活動などでも Spring の開発に挑戦しました。(当時の私のコードが使われた場面はこの動画に残っています。)
初めて Spring をコーディングすることになるのですが、驚いたのが、試験対策を行った数十時間におよぶ自己学習によって、スラスラとコーディングできていた点です。試験こそは受からなかったものの、自分の血肉になっていることに改めて気付きました。
さらに、コードさえかけてしまえば、元々はインフラエンジニアなので、コンテナ化やKubenetesへの展開などはスムーズにできました。業務においても、自身の発言や意見にも説得度が増していきました。アプリケーション開発の解像度がより高くなったことで、業務にポジティブな効果がでてきました。
そして合格、それから
いよいよコーディングの経験も得て 2022年3月ごろに、4度目の試験に挑戦することとなりました。結果は 367 点。300点を超えたので、無事合格することができました。以下は当時の合格認定です。頭打ちだった点数も実際のコーディングで活きた知識になり、最初の3回にくらべ、あっさりと合格した印象でした。
以上、極端(?) な体験談の一つではありましたが、改めて、Spring Certified Professional 受けたことによって以下の点を感じています。
- 決して一夜漬けや暗記だけでは合格できないような、よく練られた試験であること
- Spring 徹底的に基礎を学ぶようになっていること
- 理解すれば、自然とコーディングができるようになること
- キャリアにとって大きなプラスになること
- Spring が楽しく感じられるようになること
この経験を経て、いまでも積極的に Spring を業務に活かさせていただいています。一例として、以下のようなブログ記事の執筆もさせていただきました。
Spring Boot 3の新機能を使ってみよう! 2からアップグレードする手順、Observability機能、ネイティブイメージ化
まとめ
Spring Certified Professional のご紹介、メリットとともに一人の体験記を紹介させていただきました。Spring Academy が無償化された今こそ、ぜひ受けるべき試験のひとつです。ぜひ、皆さんのスキル強化に役立ててください。