
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
リンクをコピー
記事をブックマーク
司会者:次は、今までがんばってCDK(Cloud Development Kit)を普及させてきた大村さんです。
大村幸敬氏(以下、大村):よろしくお願いします。
司会者:初めて聞く単語なんですが、読み方は「ブレア」でいいですか?
大村:「ブレア」でいいです。
司会者:準備ができたらBLEA(Baseline Environment on AWS)の話を始めてください。
大村:みなさんこんにちは。AWSのソリューションアーキテクトの大村と申します。本日はCDKカンファレンスの場を借りて、Baseline Environment on AWS、BLEAの開発にあたって検討したことを話します。
私はふだん、お客さまをサポートするソリューションアーキテクトとして活動していますが、同時にAWSの中では運用系やDevOps系のサービスをリードする立場としても活動しています。その一環で、セキュリティのベースラインを提供するBaseline Environment on AWSというテンプレートを開発しました。日本ではSA(Solutions Architect)のみんなで開発していますが、私がリードしています。
最初に少しCDKについて話します。CDKは2018年に外部に出ましたが、実は社内ではもう少し前から情報をキャッチしていました。それもあって、1年後の2020年2月、目黒にあるAWSのロフトでやったGA記念のミートアップでは、司会や発表をやらせてもらいました。
2020年3月にCDKのBlack Beltの話をしたほか、直近では2021年末にやっていたアドベントカレンダーを私のほうで作らせてもらいました。みなさんにも参加してもらって、見事に全部埋まって、プラス2ページ目まで行きました。これだけの方にCDKの話を聞いてもらえるのは、すごくうれしいです。
今日は先ほどから言っているBLEAとは何かについて軽く説明したあと、BLEAを使う中で私たちがディスカッションした内容についても話そうと思っています。
また、CDKの開発を行うにあたって、いくつかの設計方針があったり実装方式を変えたり、開発者が知っておかなければいけないことなど、BLEAの開発の中で検討した内容をお伝えすることで、みなさんがよりよい選択や検討をするための一助になればいいと思っています。
AWSの中の人間として話しますが、これがベストプラクティスだというつもりはまったくないので、「こうやっているんだな」くらいに考えてください。CDKそのものについては先ほど亀田さん(亀田治伸氏)が説明したので私からは話しません。また、BLEAが何かについては5月に実施するサミットで話す予定になっています。まだ詳細は出ていませんが、そちらも楽しみにしていてください。
大村:BLEAとは何か。AWSのセキュリティのベストプラクティスを実装したオープンソースです。AWS Samplesという、AWSのオフィシャルのコードが公開されるところで公開しているサンプルテンプレートです。日本のSAたちが開発しています。
AWSには「ガバナンスベース」と呼ばれる、セキュリティで絶対にやっておかなければならない設定があるわけですが、その設定をするためのCDKのテンプレートと、その上にセキュリティのベストプラクティスに従ったかたちで実装する普通のシステム。Webのアプリケーションやサンプルコードをセットで公開しています。
大村:なぜCDKを使っているのか。Infrastructure as Codeをみなさんに使ってもらえるようにしたいと思ってBLEAを作っています。今までInfrastructure as Codeをやる上で何が辛かったのかというと、開発したものの引き継ぎができなかったり、コードが難しすぎて内容が理解できなかったりする。そんなことがあったのではないかと思っています。そこで、テンプレートをブラックボックスにしない、わかりやすくて自分たちで編集できるコードを目指して作っています。
そのためには、CloudFormationを生で使うより記述量が少なく、型チェックがあって、エディタもサジェストが強力なCDKのほうが向いていることからCDKを選んでいます。みなさんに使ってもらうことを想定しているので、CDKの学習コンテンツとしても使えるように配慮しています。複雑なクラス構成を使うのではなく、標準のライブラリだけを使ってコメントやリファレンスやHow toみたいなところをドキュメントで厚めに書いて、必要な部分をコピペしながら開発を開始できるように作っています。
(スライドを指して)例えば、ALB(Application Load Balancer)のアクセスログを設定したい場合は、セキュリティのベストプラクティスに照らし合わせるには少し設定を変えなければいけないんです。これはsetAttribute(メソッド)という、普通とは違う書き方をしなければいけないよと。これは例でもあり、実際に設定する時にはこうしなければいけないということでもあります。
「こう書く理由はこういうところに準拠しなければいけないから」とか、「RegionInfoというやや特殊なクラスから情報を引っ張る方法を参考にもなるように書いている」とか。(スライドを示して)BLEAの中のコードはこのように作られています。ぜひ、コードを見てください。
大村:今日は大きく分けて2つの話をします。まず「これからCDKを使う方たちへのナレッジ」。そのあとに「すでにCDKを使っている方へのナレッジ」です。
何を言ってもこれなんです。今日はいろいろな話を聞いてもらっていますが、Slackに流れてくるのは「インフラのエンジニアにCDKは難しい」「TypeScriptはしんどい」という声なんです。
それはそのとおりだと思っていて、実際に私たちも「TypeScriptやPythonのコードを書いたことがない」などのユーザーの声を聞いています。Slackにはbash対応が欲しい」みたいな声もありました。ほかに「npmやlintは今まできちんとアプリ開発をやったことがないからあまりよくわからない」という人もいると思います。
アプリケーション開発者はみんなすごく強い開発環境を手元に持っていて、それはいいのかもしれませんが、整備がとても面倒そうじゃないか。「やっぱりメモ帳でやりたいな」「さ〇〇エディタでやりたい」「秀〇でやりたい」ということがきっとあると思うんです。しかし、CloudFormationもそうですが、エディタの力は使ったほうがいいです。
そのためにどうするか。私たちは想定の開発環境をいったんVisual Studio Codeに限定しました。その代わり、Visual Studio Codeを使った時に必要な開発環境の設定ファイルや初期手順を細かく用意して、まずは使い始めやすくしています。
例えばVSCodeのExtensions。インデントや対応コードやフォーマッターやlintという設定がリポジトリの中に入っているので、チェックアウトして手順どおりにVSCodeを立ち上げれば、きれいなかたちで使い始められるようにしました。
確かにCDKをデプロイするだけならコマンドだけでもいいんですが、中身は絶対に編集するんです。しなければいけないんです。だからエディタもきちんと使いましょうということで、スライドのような手順が入っています。ぜひ恐れずに触っていただきたい。
大村:次に「L2 ConstructがないのでCDKが使えない。それならCloudFormationと一緒でしょ? ならCloudFormationがいいかな」という声も聞きますが、BLEAの場合は「L1 Constructが必要なら積極的に使いましょう。場合によってはCloudFormationのテンプレートをインポートしてもいいのでは」と、わりとゆるい感じで考えています。
これまでの発表の中にも何度か出ましたが、CloudFormationリソースイコールL1 Constructがあるということです。自動生成されています。L1 ConstructはCloudFormationと同じ設定をしなければいけませんが、スライドの右側にあるように、サジェストが非常に強力なんです。
何が必須パラメータなのか、何がオプションなのか、どんな項目を取り得るか。これは文字列ベースで、実際はリファレンスを見ることになるんですが、そういうことをやらなくてもいいんです。なので、仮にCloudFormationを使う場合でもL1 Constructでコードを書いてCloudFormationテンプレートを生成して、そこからスタートするほうが楽かもしれません。
CDKはアプリケーション開発者向けで、CloudFormationはインフラ担当者向けみたいに思われるかもしれませんが、そんなことはありません。そこは自由に行き来してもらって、必要なところで必要なものを使ってもらって大丈夫だということを伝えたいです。
大村:「やっぱりYAMLがいい」という話を聞くんですよ(笑)。「コードを書くのはやっぱり……」「クラスは蕁麻疹が出そう」みたいな話も聞きます。しかし、大丈夫です。
スライドの右側を見てもらうと、CDKのコードは特にif文やfor文や、ものすごく複雑なクラス構成を考えなければいけないかというと、そんなことはありません。例えば、セキュリティグループを定義してバケットを作り、アプリケーションロードバランサーをすでに用意してあるVPC(Virtual Private Cloud)の中に作り、セキュリティグループを先ほどのものに紐づけてリスナーを作って、とやっているだけなんです。
だから、YAMLのCloudFormationの定義の仕方とそんなに違いはないんです。インスタンスを作ること、リソースを作ることとそれを紐づけること。だいたいそれだけでできちゃうんです。それでいてYAMLを書くのに比べてリソースを参照しやすいので、コードを書くとすごくスッキリするし、そんなに難しくもないと思います。
ものすごくアプリケーションを書くのが得意な方も、やはりCDKの話をされるので、そういうことばかりやらなければいけないと思うかもしれませんが、ぜんぜんそんなことはありません。普通にクラスを並べていくだけでできるので、恐れずにコードを見てもらえればと思います。
スライドの右側に出ているのも、BLEAの中にあるコードです。そちらも見てもらうと、そんなに難しくはないと理解してもらえるのではないかと思います。そもそもロジックが複雑なコードは構成管理のコードとして本当に適切なのかと個人的には思っています。
if文などが中に複雑に入り込んでくると、コードと実体の対応がわかりにくくなるんです。では何かを変更しようと思った時に、本当にこのコードをデプロイすればやりたいようにできるのか。コードを見るだけではわからなくて、ロジックを追わなければいけなくなるんです。そこは「本当にいるのかな」「大丈夫かな」と注意してほしいと思います。
それから「手でやったほうが楽」という問題。これはあると思います。本当に手でやったほうが楽で、回数が少ないのなら手でやってもいいのではないかとBLEAでは考えています。BLEAはベースラインを作るという特性上、例えばOrganizations全体に対してSecurity Hubを有効化したり、GuardDutyを有効化したりすることがあります。
CloudFormationでは今、実はOrganizations全体に対しての有効化を行うリソースがないんです。ではどうするのか。Lambdaを書いてAPIを呼べばやれなくもないですが、マネコン(マネジメントコンソール)で2ステップか3ステップの手順なんです。Organizationsやアカウントにつき1回しかない操作なら、そんなにがんばらなくてもいいのではないかと考えています。
コードを書くということは、そのメンテナンスを保守していかなければいけないということなので、やっぱり書くコードは少なければ少ないほどいい。実施回数が少なくて手順がシンプルなら、手でやっちゃってもいいのではないかという考え方です。CDKを使おうという方へのナレッジというかメッセージは、だいたいこんなところです。
(次回に続く)
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07