AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

12月9日、10日開催!キッチンハッカソン2017の見どころを紹介!


こんにちは。百木田です。

すでに告知しておりますが2017年12月9日(土)、10日(日)と2日間に渡り、Oisix.daichiさんとハンズラボが共催でキッチンハッカソン2017を実施します!

Connpassイベントページ

テーマはその名の通りキッチン!

Oisix.daichiさんは食材を取り扱っており、ハンズは豊富なキッチン用品を取り扱っているということで、今回はキッチンをテーマにやってみようということになりました。
普段、キッチンに立つ方は、こんなのあったらいいのになー、を実現してみてください!料理をしない方でも、こんなアプリあったら料理するかも?とか、もしくは料理する方のお悩みを聞いて、それならこうできるのでは?とかをこのハッカソンで実現してみてください。
技術テーマは特に設けない予定なので、モバイルアプリ、Webアプリ、IoT、AI、ロボット、フィンテックなど、興味のあるものに挑戦してみてください!

会場はOisix.daichiさんの新オフィス!会社にキッチンだと!?




先日も関係者が集まり、そちらのオフィスにお邪魔してキックオフミーティングをしてきたのですが、とてもおしゃれな空間でテンションあがりました!
そしてなんと同じビルの1階にはキッチンが併設されており、料理ができるようになっているんです!
ミーティング後にキッチンを見学させていただいたのですが、その時も料理をしている最中で、会社の一室で本格的に料理をしている光景に驚きました。
写真はそのキッチンルームに併設されている作業スペースです!このスペースでハックしてもらう予定です!

Oisix.daichiさんの食材を使った手料理!

ハッカソン当日はそのキッチンでOisix.daichiさんのスタッフの方々が調理し、料理を振る舞っていただけるとのことで、そちらもハッカソンとともにお楽しみいただけます!

豪華審査員!嬉しい賞品も??

審査員にはOisix.daichi執行役員の奥谷孝司氏、数々のハッカソンを開催したり、大規模なコミュニティとなっているIoTLTのオーガナイザーでもあるdotstudio CEO 菅原のびすけ氏東急ハンズCIO(最高情報責任者)で弊社CEOの長谷川秀樹、他、など豪華メンバーを予定しているのでそちらもお楽しみに!!

優勝チームおよび優秀チームには、Oisix.daichiさんとハンズから、両社ならではの賞品を予定していますのでぜひ優勝目指してハックしてください!

詳細は申し込みページからご覧ください!

Connpassイベントページ


Amazon Alexa日本上陸に合わせてAlexaスキルを開発しました!


AWSチームの鹿倉です。

2017年10月2日にアマゾンが「Alexa」、「Amazon Echo」を年内に日本で展開のすることを発表しました。そして、我々ハンズラボも日本上陸に合わせて東急ハンズのAlexaスキルの開発に早期に取り組みました。このブログでは今回初めてAlexaスキルの開発をどのように行ったか、またその時出てきた課題などについて共有したいと思います。

Alexaスキル開発の流れ

 

まず、開発〜ローンチまでの主な流れは以下の通りです。

  1. Amazonの開発者コンソールからAlexaスキルを新規追加する。
  2. デバイス(Amazon Echo)をセットアップする。(開発者コンソールにシュミレーターが用意されているので、ひとまずデバイスは無くても開発は進められます)
  3. プログラムを開発する(AWS LambdaもしくはHTTPSベースのAPI)。
  4. テスト(実機でテスト&開発者コンソールのシュミレーターでテスト)
  5. Amazonに申請

 

また、今回はローンチまでの期間が短かったので、以下の機能に絞りました。

  • 各店舗のイベント情報の紹介
  • おすすめ商品の紹介
  • 店舗では売っていないネット限定商品の紹介

 

まずはプロトタイプを作成し、ブラッシュアップしていくスタイルで開発を進めました。プロトタイプはエンジニア1人で2〜3週間ほどで完成させたのですが、実際に試してみると色々問題が浮かび上がってきました。弊社でも引き続き改善を行っているところではありますが、いくつか分かっている問題、改善ポイントについてご紹介いたします。

ユーザーの発話パターンは多種多様であること

 

