k.goto氏の自己紹介

k.goto氏:では「スタートアップでこそCDKが活きた ~生産性を向上できた5つの理由~」というお話をします。どうぞよろしくお願いします。

gotoと申します。ふだんはテックリードをやっていて、AWS Community Builderというものにも選んでもらっています。プライベートで技術ブログとか自作ツールのオープンソース開発とか、あとは今日話すAWS CDKのContributorとかもやっています。どうぞよろしくお願いします。

人が足りてないスタートアップでもいろいろなことをやりたい

今日のイベントのサブタイトルの「スタートアップ冬の時代」ということですが、スタートアップ企業は人が足りません。各分野の専任者がいない、チームが分かれていない、研修を作る時間が取れないなどのようなかたちで、本来やりたいことがたくさんあるんですが、人が足りなくてぜんぜんできず「もういいか……」と、なってしまうこともあります。

人が足りない中でも、もっといろいろやりたい。そこでAWS CDKということで、本セッションの概要としては、スタートアップ企業の開発現場から見たAWS CDKの良さ。「スタートアップとCDKは相性が良かった」とか、「生産性を向上できた」という話を基に、「スタートアップでこそCDKが活きた ~生産性を向上できた5つの理由~」ということで、CDKの良いところをついでに全部詰めておきました。

(視聴)対象ですが、CDKに興味がある方とか初心者の方ということで、そんなに深入りした話はしません。スタートアップ企業で開発をしている方も対象ですが、スタートアップ以外でもきっと活きるんじゃないかなと思います。

IaCはいいぞ

5つの理由ということですが、その前に前提として「IaCはいいぞ」という話をしておきます。1点目に環境の自動構築ができる。構築スピードが向上したり操作ミスの防止につながる。例えばDevとかステージング、prodに同じ環境を一貫して一括展開するとか、各開発者ごとに同じ環境を楽に構築できるとかです。

2点目がコードの再利用ということで、例えば複数プロダクト間でのリソース定義の使い回し。プロダクトごとに同じ監視環境を提供したいとか。他には単一プロダクト内でのリソース定義の使い回し。こちらは「処理は同じですが、対象のDB名だけ変わるようなジョブを5つ用意しましょう」となった時に、使い回しができて非常に良いのかなと思います。

AWS CDKの良いところ1 アプリとインフラの一体化ができる

前提が終わったところで、あらためて5つの理由ということで話していきたいと思います。1個目はアプリとインフラの一体化。スタートアップでは、1人でいろいろやる人、分野ごとに専任ではないことも多いんじゃないのかなと思います。特に、アプリ開発者がインフラを管理することも往々にしてあるんじゃないのかなと思います。

CDKはプログラミング言語で、インフラの定義を書くツールになっています。(スライドを示して)ここに書いてある6個の言語が対応していて、TypeScriptが実質デファクトスタンダードみたいな感じで言われています。

こういうプログラミング言語で書くということで、アプリ開発者と相性がいいんじゃないのかなと思います。ということで、アプリとインフラを一体化しやすいという特徴があります。

例えば、CDKの導入前にはフロントとバックはTypeScriptで書いていた。インフラはいろいろな方法で作っていたところが、CDKの導入後にフロントとバック、インフラも含めて全部TypeScriptで管理できるようになったとか。

フロントはTypeScript、バックはGoで書いているようなところにGo言語のCDKを導入することで、バックとインフラをGoで管理できるようになったりします。

(スライドを示して)CDKのコードの例で、TypeScriptで書くとこんな感じだよと。これは読み物として載せているのでそんなに大した意味はないです。

Goでも書けるという例を挙げています。

AWS CDKの良いところ2 「CDK Workshop」がある

1個目が終わって、2個目がCDK Workshopです。スタートアップ企業は、人が少なくて教育にリソースが割きづらいような状況もあるかなと。また、教える方法とか研修内容なども固まっていなかったりすることもあるんじゃないかなと。

そこで、CDKの学習教材として、AWSがWebページ上にワークショップを提供してくれています。

