Rのつく財団入り口

ITエンジニア界隈で本やイベント、技術系の話などを書いています。

【AWS】AWS認定『デベロッパー - アソシエイト』(DVA)に合格した話

 AWS認定の開発者向け資格、デベロッパー - アソシエイトに、2019年12月末に一発合格することができました。祝ってくれた皆様ありがとうございます。いかに突破してきたかを合格エントリとして振り返り、これから挑戦する方向けに残そうと思います。

資格の名前が長いので、以下公式の3文字略称を使います。

  • 基礎レベル『クラウドラクティショナー』(Cloud Practitioner - Foundational: CLF)
  • 中級者向けのアソシエイト3兄弟は設計の『ソリューションアーキテクト - アソシエイト』(Solution Architect - Associate: SAA)
  • 開発の『デベロッパー - アソシエイト』(Developer - Associate: DVA)
  • 運用の『SysOpsアドミニストレーター - アソシエイト』(SysOps Administrator - Associate: SOA)

f:id:iwasiman:20191005174516p:plain

挑戦への経緯

きっかけ

 会社でクラウド領域も対応できるエンジニアを増やしていく動きを機に始めたSAA挑戦は、2019年9月にめでたく合格できました。その後は技術書典7の本を読んだりAWSの本を読んだり合格エントリを書いてみたり。
 並びに定期的にウォッチしていたUdemyがまたセールをやっていたので、DVA資格の評価が高い有名な英語版講座もセール中にポチっていました。

Ultimate AWS Certified Developer Associate 2020 - NEW!

 この講座の最後に英語ですが65問のDVA模試がついています。試しに無勉強の状態でSAAの知識だけで解いたところ、正答56%前後でした。誤差を考えても50%程度は行けたことになります。おっこれならもう少しだけ頑張ったらDVA資格も突破できるんじゃないか?とその時は思いました。(※死亡フラグです)
 ネット上の様々な記事や合格エントリを見ても、広く浅くサービス全体が出題されるSAA資格は頑張れば実務未経験でも突破可能。しかしDVASOAはより深い知識が問われるのでだんだん辛くなってくる……という情報が多いです。
 果たしてDVA資格は実務未経験でも突破可能なのでしょうか? そこで自分で実験してみることにしました。

書いている人のスキルセット(笑)

 SAAの合格エントリに書いてある通りです。ソフトウェア・アーキテクトっぽい立ち位置でいつつもデベロッパーであり、オンプレでのアプリケーション開発経験はいろいろやってきましたので、DVA対策ではそれに助けられた感があります。

iwasiman.hatenablog.com

AWSの実務経験とよく使う興味のあるサービス

 仕事でも部内など少人数を相手にAWSとはなんぞやとかAWS認定の話をしたり、我々のビジネスへの活用方法を考えたりする機会は増えてきました。
複数抱えているプロジェクトがなかなか終わらなかったりでSAA合格時と状況は変わっていないので、実際の構築経験は相変わらずゼロです。とはいえ、理論だけでもだいぶ前より分かってきたかなという感触はあります。

 興味のあるサービスはDVA資格の中核とも言えるサーバーレスアーキテクチャーを構成する、API GatewayやLambda関数周りですね。オンプレでWebサーバーの上で動く、いわゆるMVCアーキテクチャの3層構造のWebアプリ+その後ろにRDB、の伝統的な構成では色々作ってきたので、このへんがサーバーレスだとどう変わっていくのかは関心もあるし、今後も深掘りしていきたいところです。

f:id:iwasiman:20200208193454p:plain:w450

やったこと

aws.amazon.com

基本方針の確定

 2019年11月に作戦を開始することにしました。SAA攻略作戦は知識ゼロからいろいろ試しながら紆余曲折試行錯誤して結局3.5ヵ月約80Hもかかってしまったので、今回は以下の方針にしました。

  • 前回は1日0.5時間程度の学習時間から始めたので、今回は休日も含め1日1時間、週7Hを基本として、期間の圧縮を図る
  • 最初から問題演習を中心に学習を組み立てて、問題をたくさんやって分からない所を調べるスタイルで期間の圧縮を図る
  • 仕事や他のイベントもあるので期限は決めず、受験するのは3か月後ぐらい?のゆるい気持ちで始める
スタプラで学習記録を可視化する

 SAAの時から使っていた学習管理アプリ、Studyplus(スタプラ)を無料の範囲で引き続き使いました。読んだ本、Udemyの講座、すべて別々の教材として登録しておいて集計可能で便利です。記録時に本の感想や模試の所感など、ひとことコメントも必ずつけるようにしてスタプラ上のSNS要素とTwitterに同時放流しました。
スタプラ上でいいねがついたり、Twitter上で反応があるのも励みになります。反応してくれた皆さんありがとうございます。

www.studyplus.jp

 またスタプラには週初めに記録すると今週の目標を記録する機能があります。これが面白くてフォローしあっている人の目標や達成状況も見えたり、50%とか80%とか達成するとアプリが通知してくれてそれも記録できるんですね。