当たり前の話ですが、ユーザがなんと発話するのかにはいろいろなパターンがあります。例えば、イベント情報を聞く時、「渋谷のイベントを教えて」、「今週のイベントは何?」など場所を知りたいケースや時期を知りたいケースなど、まだ単純に「イベント」とだけ言うユーザーもいます。

Alexaではあらかじめユーザが発話しそうな発話例(サンプル発話)を用意しておく必要があります。「○○のイベントを教えて」と言われたらイベント情報を伝える処理をするというような登録が必要になるのです。社内メンバーにもいろいろ試してもらいながら、できるだけ様々なパターンでも応答できるようにサンプル発話を考えました。また、開発時のサンプルは社内メンバーに限られていたので今後運用フェーズで実際にユーザはどのようにAlexaと会話しているのかデータを収集して改善していくポイントだと考えています。

今あるコンテンツが音声発話した時に聞きづらい

 

今回、イベント情報やおすすめ商品を紹介する機能を作成しましたが、機能としては単純にWebで掲載している情報(文章)をAlexaに読ませているだけです。

これがなんとも、、、音声ではかなり聞きづらいし、長い・・・開発する前からなんとなく想定していたのですが、Alexaが勝手に学習してめちゃくちゃいい感じに発話してくれるのではないかと淡い期待をして開発を進めました。たしかにAlexaはすごくて開発中もどんどん発話がいい感じになっていきます。が、さすがに商品名や商品説明とかは聞きづらいです。(特にハンズはマニアックな商品なども含まれるからかもしれませんが)

今後、この機能を充実させるならコンテンツもWebとは別で音声用のコンテンツを用意すべきだと感じました。また、アメリカではディスプレイ付きのデバイスなどもあるらしいので、デバイスが充実してきたら、ディスプレイ&音声で紹介するような機能を提供できれば便利かもしれません。

Webで検索するよりも、会話形式であった方が便利な機能をユーザに提供した方が良い

 

上記で述べた通り、商品紹介など一方的に会話を進める機能は音声インターフェースよりも、今のところWebの方が良いと感じています。

なので、まずは、音声会話で便利な機能を充実させるべきという方向で改善を進めようと考えています。例えば、ハンズであれば、営業時間や在庫確認、お店までの行き方などのお問い合わせをお電話で受けることがあります。このようなお問い合わせ業務をAlexaで提供することで、よりスピーディにお客様の要求に答えれるようにすること。また従業員の方々の負担を軽減することで、トータルでお客様により良いサービスと提供できるのではないかと考えています。

最後に

ハンズラボでは東急ハンズのAlexaスキルを開発しておりますが、合わせて他の事業社様のAlexaスキル開発についても今後承ります。ご興味のある方は是非弊社にお問い合わせください。

弊社へのお問い合わせはコチラ


CodePipelineの進行状況をSlackに通知する


こんにちは。百木田です。
CI、回してますか?

CodePipelineで実行するステージの進行状況を手軽に見たいと思い、Slackに流れるようにしたので共有します。

ポイントとしては、CodePipelineからLambda functionを呼ぶのではなく、CloudWatchイベントでCodePipelineステージのステータスの変化を検知してLambda functionを呼び出します

今回はできるだけシンプルにするために、すでにCodePipelineは作成済みの想定で、すべてのステージにおけるSUCCEEDEDFAILEDのステータスを通知します。なのでCodePipelineに変更は必要ありません。
また、Slack Botを作成しトークンを発行して使っていますがIncomming Webhookでも同じようなことはできるかと思います。

Serverless Frameworkを使ってCloudWatchイベントの設定と、slackに通知するためのLambda functionをデプロイします。

環境

ディレクトリ構成

デプロイ

コードは記事の下の方に書いときます。上記のディレクトリ構成のように配置したらデプロイします。

デプロイできたらCodePipelineを動かしてみます。そうするとslackにこのような通知が来るかと思います。

いつの実行結果なのかをトレースできるようにCodePipelineの実行IDの前半7桁を表示しています。この辺はお好きにカスタマイズしてみてください。

まとめ

CloudWatchイベントの検知がリアルタイムじゃないので、CodePipelineの進行と通知にラグがあったり、前のステージの実行完了と次のステージの実行開始の通知が前後することなどもありますが、実行結果がわかればいいかなくらいの感じなので気にしないことにしてます。