これが具体的かつ実践的ということで、初心者に非常に最適です。また、AWS本家からの公式提供ということで安心だと。また、無償なので、予算の少ないスタートアップにピッタリなんじゃないかなというので、「これをやっておいて!」でいけちゃうような、すばらしいコンテンツとなっています。

(スライドを示して)タイトルどおりの、いわゆるCDK Workshopが上のほうです。もう1個別に下にもあって、これらを紹介します。上のいわゆる「AWS CDK Workshop」というものは、CDKの基本から軽い応用まで学べるコンテンツで、各プログラミング言語ごとに提供されているので、みなさん非常に使えるんじゃないのかなと。

2個目は何かというと、これはCDK Workshopという名前ではないんですが、CDKのワークショップとハンズオンコンテンツです。「TypeScriptの基礎から始めるAWS CDK開発入門」。これにはCDKの使い方とかも出てくるんですが、TypeScriptを基礎から学べるものになっています。プログラミング未経験の方とか、インフラ畑の方におすすめじゃないかなと思います。

(スライドを示して)「こんなのだよ」ということでスクショを撮ってきたんですが、まずCDK Workshopということで、左側にTypeScriptとかPythonとか。そんな感じでワークショップを選ぶことができて、トップページには「このワークショップをやるとこういうことができるようになりますよ」ということが書いてあります。

1個例に挙げると、「LambdaにDynamoDBの読み書き権限を付与してみましょう」というもの。「こんな感じのコードにこういうことをやると読み書きを付与できますよ」というかたちで、非常に実践的なワークショップとなっています。

2個目のTypeScriptの基礎から始めるほうに関しては、最初のページに「プログラミングの経験があまりないのですが、大丈夫ですか?」「はい」ということ(が書いてあるの)で、プログラミングをやったことがない人にとって非常に安心できる教材なんじゃないかなと。

どんな基礎から出してくれているのかというと、「クラスって何ですか?」というところから丁寧に書いてあるので、「プログラミングはちょっとハードル高いんだよな」という人にもおすすめのコンテンツかなと思います。

AWS CDKの良いところ3 豊富な自動的・機械的サポートがある

2個目が終わって3つ目。ここからCDKの機能とかに掘り下げて話していきます。豊富な自動的・機械的サポート。この章はいきなり「こんな感じの話をしますよ」ということをまとめています。TypeScriptなどの型システムの恩恵のお話と、「CDKの便利機能はこんなものがあるよ」という、大きく2つに分けて話したいと思います。

1点目です。TypeScriptなどの型システムによる機械的サポート。TypeScriptは型というものがあって、各パラメーターに対してnumberやstringなどの文字列とか、booleanとか、CDKの独自型というものがあって、それに当てはまらない値を書くとエラーを出してくれる。

2個目の入力補完というのは、パラメーターを入力する際に、2、3文字打つとあとは全部自動で補完で出してくれる。

3つ目はAWSのリソースって、必須な入力のパラメーターがあるんですね。これを指定しなかった場合にも警告をしてくれる。これは実装中にエラーが出るので入力漏れの防止になるということで、楽々入力で凡ミスを実装の段階で防いでくれるという旨みがあります。

どんな感じで出してくれるのかは、ちょっと文字が見えづらいと思うので口頭で話します。一番上はboolean、trueかfalseに対して、文字列で"true"と入れてしまった。すると、「これは型が違うよ」ということを赤文字で出してくれている。真ん中に関しては入力補完ですね。repositoryNameと打ちたくて、"repo"と打ったところで「これですか?」みたいな感じで出してくれるので、あとはEnterを押すだけ。ついでに右側にプロパティの説明とかを出力してくれるので、これもまたいいかなと。

一番下が、入力が必須なプロパティを入力しなかった場合に、「〇〇は必須ですけれど、入力されていませんよ」ということを赤文字で出してくれている。

ということで、TypeScriptなどの型システムは非常にいい感じに機械的サポートをしてくれるというお話です。

(次回に続く)