僕は1日1Hでだいたいいつも週の目標は7Hだったのですが、人間こうして目標があると「あと1時間……だったらどこかで時間確保して達成しよう!」という気持ちになったりしてやりきるものです。このへんよくできているなと思います。

 アプリ上で反応してくれた人はみなお返しにフォローというスタイルでやっています。ガンガン資格取得に励んでいるITエンジニアの方もいるし、中/高/大学生もユーザーには多いですね。受験勉強を超がんばってる高校生とか中学生の女の子とかからいいねがつくと、おぢさんも頑張らなきゃ……という気になりますw

 スタプラ上に登録する教材はアプリの画面から検索して選んでいって有名な参考書を選ぶこともできるし、独自教材を登録することもできます。
AWSの参考書やUdemyの講座は検索からは出てこないので、画像は普通にスクショを登録していました。このアプリも裏ではAWS上で動くRuby on Railsベースで、ユーザが登録したスクショのバイナリ画像ファイルもおそらくAmazon S3に保存しているのかと思います。

tech.studyplus.co.jp

 若いユーザーの皆さんの使い方を見ていると、この学習教材の本や科目ごとに、教科書の表紙とかでなく勉強以外の好きな画像を使ってモチベーション維持の助けにしている方が多かったですね。なるほどこういう使い方もあるのだなあと思います。
 そして最近はこういう教材の画像やプロフ画像の『鬼滅の刃』率がめちゃ高いです。さすがの大人気。S3が鬼殺隊と十二鬼月のイラストで埋め尽くされていく……!

kimetsu.com

イベントに行ってみる

 SAA対策時もAWS Summitを覗いてきて刺激になったのですが、今回はユーザーグループのJAWS-UG初心者支部#20のイベントに行ってみました。イベントレポがあります。

iwasiman.hatenablog.com

 この回の大まかな趣旨はアウトプットしながらジョーズに楽しく学ぶといいYo!という話だったので技術の話はほとんどなかったのですが(笑)、AWS勢に触れるのは刺激になりました。
またAWS入門を通じてお世話になったオレンジ本や下で述べる本の作者でもある、ササキさん(id:dkfj)にリアルでご挨拶することができました。

 Facebookの投稿で知ったのですがAWS公式に掲載されているAWSマンガでも、Season3で遂にJAWS-UGが登場したそうです。現実と仮想が交わっていく…

aws.amazon.com

ネット上の合格エントリを参考にする

 SAAの時と同じくかなりあちこち見て回って、はてなスターをつけたりQiitaならいいねストックを蹂躙して回りました。貴重な記録を残してくれた先人の皆さんありがとうございます。
 やはりネット上の記事の豊富さも CLF≒SAA≧DVASOA な感じで、SAAに比べると少し減りますね。

学習時間の確保に立ち向かう

 SAA合格エントリにこの話を書いたら共感の声があったりして、皆さんそうなんだなあと改めて思いました。
 SAA突破作戦の時は仕事のピークがあって色々あったのですが、今回のDVA対策の時は仕事の方もだいぶ落ち着いてきて見通しが立てやすい状況でした。タスクを細分化して極力効率化を図り、自分用のメモとか情報が集約してブラウザから見られるようになった後は余った時間や作業の合間に時々見たりしながら進めました。
 また僕は通勤電車の中をよく技術書の読書やPodcastに充てるのですが、Udemyの模試講座は電車の中でもスマホからやれるのも大きかったですね。自分用のメモや英語の模試講座の翻訳結果はSimplenoteで保存、表がほしい数値のまとめはGoogle Spread Sheetでやっていきました。

 そして相変わらず最大の難関が休日の学習時間の確保なんですが(笑)、こちらもSAAの時と同じように対応していきました。まあ夏に比べると11-12月の秋冬は過ごしやすいので楽でしたね。また子供の体力がついてきて生活パターンが変わり、公園とか外に連れ出す→その後昼寝しない→夜に早めに寝る のパターンが加わりました。こんな時はしめしめとばかりに、夜の邪魔の入らない時間を学習に充てたりしました。
 また、本番試験を受ける前週に子供が熱を出して有休をとって看病したりするハプニングもあったのですが、こんな日も寝かせた後は実は学習が捗ったりすることもありました。

学習の流れ

やらなかったこと:WHIZLABS

 各種合格エントリでもUdemyと並んでよく名が挙がる英語の学習サイトWHIZLABS。こちらもDVA対策の時はやってみようと思って英語のサンプル問題を見たのですが……問題文も選択肢もブラウザ上でテキストの選択はできるのですがコピー不可! これだとGoogle翻訳にコピペで繋げられない!ということで当時は諦めました。

※実はこれ、ブラウザ上のWebページでなくChrome拡張機能Google翻訳だとハックできる手段があるのですが、僕がそれに気付くのはDVAの後のSOA対策を始めようとした時でした……。
 日本円2000円程度で沢山問題が解けるし、総合的な学習サイトであるUdemyに比べると講座はIT分野に集中、UIも今風っぽい(?)お洒落感があってエンジニア向けです。WHIZLABSは学習の選択肢として十分アリかと思います。
なお支払いはクレジットカード直でなく、PayPalのようなオンライン決済サービスが間に必要なのでご注意ください。

www.whizlabs.com