ありがとうございました。

以下、コードたち

status_notification.py

serverless.env.yml

serverless.yml

※ detailのセクションを消すと、すべてのステータスが検知対象になります。


ハンズラボ新卒研修2017〜仮想プロジェクト完了報告〜


こんにちは!ブログに登場しすぎなPOSチームの渡邉です。

暑さも和らぎ、夏嫌いの私にとってはとても嬉しい季節になりました。
ちょっと寒すぎますけどね。寒気さん本気出しすぎ。

さて、今回は2017年度の新卒を代表して、
私渡邉が新卒研修で行われた仮想プロジェクトについて書きますよ!

研修をメインで担当した三井田の記事(こちらこちら)も是非ご覧ください。

三井田の記事では「研修した側」の視点で書かれているので、
私は「研修された側」の視点からお届けします。

ちなみに研修自体は6月いっぱいで終了しています。大遅刻です。すみません。
今は新卒各々配属先のチームで頑張っています!

 

仮想プロジェクトの概要

 

ざっくりいうと、
〜ユーザーの要求に応えられるエンジニア、チームで円滑に開発を進められるエンジニアになるための「仮想プロジェクト」演習〜
です。(雑すぎ?)

AWSチームのリーダーである鹿倉を仮想のお客様とし、新卒社員5名のみで仮想プロジェクトを遂行します。

ハンズラボの新卒研修の定番です。(まだ2年しか経っていませんが)
来年も、再来年も、お題や形態は変化したとしても、この仮想プロジェクト自体は続いて行くと思います。

 

お題

 

今年の新卒研修のお題は、「botを作ってくれ」というものでした。
鹿倉が提示した機能は以下の5つです。

 

要件1〜4:AWSの情報を取得して通知するBot

  1. 特定のタグが付いているインスタンスの一覧を抽出
  2. RI(リザーブドインスタンス)の適用率を抽出
  3. 特定のセキュリティグループに入っていないインスタンスがないかチェック
  4. 特定のインスタンスの情報(OS,インスタンスタイプなど)を入力すると、日本円でオンデマンド、1年RI、3年RIの金額が出力(価格テーブルは常に最新)

 

要件5:東急ハンズのGoogleカレンダーにスケジュール登録したら、自動でハンズラボのGoogleカレンダーにも登録してほしい

弊社社員は、ハンズラボと親会社の東急ハンズ2つのGoogleアカウントを所有しています。そのため、片方のGoogleカレンダーにしか予定を登録してないと、ほかの人がもう片方のアカウントのGoogleカレンダーだけを見て、予定が空いていると勘違いしてしまうことがあります。そこで、東急ハンズのGoogleカレンダーに予定を登録したら自動でハンズラボのGoogleカレンダーにも同じ予定を登録できるようにしてほしい、という要件を挙げました。
(三井田の記事から引用)

要件1〜4について、フロント側の制限は特にありませんでしたが、私たちは最終的にSlackを採用しました。
弊社ではチャットツールとしてSlackを使っていることが大きな理由です。

 

 

完成品

 

いきなりですが、完成品をご紹介します。

 

 

要件1〜4

各要件ごとに1つのSlackBotを作成し、それぞれのbotを以下のように命名しました。

  • 特定のタグが付いているインスタンスの一覧を抽出:たぐたん
  • RI(リザーブドインスタンス)の適用率を抽出:りざたん
  • 特定のセキュリティグループに入っていないインスタンスがないかチェック:せきゅたん
  • 特定のインスタンスの情報(OS,インスタンスタイプなど)を入力すると、日本円でオンデマンド、1年RI、3年RIの金額が出力(価格テーブルは常に最新):まねたん

 

4人合わせて「Labottan」です!!!!!(らぼったん と読みます)

この名前は、弊社公式キャラクターである「らぼたん」をもじりました。
らぼたん↓

 

らぼたんは本来緑色の髪の毛ですが
Labottanのために色違いを用意して、各botのアイコンに使用しました。

また、Labottanは全てAWS Lambda、AWS APIGateway、Slackで構成されています。

まずはbotを動かすリージョンを設定します。

「set」をトリガーに、4つのbotが参照するリージョンを設定できます。

 

 

