Slide 1

Slide 1 text

〜元インフラエンジニアのガチAlexaスキル開発(個人)〜 1 Mar 12th, 2019 -- 個人開発 Night #1 @ギフティ

Slide 2

Slide 2 text

2018年8月頃のことです Alexaスキルをガチで開発することに。。 (諸事情でスキルの内容には触れません) 2

Slide 3

Slide 3 text

個人開発事情 3 ● 本業があるので片手間、空いた時間にやるしかない ● 実は僕インフラのエンジニアどす/(^o^)\ ○ (当時もDRサイト側のDBの復旧作業とかやってました。。) ● メンバー1人(It's me!) 時間が、、リソースとかが圧倒的に足りない。。

Slide 4

Slide 4 text

開発に伴うタスクどうする? 4 ● 設計をしなければならない -> ノンコーディングのツール活用 ● コードを書かないといけない -> Webブラウザで使えるIDEを活用 ● デプロイまでの様々な作業が都度発生する -> AWSを活用してCI/CD ● 品質を担保しなければならない -> 静的コードチェックとテストコード ● ドキュメントを書かなければいけない -> ドキュメント自動生成とGoogleのサ ービス

Slide 5

Slide 5 text

設計どうやったの? 5 ● ノンコーディングでAlexaスキルが作れるサービス使った ○ 最初からコード書かない ○ 固定の動作なら実装〜動作確認が早い ○ VUI/VUXの確認を行う ○ 作業を進めながら視覚的な設計図も残せる ○ プロトタイプ作りに注力できる ノンコーディングのサービスで設計を高速に固め た

Slide 6

Slide 6 text

どこでコードを書いたの? 6 ● AWS Cloud9使った ○ Webブラウザがあれば/場所/PC/時間に依存せず作業で きる ○ デフォルトで必要なソフトウェアがインストールされて いる ○ CLI叩ける ○ 環境の作り直しが容易(やり直しが簡単) ○ 安価 着手が早くスキマ時間も有効に使えた

Slide 7

Slide 7 text

CI/CDは? 7 ● AWS CodePipline使った ○ コード修正後~デプロイまで自動化 ■ build/静的Codeチェック/Test Code実行/デプロイ ○ Git Pushをトリガーに発動 ○ dev環境の実績が人間系のミスなく本番環境に適用でき る コードを修正するだけ(まるで自分がスケールし かのよう

Slide 8

Slide 8 text

どうしても自動化できない部分が! 8

Slide 9

Slide 9 text

CI/CDは? 9 ● Alexa Developer Consoleで設定した対話モデルの定義

Slide 10

Slide 10 text

CI/CDは? 10 ● Alexa Developer Consoleで設定した対話モデルの定義 ○ ダイアログモデルはコードで更新しないGUIでやる ■ Developer Consoleが高機能なので ○ ASK CLIで定義はダウンロード ○ git のバージョン管理に入れるよう構成した いったん定義ファイルをバージョン管理するだけ とした

Slide 11

Slide 11 text

品質の担保はどうしたの? 11 ● 静的コードチェック ● テストコードを書いた

Slide 12

Slide 12 text

品質の担保はどうしたの? 12 ● 静的コードチェック ○ TSLint使った ■ 書いたコードを定義したルールに従って静的に解析 して問題を検出してくれる ● 可読性の良いコードになる ● バグっぽいコードが事前にわかる 静的コードチェックは入れといて損はないので入 れるべし

Slide 13

Slide 13 text

品質の担保はどうしたの? 13 ● テストコードを書いた ○ テスト書いてないとか言えないので。。 でもAlexaのテストコードってどう書くのん?

Slide 14

Slide 14 text

品質の担保はどうしたの? 14 ● テストコードは下記を採用した ○ Jest ○ Virtual Alexa UnitTest系(JUnitなど)やE2E(Geb,Selenium)は経 験があるものの音声アプリのテストって。。

Slide 15

Slide 15 text

品質の担保はどうしたの? 15 ● Jest ○ facebook製のJavascript ユニットテストのためのツール ○ ユニットテストを作成するのに必要な機能はコレ1つで 揃う

Slide 16

Slide 16 text

品質の担保はどうしたの? 16 ● Virtual Alexa ○ プログラムでAlexaスキルの会話テストが行えるテスト フレームワーク ○ DyanamoDBの処理部分もモック化できて非常に便利だ った

Slide 17

Slide 17 text

ドキュメントはどうしたの? 17 ● TypeDoc ● Google ドキュメント

Slide 18

Slide 18 text

ドキュメントはどうしたの? 18 ● TypeDoc ○ TypeScriptのソースを解析してドキュメントを自動で作 ってくれるツール 簡単に成果物を1つ増やすことに成功♪

Slide 19

Slide 19 text

ドキュメントはどうしたの? 19 ● Google ドキュメント ○ ブラウザさえあればドキュメントが作成できる ドキュメントを作る上で充分な機能を有してい る!

Slide 20

Slide 20 text

見事にミッションをクリア! (もちろん時間の兼ね合いで妥協した部分もあります) 20

Slide 21

Slide 21 text

ちなみにお気づきでしたか? 21

Slide 22

Slide 22 text

個人開発を支える技術 22 ● 設計をしなければならない -> ノンコーディングのツール活用 ● コードを書かないといけない -> Webブラウザで使えるIDEを活用 ● デプロイまでの様々な作業が都度発生する -> AWSを活用してCI/CD ● 品質を担保しなければならない -> 静的コードチェックとテストコード ● ドキュメントを書かなければいけない -> ドキュメント自動生成とGoogleのサ ービス 個人開発の大部分を支えているのはAWSのサービ ス達! AWS Cloud9 AWS CodePiplineなど

Slide 23

Slide 23 text

個人開発がとっても捗る そうAWSならね。。 23

Slide 24

Slide 24 text

ご清聴ありがとうございました! 24