Udemyの講座で学ぶ

 SAA攻略作戦でもAWS基礎を一通り押さえたあと最終的に一番役立ったのはUdemyだったので、今回は最初からUdemyを中心に学習を組み立て、分からないところでリンク先の公式やらに飛ぶという段取りです。
しょっちゅうやっているセールの値段が定価なのでは説が囁かれていますが、例によって今回も全部セールの時に購入しました。

Ultimate AWS Certified Developer Associate 2020 - NEW!

 Udemyで学んでいる方にはおなじみ(な気がする)ヒゲのお兄さん、Stephane Maarekさんによるベストセラーの人気講座。この方はAWS以外にもクラウドやBig Data系でいろいろ講座を出していますがどれもぶっちぎりの高評価で、なんかもうUdemyの講座業だけで食っていけてるんじゃないかと勝手に思っています。AWS対策での定番講座です。
 途中の動画は全部飛ばして最後の模擬試験だけGoogle翻訳しながらやり、1周目は冒頭に上げた通り正答56%程度。解説のテキストも丁寧なのでこれまたGoogle翻訳して理解を深め、他の講座も学び、2周目は78%に上昇しました。
 Udemyの模試類は問題文は選択コピーできるのでGoogle翻訳に渡せるのですが、ラジオボタン/チェックボックスの選択肢のテキストは選択できないんですよね。DVA資格の模試では、SAAと同じく選択肢はサービス名や機能名など単語レベルが多いので、ここは何とかなります。なおSOA資格の問題は選択肢が長くて罠です…

AWS Certified Developer Associate 2020 [4 Practice Tests]

 こちらも同じくStephane Maarekさんによる評価の高い模試講座。65問のPractice Testが#1~#4……と見せかけてボーナスで33問入りの#5も入っています。各所のDVA合格エントリを見るとこの講座で学んだ方が多いですね。DVAの範囲全体で様々な問題を一通り学ぶことができます。
 1周目は63%, 71%, 57%, 57%, 70%とまだ危ういライン。後半の#3,#4が難しめです。学んで2周目は85%, 82%, 85%, 65%, 88%と#4以外は安全圏に上昇しました。

AWS 認定デベロッパー アソシエイト模擬試験問題集(5回分325問)

 Udemyを定期的にウォッチしていたら出てきたのが待望の日本語版の模試講座。講師のShibataさんはAWS認定対策講座では他にもCLF、SAA、そして最難関の『ソリューションアーキテクト - プロフェッショナル』の講座も出していたり、どれも評価は高いです。
 このエントリ執筆時点でもまだ3回分しか入っていませんが、元から日本語で問題と解説が読めるのはありがたい限り。

 なお模試内容は各AWSサービスの細部まで踏み込んでおり、難易度は高めです。僕も1周目は41%, 43%, 35%という酷い成績。学習して2回目は71%, 71%, 72%まで上昇しました。これAWS認定の本番試験より難しめなんじゃないかな?となんとなく思っていましたが実際そんな感触です。
 またUdemy内でのフィードバックにあるように、ところどころ誤字脱字等あります。
Udemyのいろんな講座を見て分かったのですが英語版の講座でもこれはけっこう同じで、商業本の技術書の完成度と比べると一段低いところにある感じです。これはもうそういうものかと思ってやるしかないでしょう。
【2020/2/22追記】その後模試5回分まで揃い、コスパ的にもさらにオトクになりました。

AWS Certified Developer Associate : Real Tests (2019)

 セールだったので予備にポチった英語の模試講座。65問の模試が6回分入っています。なのですがAWS認定の盾の画像も古いし、やってみたら問題も若干古い気がしたので中止して放置しました。この「Real Tests」のシリーズ、他にもSAA資格やSOA資格の分もあるのですがやっぱり問題が古いです。
 Udemyでいろいろ探索した感触としては、講座を探す際は講座評価4.0、講師評価3.5とか4.0以上がひとつのラインかなと思います。この講座は講座評価3.8、講師評価は3.9でした。

読んだ本

 学習のメインはUdemyと公式など付随情報、サブの副読本という位置づけで本で補強していきました。

認定対策本関連

 多数のアクセスをいただいた当ブログのこの記事にまとめてあります。最近『一夜漬け AWS認定ソリューションアーキテクト アソシエイト 直前対策テキスト』という一夜漬け本が加わりましたね。

iwasiman.hatenablog.com

 このうちDVA対策に直接なるのは『AWS認定アソシエイト3資格対策~ソリューションアーキテクト、デベロッパー、SysOpsアドミニストレーター~』の1冊。
なのですがこの本をただ読んだだけでは受からないと思います。基礎として一読した後、他の情報から学習を続けた方がよいでしょう。またDVAの問題範囲はSAAともけっこう被っているので、他の本含めSAA対策本に書いてあることが意外と通用することもあります。

AWSの薄い本 IAMのマニアックな話

booth.pm

 2019年9月の技術書典7で頒布、AWSを使いこなしているガチ勢な方々からも評価が非常に高かったササキさんのIAMマニアック本。AWSというクラウドプラットフォーム全体でのユーザや権限管理を司るIAM(アイアム)を徹底解説した本です。このIAM周りの問題は、AWS認定でもSAA/DVA/SOA全部でよく出ます。