要件1 たぐたん

 

たぐたんの機能は3つあります。

  1. 「tag」と投稿すると、アカウント内のEC2に登録されているタグのキー一覧を表示

    たぐたんの目的は指定したキーバリューを持つインスタンス情報を見ることなので、
    まずは絞り込みのためにキーの一覧を取得します。

  2. 「tag <key>」と投稿すると、指定されたキーのバリューを一覧で表示(重複無し)

    キーを絞り込んだら、続いてバリューの一覧を取得します。

  3. 「tag <key> <value>」と投稿すると、指定されたキーバリューを持つEC2インスタンスの情報を一覧表示

    キーバリューを指定したことで、目的のインスタンス情報を得ることができます。

トリガーはtagのみではなく、「Tag」「たg」も対応しています。

構成図は以下です。

例えば、同僚の田中さんが管理しているインスタンス情報を確認したいとします。

・あれ?オーナー管理って、「Owner」だっけ?「Name」だっけ?→「Tag」と投稿してキー一覧を取得
・そうだ、Ownerだった。あれ、名前は大文字だっけ?フルネーム?→「Tag Owner」と投稿してバリュー一覧を取得
・そうだ、Tanakaでいいんだ。インスタンス情報は〜→「Tag Owner Tanaka」と投稿して情報を見る

といった使い方ができます。

 

 

要件2 りざたん

 

りざたんの機能は以下です。

・「riu」と投稿すると、購入済みのリザーブドインスタンスの適用率を表示する

RIUは「reserved instance utilization」の略です。
トリガーはriuのみではなく、「RIU」「りう」も対応しています。

構成図は以下です。

「リザーブドインスタンスめっちゃ買ってるけど、ほんとに全部使ってるよね?大丈夫よね?」という時に
パパッと確認する、という使い方ができます。

 

 

要件3 せきゅたん

 

せきゅたんの機能は3つあります。

  1. 「sg」と投稿すると、セキュリティグループ一覧が表示される

    こちらもたぐたんと似ており、セキュリティグループ一覧が表示されます。

  2. 「sg <セキュリティグループ名>」と投稿すると、指定したセキュリティグループの空いているポート番号と、適用されていないインスタンスを表示する
    セキュリティグループが許可するトラフィックを、インバウンド・アウトバウンドそれぞれ確認できます。また、そのセキュリティグループが適用されていないインスタンス一覧を取得できます。

  1. 「sg port <ポート番号>」と投稿すると、指定したポートが空いているセキュリティグループとインスタンス一覧を表示する
    0番ポートが空いているセキュリティグループと、そのセキュリティグループが適用されているインスタンス情報を表示します。

トリガーはsgのみではなく、「SG」も対応しています。

構成図は以下です。

セキュリティグループの見直しをするときは1、
必須のセキュリティグループなのに数がおかしい!どの子だ入ってないのは!というときは2。
8080ポートは開いてちゃいけないから、確認しとこう、というときは3、といった使い方ができます。

 

 

要件4 まねたん

 

まねたんの機能は以下です。

・「price <OSタイプ> <インスタンスタイプ>」と投稿すると、支払い方法ごとに現在の料金が日本円で表示される

構成図は以下です。


客先などで現在の利用料金をサクッと知りたいときに非常に便利!
リアルタイムでAWS使用料(USドル)と日本円のレートを取得し、計算しています。

 

 

要件5

 

東急ハンズのカレンダーとハンズラボのカレンダーで予定を共有・統合したいという要件です。

こちらはAWSではなくgas(Google Apps Script)を使用しました。

構成図は以下です。

15分ごとに発火するトリガーにより、
東急ハンズのGoogleカレンダーのイベントを取得し
そのイベントに招待されている人のハンズラボアカウントをゲストに追加する、という仕組みです。

ハンズラボのカレンダーにも東急ハンズの予定が登録されるようになったので
スケジュールのすれ違いも起こりにくくなった・・・かな?

 

振り返り

 

さて、ここからは振り返りです。
プロジェクトの最終発表会が終わって、打ち上げでどんちゃん騒ぎした翌日に
みんなで(死んだ顔で)ふりかえりをしました。

それを思い出しながら、ひとりふりかえり会をしてみます。

