Try T.M Engineer Blog

「アウトプットする事は大事だ」と思って初めたブログ、プログラミング、独り語り、etc

Webエンジニアへ転職後に学んだ事(6回目)

はじめに

このブログ記事は、約11年間、客先常駐で『マネジメント』をメインに続けてきて、技術力が全く無くて後悔していた人が、Webエンジニアへ転職して学んだ事を記録しておくために書いています。自身の振り返りのために書いている記事ですが、30代の方で同じような境遇で技術力が全く無くて後悔している方々にとっても「Webエンジニアになるとこんな事を勉強するんだ・・・」と雰囲気を掴んで貰えれば幸いです。

AWS Dev Day Tokyo 2018 の一部のセッションに参加

10月末、上司とこんなやりとりがありました。

上司「AWS Dev Day Tokyo 2018のServerlessのセッションを見たほうがいいよ」

私「え、会社で見ていいんですか?」

上司「うん、ストリーミング放送見る時はイヤホンつけてね。あと、この2つのセッションは僕が仕事で行けなくなったから代わりに参加してきていいけど・・・行ってくる?」

  • GraphQL 入門(AWS AppSync)
  • クックパッドの動画事業での AppSync 活用事事例 - Firebaseからの移行 -

私「ぇ、マジっすか?」
(過去にこんな経験は無かったので・・・しばらく考える・・・)

私「行ってきます!!!」

というわけで、AWS Dev Day Tokyo 2018のServerlessの以下2つのセッションを聞きに行きました。

  • GraphQL 入門(AWS AppSync)
  • クックパッドの動画事業での AppSync 活用事事例 - Firebaseからの移行 -

場所は目黒のAmazonの新オフィス!

f:id:special-moucom:20181111165807j:plain オフィスは新しいビルだけあって、すごくキレイでお洒落でした。
(ああ・・・一度でいいから、こんなオフィスで働きたい・・・)

最近、噂になっていたAWSのアカウント持っている人だけのコワーキングスペースAWS Loft Tokyoも「あ、ここだったんだ・・・」と知りました。

aws.amazon.com

一度はここで勉強してみたいものですが、営業時間が平日のみというのが残念なところ・・・
Amazonのオフィスと併設なら仕方ありませんね。

会場にてセッションを視聴

f:id:special-moucom:20181111165833j:plain 会場に来て、1つ後悔したことがありました。

「パソコンもってきてない!!」

周りを見ると、皆さんパソコンを持ち込んでいらっしゃる・・・

  • 仕事をしながら(コードを書きながら)セッションを聞いている人
  • セッションで重要なところをパソコンでメモっている人
  • セッションを聞きながらTwitterに書き込んでいる人

様々ですが、パソコンを持ってきていない人は少数でした。(もしかすると私だけだったかもしれません・・・) 以後、気をつけよう・・・そう心に留めてセッションを視聴しました。

セッション視聴:GraphQL 入門(AWS AppSync)

大変わかりやすく「GraphQLとは何なのか?」を説明して頂きました。
一応簡単にセッションを聞いた上での私のGraphQLの解釈を書いておきます。

GraphQLとは? ・・・ API Query言語。REST APIに変わる次の技術。SQLのようにQueryを書く事で、欲しいデータを取得できる。

REST APIでは以下課題があり、それを解決してくれる。

  • APIドキュメントの管理:管理がずさんになってくると、ドキュメントとAPIの仕様の相違が出てきて大変。
    -> GraphQLなら、ドキュメントは拡張を見据えた汎用的なものを作れば良い。

  • APIの実行方法がわからない&複雑:ちょっとだけ欲しいデータがあっても、全量取得&複数回APIを実行する必要があったりする。
    -> GraphQLなら、APIの実行は欲しいデータだけをSELECTして取得すれば良い。

GraphQLの特に優れている点 ・・・ リアルタイム性。Query言語のため、SELECTだけでなくUPDATEも可能。例えば携帯のオンラインゲーム等でネットに繋げない間はローカル側でデータを更新 -> ネットに繋がった瞬間に更新したデータをGraphQLを使ってUPDATE(つまりクライアント側と即時に同期可能)できる。

というのが、セッションを聞いての私の解釈です。(間違っていたら、ごめんなさい)REST APIの課題については、非常に共感できました。

セッション視聴:クックパッドの動画事業での AppSync 活用事事例 - Firebaseからの移行 -

こちらも大変わかりやすくGraphQLを使った実例を説明して頂きました。
その前に、AppSyncですね。こちらも私なりの解釈を書いておきます。

AppSyncとは? ・・・ フルマネージドのGraphQL。

フルマネージドって? ・・・ GraphQLに以下機能を付属したもの。

  • 認証
  • 通知
  • ゾルバ、リクエストレスポンスの関数が使用可能
  • DynamoDBからテーブルをプロビジョニング

クックパットさんは、AppSyncをcookpadTVのLive事業にて使用しており、Live時のコメントやスタンプ投稿でGraphQLを使用しているとのことでした。
当初、FirebaseのRealtime Databaseを使っていたそうですが、AmazonGoogleでデータを分散させたくないとの事からAppSyncに移行したとの話でした。
「データを分散させたくない。」長期的に見れば保守性が上がり、コストも下がるかもしれませんが、これだけを理由に移行を考えるなんて、さすがクックパットさんだなぁと思わされました。

AppSyncへの移行も色々と課題があったそうです。
1つ「なるほどなぁ」と感じた部分があったので、そこだけ書いておきたいと思います。

AppSync(GraphQL)は上記の通りAPI Query言語で、あくまでクライアントからQueryを投げてもらって処理が動きます。そのため、クライアントとAppSync間には何も無く、Queryの内容をチェックする事ができません。そういった場合はサーバーを1つ挟むしか方法がありません。クックパットさんの実例では、コメント書き込み時に誹謗中傷を書かれる恐れがあるため、クライアントとAppSync間に1つサーバーを挟んで、コメント内容をチェックした後にAppSyncへ反映しているとの事でした。

ここは「あ、なるほどなぁ」と思わされました。
新しい技術は次々と出てきて、どんどん便利になっていきますが、その技術にも課題があり、また新しい技術が産まれるんだなぁと感じました。

最後に

f:id:special-moucom:20181111165901j:plain

実はこういったカンファレンスへの参加は今回が初めてでした。
カンファレンスに参加したことで、GraphQL/AppSyncに大変興味を持ちましたし、周りのエンジニアも凄そうな人ばかりで大変刺激になりました。今度は、上司に進められる前に自分が興味を持ったカンファレンスに参加したいと思います。
というわけで、次回はこちらに参加したいと思います。

phpcon.php.gr.jp

現在、WordPressの案件がくるとの事で、WordPressPHPの猛勉強中です。PHPで何ができるのか?何に使われているのか?そこを知りたいと思い参加を決めました。(まぁ、子供がいるので本当に参加できるのかはギリギリまでわかりませんが、可能な限り参加したいと思います(パソコンを忘れずに・・・))
最後に、カンファレンスの参加を進めてくれた上司(と会社)に非常感謝しています。前職なら絶対にありませんでした。(そもそも客先にいて業務中に不在にするとかありえない・・・)
頂けた機会を活用して、もっともっと知識を増やして強いエンジニアになれる様、頑張りたいと思います。