タイトルに「マニアック」とありますが変則的な使い方を書いているわけではなく、どんなサービスやミドルウェアやアプリケーションでもたいてい難しくてめんどくさい権限管理周りの正しい使い方、高度な運用をしっかり解説しています。adminやrootで全部済ませちゃうようななんちゃって運用、AWSの世界でも同じなのだなあと思います。
 僕レベルの入門者からすると、IAM周りの難しさの度合いが分かるという収穫もありました。自分からすると「難しすぎてさっぱり分からん!」ではなくて「この調子で学習を続ければそのうちもっと理解していけるだろう」という、IAMチョットワカル状態が先の方に見えてきました。
 ネットの感想としてはSRE NEXTなどでもご活躍中の服バカさん(id:fukubaka0825)のQiita記事、そしてAWSといえばおなじみクラスメソッドさんの書評記事がはてなブックマークを席巻していましたね。

qiita.com dev.classmethod.jp

Amazon Web Services パターン別構築・運用ガイド 改訂第2版

 怒涛の500ページ弱、発売当時はAWSの分厚い本」として有名になった(らしい)、こちらもササキさんこと佐々木拓郎さんらによる定番本。売上1万部を超え、2018年に2版に改定されて最新情報が入っています。AWSとは何ぞやから始まりCLIを含めた利用準備、よく使う定番サービスを使ったパターン別の構築、セキュリティ……と一通りのことが体系的に揃っています。
 資格対策本だけでは知らないこともあるので基礎から一通り押さえようと思い、電子版で読了しました。AWS認定に無理やり当てはめると、どちらかいうとSAA資格の範疇ですが、半分ぐらいはDVA資格にも関わってきます。
 SAA合格後に読むとだいぶスラスラ読めるようになりました。資格対策とはまた違った切り口で情報を取得することができ学びになります。思った通り、ちゃんと知らなかったことがけっこうありました。

 また本書はAWS CLIのコマンドも管理コンソールの実際の画面も、実際の使い方に立った図解と解説が豊富です。僕はハンズオンをやる時間がなくて集合研修以来実物を弄れていないという弱点があったのですが、だいぶイメージが湧きました。本書を読む頃にはAWS基礎は理解してきていたので、定番サービスについてはだいたい想像していた通りの画面が出てきた感じです。
 入門者で時間がない方はこういう本を使って、実際の画面を動かした気になって理解するというのも学習手法としてはアリかなと思います。
なお本当に初めてAWSを知る方には、物理的な圧迫感も大きいのでもうちょっと薄くて読破しやすい本から始めた方がよいかと思います。

Amazon Web Services クラウドネイティブ・アプリケーション開発技法

 続いて読んだのがこちら、同じくササキさんの佐々木拓郎さんらによる書籍。こちらも怒涛の600ページ越え、一部では「鈍器本」として有名になった(らしい)第二弾です。
 タイトル通り題材はがっつりサーバーレス。アプリケーションエンジニア向けに、クラウドネイティブなアーキテクチャ上での開発や関連サービスをしっかり解説しています。出てくるサービスもAPI Gateway/Lambda/DynamoDB/Cognito... とまさしくDVA資格のメインどころ。後半に出てくるIoT、Machine Learning、Mobile Hub、DeviceFarmなど一部を除くと、ほとんど試験に出る範囲です。
 最初の方でクラウドネイティブなアーキテクチャについてしっかり解説しているのが勉強になります。資格対策とは違う切り口で各主要サービスも深掘りしていて知識を補強できます。
 たとえば、DVA試験でけっこうなボリュームで必ず出るNoSQLデータベースのDynamoDB。グローバルセカンダリインデックス(GSI)とローカルセカンダリインデックス(LSI)周りは最初なかなか分かりにくいのですが、本書を読むとRDBであらかじめ作っておく検索用のビューのようなものだ……というメタファーがあり、RDBわかるマンとしてはあーなるほど!と腑に落ちて納得しました。

 そして圧巻が600ページの理由にもなっている4章。各サービスを組み合わせたクラウドネイティブなアプリ開発事例がコード例を含んで11パターンも掲載されています。サンプルコードはすべてGitHub掲載で合計30万行ぐらいあるそうで苦労が偲ばれます。AWS認定試験ではここまで細かくは出ないので、僕も開発の機会がある時にもう一度見ることにして、大まかに眺めていきながら……というあたりで試験本番になりました。
 巻末Appendixにはアプリとインフラの垣根を越えて越境しよう!というエモ話もあり、まさにクラウドネイティブの在り方に触れられる本です。

 本書を読み終わった時に、著者陣のササキさんから内容が古くなっていて申し訳ない...というような反応をTwitterで頂きました。確かに出版が2016年、2019-2020年現在からすると一部古いところもあります。例えばLambda関数で使えるプログラム言語は本書では2016年3月時点でNode.js(JavaScript)/Java/Pythonの3つ、と説明されています。