いちばん「成長した」部分

→「5つの要件で1つのプロジェクトだ」という意識が芽生えた
新卒は5名、要件も5個、じゃあひとり1要件でいいよね!ってスタートしたんですが、
自分のタスクでいっぱいいっぱいになって、チームメイトの遅れに「我関せず」な顔をしている時期がありました。
お客様は個人個人に依頼しているわけではなく、会社・チームに依頼しているのに、
「自分の進捗は大丈夫だしいいや」「遅れてるけど自分でなんとかするしかない」って思考になっていました。
最終的には各要件ごとではなく作業内容ごと(テスト班・プレゼン資料作成班)に分かれて作業ができるようになり、
「5つの要件で1つのプロジェクトだ」という連帯感が生まれました。

 

あまり「成長できなかった」部分

→「根回し」
プレゼンや報告会のスケジューリングはギリギリなことが多く、予定を抑えたら抑えっぱなしでした。
事前になんの話をするのか、どんな相談をしたいのかを伝えておくことは最後まであまりできていませんでした。

例として、お客様役の鹿倉にテスト用アカウントを発行してほしいと伝える時に
事前に伝えていたら打ち合わせでアカウントを受け取ることができたかもしれませんが、
打ち合わせでいきなり伝えるので「作ったら連絡します」となり、スケジュールが遅れ・・・

なんてことが最後まで続いてしまいました。

 

いちばん悩んだこと