(現在はさらに+してGo/Ruby/.NET Core経由のC#、さらにカスタムランタイムの機能で大抵の言語は対応可能です。)
 まあこのへんは変化の速い領域の宿命ですし、逆にクラウドネイティブなアーキテクチャの本質は変わらないから本にも価値はあるわけで、本+最新情報はWebの両輪で、とやっていくしかないのかなと思います。発売の頃の一連のブログ記事がこちら。

 AWS公式でLabmdaが登場したのが2014年。そして上のような記事やこの2冊の本のネット上の感想を見ていくと、2015〜2016年近辺の頃は、AWSが単なるインフラや仮想サーバーのサービスでなくその先にサーバーレスがあると、当時既にAWSを使っていた先進的なユーザの間でも徐々に着目されていった時代なのかなと思います。

 ちなみにDVA受験が終わったあとは id:ketancho_jpさんらも加わった『Amazon Web Services 業務システム設計・移行ガイド』も読んでシリーズ3冊読破しました。

 各所の合格エントリ系記事を拝見すると、試験対策以外にハンズオンなど実際に手を動かす学習で点と点が繋がって線になり、確かな知識に繋がった…などの話があります。
僕はハンズオンの時間がない分を本で補完した感じですが、試験対策本や模試以外にも入門本や勉強会のLT資料やAWS公式、各所のブログなどなど、様々な切り口の情報から試験範囲の事柄を捉え直していくのもひとつのポイントかなと思います。

サブで読んだ本

 2019年9月開催の技術書典7ではAWS関連の本がけっこう出たので、こちらも各種拝見しました。

メディアドゥさんからまたまた無料配布の『Tech Do Book』の第2弾もAWSスペシャル。

booth.pm

マネーフォワードさんの『Money Foward Techbook #1』もAmazon ECSの話なんかがありました。

techbookfest.org

id:karoten512 のかろてんさんの『AWSなのに、エモい。』も、VPC周りの構築などAWSの基礎が分かっているとより笑えます。作中にはAWS Loftなど実在の場所も登場します。よくこんな話思いつくのだぜ……!

booth.pm

id:vtryo のVTRyoさんの『誰も知らないエンドポイント ~Web API編~』は厳密にはAWSには限定していない青春小説ですが、API Gatewayの仕組みなんかとは深く関連しています。ライトノベルの「俺ガイル」シリーズあたりが好きな方には特にオヌヌメです。作中で主人公たちを助ける重要な役どころのあの先生、ワイの中ではビジュアルが平塚先生に脳内変換されていたのだぜ……!

booth.pm

服バカさんの『GoとAWS CDKで作る本格SlackBot入門』はそのままSlack上のキー打ち込みでBotと対話しながらAWSを動かせるようにする仕組みの作り方の本。Lambda関数ってこんな風に書くんだーとイメージが湧きます。

booth.pm

 他、AWSガチ勢には非常に評価の高い『Pragmatic Terraform on AWS』などもありましたが、自分にはレベルが高すぎるのでひとまず敬遠しました。(笑)

 なお2020/2/29~3/1開催の技術書典8でもAWSの濃い本が並びます。この『Pragmatic Terraform on AWS』改め商業本『実践Terraform』の著者である@tmknomさんの『クラウド破産を回避するAWS実践ガイド』は主題の破産回避もさることながら「学び方を学ぶ」セクションがあるのが入門中の身としては注目。
今度はチームになって4倍濃くなったササキさんのところは『AWSの薄い本Ⅱ アカウントセキュリティのベーシックセオリー』など濃ゆい4冊の新刊のラインナップ。電子版でゲットするで……!

nekopunch.hatenablog.com blog.takuros.net

公式模試を受ける

 DVA合格までの道のりのことに話を戻して、各所のDVA合格エントリでも「公式模試を必ず受けよう!」の話はよく出てきます。DVA攻略作戦を11月に開始して1か月経った12月初めに自腹で受験しました。
 結果は自己採点して20問中16問の正答率80%。おそらく合格圏内です。DVA試験範囲は一通りやってきて、そろそろ大まかには大丈夫かなという感触はあったのでその通りの結果になりました。ここで本試験も申し込むことにしました。

 さァここで血気に逸って本試験は来週に挑戦……といきたいところですが、当方はガンダムではなく性能の限られた量産機に乗っている身。古参の老兵は慎重にバッファを積んで一撃必中で攻略を続けたいところ。3週間後の12/26に受験日を設定してその日は有休をとり、対策の方は模試の2周目や分からないところの復習など仕上げにかかることにしました。
 案の定、この3週間の間に仕事でも色々あったり僕が風邪気味で会社の忘年会をキャンセルしたり、子供が熱を出したり、アマ●ンで買ったプレゼントをサンタさんの代わりに極秘裏に枕元にセットするイベントがあったりする訳ですが、諸々乗り越えて無事当日となりました。

 ちなみにAWS認定保持者の特典として、本試験や公式模試で使える50%オフクーポンがあります。SAA合格時に僕もこれをもらっているのですが、使うのを完全に忘れていましたw

試験当日

 監視にまつわるアレソレがないと分かったので、場所は前回と同じ「新宿駅前テストセンター(新宿南口)」にしました。2回目となるともう慣れたものです。

 本番のDVA試験問題は模試講座などでみてきた問題とまったく同じものはほとんど出ませんでした。今まで学んできたことを応用すると解ける問題、また逆に今まで学んできたことから誤った選択肢が誤っていると導けるので消去法で解ける問題が多かったです。ある意味正しいベンダー資格の問題といえるでしょう。
 きちんと準備してきた多くの方がそうであるように、だいたい60分弱で65問最後まで終了。ここまでで僕自身が明確に分からないと思った問題が6問ほど。まあ実際はもっと間違ってるはずなので全体を見直して終わりに。必ず一度未回答があると警告が出るのがバグっぽい気がするアンケートを答え終え、完全終了。
 合格できる状態を作り出してから受験したのでたぶん大丈夫だろうという感触はあったのですが、無事合格となりました。

f:id:iwasiman:20191228114709p:plain

試験まとめ

得点の話

 翌日届いた試験結果を見るとスコアは845点。100~1000点で全問不正解でも100点らしいので、900点満点で65問として900/65=約13.8点/1問。(845-100)点/13.8点=53.99問でおそらく54問程度正解。分からなかった6問以外も5問ぐらい間違っていた計算になります。(なお実際の配点は非公開、65問均等ではなく選択肢が複数ある問題は配分が大きいと思われます)
 54問/65問=83%で本番試験が8割超え。Udemyや公式など模試類でコンスタントに8割行けるようになれば本番もだいたい8割行ける、というのがSAA受験の感触から分かったのですが、DVAもその通りの結果となりました。

f:id:iwasiman:20200208192321p:plain:w500

費用:1万ちょい

 技術書典の本は資格対策ではないので省きます。セール時に狙って買ったUdemyが計6000円+本+公式模試2200円+本番試験16500円で合計して3.3万。
このうち本の『Amazon Web Services パターン別構築・運用ガイド 改訂第2版』はこのブログの収益で0円(ドヤァ...)、本番試験は会社で申請して費用が出るので削って、最終的に約1.3万円となりました。

学習期間と時間:2ヶ月弱65-70H

 11月に開始して受けたのが12月末で8週間、2ヶ月弱。すべて合計すると学習時間は69.75H。本は副読本だったので半分として集計すると65.25H。だいたい65−70Hとなりました。SAAのときは80H以上だったのが若干減りましたが、それでもけっこうかかりました。
 ネット上の合格エントリを見るとSAA合格までの学習時間は、数日とか1週間で取れる凄い人を除くとだいたい40−50Hぐらいが中央値な感じがあり、DVAも同様かと思います。薄く長くスケジューリングする必要がある分、やっぱりけっこうかかっちゃいましたね。
 月別に見ると11月が37.5Hで12月が32.25Hで、だいたい1日1H月で30Hの目標通りに実行したことになりました。

デベロッパー - アソシエイト試験所感

全体の所感

★主な試験範囲のサービス群にAPI Gateway/Lambda関数/SQS/SNS/Lambda/Kinesisなどなどが並んでいるからというのもありますが、クラウド上のデベロッパーの舞台は完全にサーバーレスですね。サーバーレス激推しのクラウドネイティブ祭り開催中です。

★拝見したQiitaだったかの合格エントリに、SAAは設問状況に合うサービスを答える問題が多いから何となくでも解けるが、DVAはその事柄を知らないとまったく解けない、逆に知っていると一瞬で解ける問題が多い…というような感想がありました。
やってみて確かにそうだと思います。こうして各サービスを深く知る上でAPI名や数字周りは暗記になってしまうところもありますが、まあ試験だからしょうがないかなと。

★いわゆるCode3兄弟(CodeBuild/CodeCommit/CodeDeploy、ついでにCodeStar)によるビルドやデプロイの自動化、CloudFormation/Elastic Beanstalkによるリソース自動構築周りの問題もけっこう出ます。DevOpsのやCI/CDの文脈をまったく知らない方は、なにかの手段で知っておいた方がよいと思います。

AWS上でコンテナを管理するECS、管理の部分がKubernetesになったEKSやECRなどなど、コンテナ周りの問題もコンスタントに出題されます。恥ずかしながら僕もKubernetes周りをまだちゃんと理解しきれてない自覚があるので、このへんも今後深堀りしないとなあと思いました。

★Udemyのところで触れましたが、模試講座の問題など、元から英語の情報でも、サービス名が微妙に表記揺れがあったり用語が統一されてなかったりで気になるところはありました。
AWS関係の情報で日本語の不自由さを感じることが多いのは元の英語情報でも同じなのだなと分かりました。このへんはもう、そういうものだと思った方がよいでしょう。

 なお本番試験、SAA試験ではところどころ日本語が不自由だったので今回も密かに楽しみにしていたのですが(おい)、2019年12月末に受けたDVA試験の時点でおかしな日本語はほぼ見当たりませんでした。この3ヶ月の間にAWS認定のローカリゼーションも進んでいるようです。このへんの進化の速さはさすがだと思います。

オンプレの開発経験も活かせる話

 経験のあるエンジニアは明文化されていなくても暗黙知のような経験の積み重ねからくる問題解決の技法を感覚的に自然と使っていたりして、このへんが活かせるシーンはIT業界の現場ではよくあります。DVA資格の主戦場は新しいサーバーレスの地平ですが、けっこう活かせる所はあるなと思いました。思いつくままに書いてみると…

  • 頻出のDynamoDB。パフォーマンス的に悪いテーブル全体検索のAPIScanRDBの世界でもインデックスが効かない全レコード検索をフルスキャンと言ったりしますが、これと同じ。
  • テーブルから項目(≒レコード)を取り出すAPIGetItem、複数取り出すのがBatchGetItem。ここから、複数のものに対して同じ操作を行う時はAPI名の先頭に接頭辞Batchがつくのだなと類推できる。他のAWSサービスでも似たような命名規則だったりする。IAMポリシー周りのAPI名も規則性がある。ちなみにAWSAPIの基本命名規則はアッパーキャメルケースのようです。
  • テーブルの全項目でなく一部を取りたいときにAWS CLIや各種言語のコードから使うのが--projection-expression。これも、現場では使わないけど情報処理試験では出てくるDB用語の「射影」だなと気づけば解ける。
  • DynamoDBの効果的なテーブル設計。キーになる属性はその値さえあれば判別できるUniqueな属性を選べばよいから、**_idになる。RDBの仕組みを知っていれば一瞬で解ける。
  • S3のサーバサイド暗号化でポリシーやHTTPヘッダに出てくる値は、通例に習って単語を省略しない英文でx-amz-server-side-encryption-ABCとか。暗号化のMD5なんかも知っている人には馴染みの単語。
  • Elastic Beanstalkの設定ファイル名周りの問題。ルート直下に.config/というディレクトリ名だと一般的すぎて他の仕組みと競合しそうなので、.ebextensions/の下だと類推できる。サービスごとに設定ファイルの拡張子が違うのも変だなと思えば、一括で.cofigとか.yamlとかだと分かって消去法で解いていけたりする。

などなど。開発の世界での一般的なお作法や規則性はだいたい雲海に広がるAWSワールドでも通用します。逆にコードを書いて開発する仕事をやっていないインフラ畑やネットワーク専門の方は、DVA資格の学習では最初にちょっと苦戦するかもしれません。

AWS最強理論の応用

 以前に書いたSAA合格エントリの最後に、AWS最強理論が問題を解く際に使えるというネタを書きました。なんかもう公式の方スンマセンという感じですが、この話はDVA資格でも一部形を変えて応用できるかと思います。

iwasiman.hatenablog.com

  • なにかを解決するのにAWS内に閉じた解決方法が必ずあるというのは同じですが、カスタムスクリプトサードパーティのライブラリを使う機会はDVAだと出てきます。EC2を詳細に見たいので監視するので1分ごとにCloudWatchの詳細モニタリングを有効化してメモリの値を取るとか。また監視の領域だとZabbixやKibanaなどAWS以外のOSSツールを組み合わせてダッシュボードで可視化したりするシーンがよく登場します。
  • 常に自動化で省力化し、インスタンスやユーザごとに個別にめんどくさい何かをしたりする人海戦術のやり方はしないのがクラウドのお作法なのは同じ。CloudFormationの問題はけっこう出ます。
  • IAMはAWS全体を通して重要、AWS認定でも重要。何かが繋がらなかったり動かなかったらまずIAM周りを疑うのは、DVA試験でもだいたい同じです。
  • RDSの中でAurora推しなのはSAA試験でもそうでしたが、DVA試験だとRDSの話はあまり出ないのでAuroraの名は出てきません。RDSとDynamoDBでどちらが適しているか、で答えはDynamoDB、のパターンが非常に多いです。
  • 対象が銀行の業務システムだったリ、DB処理の途中で問題が起こったら全中断したい「トランザクション」の要素があったらDynamoDBでなくRDS、がSAAでの問題の解き方でした。
    しかしDVAになるとDynamoDBが正解のパターンも出てきます。なんと2018年には「DynamoDBトランザクションという機能がリリースされている! これ学習して初めて知りました。RDBとNoSQLの垣根がどんどん溶けていきますね…

dev.classmethod.jp

  • SAA試験でも全体的にサーバーレス推しでしたが、DVA試験になるとさらにサーバーレス激推しの猛プッシュです。迷ったらオンプレ的解法よりLambda関数です。
  • オンプレ的伝統的解法と新しい技術要素の解法があったら新しい方を選ぶ、の傾向はDVAだとさらに強まります。気分はボーン・イン・ザ・クラウド、ネイティブ生まれの最先端を疾走するDevOpsエンジニア(の見習い)だぜ!と気持ちをアゲながら答えませう。
DVAの問題に登場するプログラム言語やフレームワーク

公式の受験ガイドにはDVAの推奨される知識と経験として、

最低でも 1 つのハイレベルプログラム言語についての深い知識

と何やらタツジン級プログラマーを期待するようなことが書いてありますが、特定言語を極めている必要は別にありません。この文脈での「ハイレベル」とは、低レイヤーを取り扱えるC言語に対しての抽象化がより進んだ高級言語の話ですね。
本番や模擬試験の設問で様々な言語や技術のキーワード自体は登場しますが、プログラム言語が何かによって答えが変わることはなく、あくまでシチュエーションの背景という位置づけです。

 問題にコードの実物が出てくることもありますが(主にPython)、何かしらプログラミング経験のある方ならたぶん雰囲気で何をやっているのか分かるレベルです。経験が浅い方もプログラマーとしてのスキルはあまり気にせず、チャレンジしていただければと思います。
 今まで主に模試の問題の中で見たことのある、プログラム言語類や技術的キーワードについてあげてみます。

  • EC2上で動くWebアプリの状況で動かしているWebサーバーは、Apacheかnginx。C#が出るときだけたまにIIS
  • Javaは伝統的な言語としてWebアプリでも、AWS上ならECSの中やElastic Beanstalkで構築したバッチ処理環境の中で動くプログラムとしてよく登場します。
  • Javaフレームワークの名前までは出てきません。たまーにSpringとかあったような。
  • C#ASP.NETの名とセットでWebアプリで使われている言語でよく登場。WebサーバーがIIS必須になるのでEC2インスタンスWindows版が必要……というパターンが多いです。その後進化した.NET CoreやASP.NET CoreになるとLinux上でも動くようになりますが、このへんの新しめのキーワードは出てきません。
  • Lambda関数の問題でもほとんどC#は出てこない印象です。実際の案件でもそこまでMicrosoftファミリーの技術中心にするなら、クラウドプラットフォーム自体の選定をAWSでなく Microsoft Azureへ...となるかと思います。
  • Python機械学習のプログラム、Wbアプリのサーバーサイド、Lambda関数の題材でも頻繁に登場。流石にメジャーです。
  • 特にEC2上で動いているWebアプリとして、Django Application のようにPythonなしでDjangoの名前だけでもよく登場します。日本だとそれほど浸透していない感がありますが、海外ではそれだけメジャーということ? Udemy自体がDjangoで作られているからかもしれません。
  • Rubyは認定試験の問題全体を通してほとんど登場せず。日本国内では根強い人気でコミュニティも活発ですが、グローバルで見るともうそうでもないということでしょうか。
  • PHPはEC2インスタンスの上で動いているWebアプリケーションや、ブログやWebサイトを作る仕組みの実装として時々登場。名前は出てきませんがたぶんWordPressを想定しているのでしょうか。
  • バッチでPHPは登場せず。またLaravelやCakePHP, SymfonyなどWebアプリのフレームワーク名までは出てきません。
  • Node.jsを入れたJavaScriptは、Webアプリのサーバーサイド(バックエンド)、Lambda関数の題材でよく登場。Pythonと並んで流石にメジャーです。サーバーサイドのExpressなどフレームワーク名までは出てきません。また割と頻繁に NodeJSとかNodeJsとか表記揺れがあるのが微妙に気になりますw
  • クライアントサイド(フロントエンド)の画面実装でもJavaScriptはよく登場。AWSではEC2インスタンスの上で動くWebアプリの画面側担当でなく、S3にアップロードした静的HTMLファイルの中のJSがこれでというパターンが多いです。
  • そしてフロントエンドJSフレームワーク名では、意外にもAngularが時々問題文に登場。フロントエンドFWの中では歴史が長いからでしょうか。そして日本でも最近あまり聞かない気がする「MEANスタック」が一緒に出てきたりします。(MongoDB+Express+Angular(JS)+Node.js、Angularアプリを作るときの技術スタック組み合わせのこと)
  • フレームワーク名でAngularは出てくるけどReactやVue.jsを見たことがありません。Vue.jsは中国や日本で特に人気だからなのは分かりますが、現状世界首位のはずのReactが出てこないのは意外かも。
  • 伝統のjQueryもあまり問題では見ません。JavaScriptのくくりの中に含まれる形です。
  • iOSアプリ、Androidアプリが設問の状況に出てくることもよくありますが、モバイルアプリMobile Appでひとくくりにされていることが多いです。開発言語やフレームワーククロスプラットフォーム開発の技術の名前までは出てきません。だいたいCognitoに認証を任せるとかCognito Sync/App Syncでデバイスのデータを同期する、ゲームスコアの迅速な反映にDynamoDBやElastiCacheを使う…など、AWSにできるところを任せてうまく開発していくといった具合。

おわりに

 というわけでDVA攻略作戦は2ヶ月でミッションコンプリートしました。SAAに続いて2回目で様子がわかってきたこともあり、だいたい予定通りに諸々進んだ感じです。
 Udemy講座の講師の方々、読んだ商業本や技術同人誌の著者陣の方々、様々な形でインターネット上に有益な情報を発信してくれたAWS勢の先人の方々、面識があってもなくても様々な形で僕が勝手に刺激を受けているクラウド勢の先人の方々、Twitter上で応援してくれたりお祝いしてくれた皆様に感謝します。

 アソシエイト3兄弟がだいぶ被っているのが分かったので、ついでにSysOpsアドミニストレーター - アソシエイト(SOA)も攻略するか…と2020年年明けからゆっくり活動を始めたのですが、模試など情報に日本語がほとんどない、問題文と選択肢が3兄弟の中で一番長い(これがけっこう痛いw)、など手こずっています。そして仕事でちょいと別領域の新しいプロジェクトが始まって出鼻をくじかれた状態になり、ちょっと一旦様子見にしているところです。
DVA挑戦を通じて知ることのできたクラウドネイティブなアーキテクチャ、サーバーレス周りは、今後も深堀っていきたいと思います。

 それではこれからAWS認定「デベロッパー - アソシエイト」資格に挑戦する皆さんにも、雲海とサーバーレスのご加護のありますように… (`・ω・́)ゝビシッ