→コミュニケーション不足による足並みのズレ
(これは私しか思ってないかもしれないんですが)
ひとり1要件でやってしまうと、他の要件には関与しなくていい!という気持ちが生まれて
序盤は特にチームなのに個人制作のようになってしまっていました。
もちろん、制作物やスケジュールに影響も出ますし、何よりも居心地の悪さに悩みました。
夜な夜な三井田にチャットでどうしよう〜助けて〜〜〜(号泣)って散々したなあ・・・今もしてるわ・・・(遠い目
今となってはあの時悩んでよかったと思ってます。今後に活かせそうな話をたくさん聞けました。

 

 

まとめ

 

笑って悩んでぶつかって笑って、とても研修らしい研修になったと新卒ながら思います。

今年の新卒の配属先はバラバラですが、それぞれが先輩に紛れながら頑張れているのは、
「仮想プロジェクトを乗り越えられた」という経験と自信の賜物です。

来年、再来年の仮想プロジェクトはどうなるのかな?
半年後に迎える後輩たちに負けないように、これからも頑張ります!

 

(最終発表会翌日、三井田からのお祝いの花が!さながら卒業式!ありがとうございました!)


AWS SAA合格までのサクセスストーリー


iOSエンジニアとしてひーこら言いながらも、現場にも慣れて心に余裕が生まれてきた9月上旬。
7月に新卒研修を終えてPOSチームに配属されてから、HandsPOSの業務をしっちゃかめっちゃかしつつもなんとかこなしていた。
いきなり業務に携わり、大きな不安を抱えながらもそれなりに頑張ってきた。

しかし、配属から2ヶ月経ったその時、それは突然にやってきたのだ。

OJT。

業務をこなしつつ、それに追加して少しずつ課題を解いていく。
基礎的な技術力や知識量の向上が主な目的だ。

そしてトレーナーは言った。
「渡邉さん、来月中にAWSのSAAとってね。」

SAAとは、AWS初心者がまず取得を目指す資格である。

「大したことない課題じゃん」そう思われる方もいるだろう。
確かに、この資格は難しすぎるわけではなく、ほどほどの難易度だ(と個人的には思っている)。

しかし、わたしは目の前が暗くなっていくのを感じた。
これから始まる勉強は、恐ろしく辛く苦しいものになると、わかったからである。

ここで、私渡邉の略歴を書いておく。
普通科の高校を卒業後、情報系の専門学校でiOSとAndroidでのモバイルアプリ開発を専門に2年間学んだ。
2017年4月にハンズラボに入社。現在社内最年少の21歳である。

専門学校で習ったとはいえ、クライアント側以外の知識は皆無である。
具体的に言うなら、HTTPってなんかの規格でしょ?ポートってなんか穴空いてるんでしょ?くらいのものだ。

正直に言おう。わたしはサーバーサイドやインフラを食わず嫌いしていた。
学生時代も学ぶ機会はあったが、なんとなく避けてきていた。
ついに逃げられなくなった。だから絶望したのである。

しかし、ここで逃げては問題を先延ばしにするだけだとわかっていた。進展はない。
絶望すると同時に、絶対に成し遂げてみせる、そう思っていたのもまた事実なのである。

こうして、私とSAAの戦いは幕を開けた。

chapter1. vs 参考書1周目

AWS SAAの参考書といえば、これが有名だろう。

例にもれず、私もこれをまずは購入した。
持ち運びしやすいサイズ、適度に薄く書き込みしやすい紙、軽さ、全てにおいて最高の参考書だ。

意を決して開いてみる。
リージョンとAZの概念はすんなり理解できた。IAMというものがあるのか。ふーん。
IDフェデレーション。フェデレーションってなんだ。
ほう、そんな認証方法があるのか。ふーん。

1周目なんて、わからない言葉を都度調べて書き込んで、
書かれている日本語を私が理解できる言語に噛み砕くだけだ。作業ゲー以外のなにものでもない。
眠くなる。寝たい。やめたい。しかし、やらなければならない。
今辛いのは、今まで奴らから逃げてきたツケだ。

自分に鞭を打ちつつ、まずは1周、読破した。

chapter2. vs 模擬試験

ところで、私のOJTトレーナーはAWS Solutions Architect Professionalを取得している。
10日でAWSのアソシエイト資格3つ制覇した話」の人見だ。

今読んでも10日間で全部取ったのは尊敬する。尊敬しすぎてちょっと引く。

それはさておき、その人見が「模擬は早めに受けろ」と繰り返し言ってきた。
なぜかと聞くと、「その方がいいから」というなんとも微妙な答え。
しかしプロを取得した人見がいうのだから間違いはないだろう、と、参考書を1周終えてすぐに模擬試験を受けた。

この問題は本で読んだからわかる。これは書いてあった気がするが自信がない。なんだこれは。初めて見る言葉だ。
結果は、50%。不合格ラインだった。当たり前だ。

しかし、早めに受けたこの模擬試験には2つの大きな利点があった。
一つは、実際の試験の形式がわかったこと。もう一つはどこまで理解を深めれば合格できそうかのイメージがつかめたことだ。
早めに目標ラインが定まったのは、その後の勉強の効率を高めることにつながった。

chapter3. vs 参考書2周目

模擬試験を終え、参考書に戻った。
参考書に書いてあるどの部分を頭に叩き込めばいいのかがわかった今、
インフラやサーバーを食わず嫌いしていた私はいなくなっていた。

インフラやサーバーに興味がでたわけではない。
好きになったわけでもない。
AWS SAAという壁を打ち破りたい。ただの意地だった。

この部分は本番で出題されそうだ。
これに関してはすっかり抜けているな。しっかり抑えよう。
参考書の文だとわかりにくいから、自分がわかりやすい文章に変えてしまおう。

参考書の余白への書き込みはどんどん増えていった。
汚れていく参考書。消えていく余白。蛍光ペンのインクがなくなる。
買いに行く時間が惜しい。ボールペンで勉強を続行する。
結局、最後まで蛍光ペンを買い足すことはなかった。

参考書には各章の最後に確認問題があるのだが、
その解答を覚えてしまうほどやりこんだ時、一抹の不安がよぎった。
試験3日前のことである。

chapter4. vs WEB問題集で学習しよう

試験3日前。参考書はほぼ暗記してしまっていた。参考書の問題集の正答率は100%だった。
これなら合格できそうだ、と一息ついたときに、一つの記憶が蘇った。

模擬試験に、参考書ではみたことがなかった言葉が使われていたのを思い出したのである。

つまり、参考書で出題範囲を全てカバーしているわけではないということだ。
当たり前の話なのだが、AWS SAAを倒すと息巻いている私にとって、
この「カバーしきれない範囲」は恐怖対象へと変わったのだ。

手元にある問題は暗記してしまっている。勉強にはならない。
どこかに初めて見る問題はないのか。本に載っていないような問題はないのか。

そこでたどりついたのがこのサイトだった。

フリープランに登録して、まずは解いてみる。
ボロボロだ。今までなんども解いたから問題と答えを暗記していただけであって、
根本の理解をしているわけではない。

まずい。

試験前は3連休だったのだが、ある意味本気の勉強はここからはじまった、とも言えるのかもしれない。

chapter5. vs 参考書3周目

2周目の参考書は、確認問題を重視していた。
一発で正解すれば理解している、という指標としてわかりやすいからだ。
確かに、それはわかりやすい。しかし、なんども繰り返し解くのには向かない。

そこで私は、今一度各章の解説部分を読み直すという行動に出た。
想像以上に時間がかかる。しかし、根本を理解するにはもうこれしかないのである。

読み終えたあと、確認問題(今更だが選択形式だ)の正答と誤答それぞれの理由をつぶやきながら確認問題を解いた。
ここまでやっても詰まる問題はある。
正答がわかっても、理由が説明できないのなら、そこからの応用はない。

解説に詰まったら、戻る。これを繰り返す。作業ゲー以外のなにものでもない。
しかし、辞めたいとは思わなかった。意地が勝った瞬間である。意地の塊と化していた。
元来、わたしは両親がお手上げするほど意地っ張りなのだ。

chapter6. vs BlackBelt

AWS試験の教材として、BlackBeltを参考にしている人は多いのではないだろうか。
実際に使われている様子や、細かい仕様などの解説が動画で見られるのは大変ありがたい。

しかし、私はBlackBeltはほぼ視聴しなかった。
具体的には、最後の最後まで不安だったAuto Scailingのオンデマンドセミナーのみを視聴した。

理由はとてもシンプルだ。時間的制約。

勉強期間は1ヶ月。その間SAAの勉強のみをしていたわけではなく、
仕事や家事、やることは盛りだくさんだ。参考書を開く時間すらない日も少なくなかった。

BlackBeltはわかりやすいが、どうしても時間が取られる。
対時間コストというのだろうか。時間的コスパが低い。
そう判断し、参考書や模擬の復習を優先した。

chapter7. 試験本番

会場は池袋。目の前のカフェに10:00に入店。試験は13:00からだ。
時間が近づくにつれ、緊張感が高まっていく。

高校受験の時、緊張しなかったことを思い出した。
あの時は「これ以上やれることはない、これで落ちたら仕方がない」と思っていたからだろう。
後悔というのは、やり残したことへの執着だ。
やり残したことがなければ後悔もない。

しかし、緊張していた。
当日のわたしは、自分の勉強方法を悔いていた。
なぜ参考書にこだわり続けたのか。なぜ、もっと他の問題をこなさなかったのか。
今考えても仕方がない。しかし、過去の自分を悔いていた。

やれるだけのことをやろうと心を決めて、試験会場に入った。
その頃には、穏やかな心境になっていた。

勉強方法への後悔はあるが、受験とは違って再度受け直すこともできる。
受かったら万々歳。落ちても勉強方法への反省点という収穫がある。
なにも怖いことはないと、それまでの1ヶ月をぶつけてきた。

合格

結果は、合格だった。
カメラで監視されていることも忘れて、渾身のガッツポーズをした。

頰がゆるみ、凝り固まっていた肩がフッと軽くなる。
飛んでいきそうな足を抑えて会場を後にする。
いつもは人の多さにげんなりする池袋の街が輝いて見える。

会社に戻る電車の中で、結果通知のメールをなんども読み返す。
思いついて、頰をつねってみる。痛い。夢じゃない。
ここまで嬉しかったことはいつ以来だろう。

資格は、成功したときの形がわかりやすい。合否があるからだ。
白か黒か、0か1か、はっきりと結果がでてしまう。諸刃の剣にもなるのだ。

だからこそ面白い。そう思えた。
努力が実るのは気持ちがいい。
実るかわからない努力がつらいなら、何が何でも実らせてやるという意地と根性を持てばいいのかもしれない。

勉強方法に後悔がある状態での合格は、ラッキーだったと思っている。
次の試験勉強は、後悔がない状態まで持っていくのが課題だ。

(サクセスストーリー風にお届けしました。いつもはもっと適当に生きています。)


  • IT酒場放浪記 記事一覧
  • エンジニア募集中!