初めてWeb APIを作った事がきっかけで幸せなエンジニアライフに

2.7K Views

March 06, 22

スライド概要

Web API LT会 - vol.3 の発表資料です。
https://rakus.connpass.com/event/236910/
最後のページで紹介しているLT大会の詳細は以下を参照ください。
https://serverlesslt.connpass.com/event/239999/

profile-image

30代後半から発信活動を始めて人生が楽しくなりました。 主にC#/設計技法/マネジメント/チームビルディングの情報を発信します。 デブサミ2020関西ベストスピーカー賞1位。 Microsoft Build 2022 スピーカー。 ITエンジニア向けの月刊誌「Software Design」2022年4月号より連載記事を執筆中。 デンソークリエイト所属。発言は個人の見解。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

初めて Web API を作った事が きっかけで幸せなエンジニアライフに 2022/3/8 Web API LT会 - vol.3 小島 優介 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. /65

2.

はじめに 技術的な話は前半のみです 後半は私の人生の話です Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 2 /65

3.

自己紹介(2年半前) 名前:小島 優介 年齢:30代後半 活動: Web API を作った経験なし 社外での発表経験なし 社外での勉強会の参加経験なし 技術記事の投稿経験なし クラウドの 個人開発のスマホアプリを作った事はある Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 3 /65

4.

はじめてのWeb APIの作成 個人開発のスマホアプリに対して ユーザーからの要望や、不具合報告など ユーザーからのフィードバックを元に改善したい ユーザーからのフィードバックを送信してもらうための Web API を作ってみる Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 4 /65

5.

DB(Firebaseなど)にデータを登録するのは面倒 ユーザーからの要望や不具合報告登録をDBに登録する場合 登録したデータを検索したり、表示したりするために 管理機能の開発が必要(面倒) また、DBに登録されたことを通知する機能も欲しい(面倒) Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 5 /65

6.

そこで Slack の Incoming Webhook Slack の Incoming Webhook を使えば 指定したチャンネルに要望や不具合報告を投稿可能 Slackなので、検索もしやすいし、通知にもなる フリープランでも、直近10,000件まで投稿が記録できるので アプリのユーザー数が多くなるまでは、簡易的な管理として十分 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 6 /65

7.

実現方法 1. フィードバック管理用のSlackのワークスペースを作成する 2. Incoming Webhook を用いてURLを取得する (こちらのリンク先参照) 3. 上記URLを用いてSlackに投稿する機能を持つ Web API を Azure Functions で作成する 4. 上記の Web API をスマホアプリから実行する 3. についての詳細を以降で解説 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 7 /65

8.

C#でSlackに投稿するメソッドを作る メンションの有無を設定 メッセージと投稿者名と チャンネル名を設定 SlackのAPIに送信できる形式に変換 Slackに投稿 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 8 /65

9.

C#でAzure Functionsを作る - 雛形の作成 Azureのアカウントを作成して、Visual Studioから メニューを実行するだけで Web APIを作成可能 詳細はこちらのリンク先参照 新規作成するだけで雛形となるメソッドが作成される 実装はこれを少し変更するだけで良い Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 9 /65

10.

C#でAzure Functionsを作る - Slackに投稿 実装変更は赤枠の2箇所を変更するだけ リクエストボディから パラメータ取得 Slackに投稿するメソッドを 呼び出す Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 10 /65

11.

Web APIの実行結果 Web API のリクエストボディに json形式で メッセージ、チャンネル名、メンション有無を指定して実行 Slackの #error_report チャンネルに下図のように投稿される Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 11 /65

12.

ユーザーからフィードバック管理の例 不具合報告、要望などの 用途ごとにチャンネルを分ける 不具合報告の例 問題を特定するための 情報を送信 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 12 /65

13.

ここまでのまとめ Slack の Incoming Webhook と Azure Functions を用いることで ユーザーからのフィードバックを管理する機能を簡単に実現できた 本発表で紹介したソースコードは以下のリポジトリで公開 https://github.com/kojimadev/SlackIncomingWebhook ちなみに、ユーザーからのフィードバックを取り入れる機能を アプリに追加した結果、 Google Play での評価が 3.9 → 4.7 にアップ Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 13 /65

14.

この時に初めて Web API を 作ったことが 私の人生を変える Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 14 /65

15.

初めての Web API を作る過程で起きたこと 世の中のいろんなエンジニアの人たちが 様々な役に立つ情報を記事に書いてくれるおかげで Web API を作成できた 自分も技術記事を書いてみよう 今まで自分は技術記事を読んで、分かった気になっていた 記事を書きながら理解し直すことで「使える知識」になった 記事にいいねが付くと嬉しかった また記事を書いて、技術を理解して成長、いいねで嬉しい 無限ループ Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 15 /65

16.

技術記事を書くと、人の記事を楽しく読めるように 技術記事を書くと、情報をインプットするモチベーションが上がる なんとなく情報を収集していたが、記事を書くために 「人に説明するために自分なりの解釈」をしようと 試みながら情報をインプット それまでは、記事を書いている人の事を想像した事はなかったが 自分が書く側の経験を積むと、たくさん読まれる記事を書く人に興味 (どれだけの事を調べて書いたのか、他にどんな記事を書いているか) あと、自分の記事にコメントしてくれた人が書いている記事にも興味 技術記事を投稿する事で「多くの情報を楽しく理解」 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 16 /65

17.

コミュニティで価値観が変わる 「多くの情報を楽しく理解」することで 面白そうなIT系コミュニティを見つけて参加 エンジニアライフは圧倒的に楽しくなり、成長も加速 半年間で価値観がガラっと変わる 仕事の時間以外で社外の勉強会に参加するのは嫌 → 興味あるテーマでの勉強会は楽しい OSSやサービスを作って公開するのは限られた天才のみ → 作って公開するのは簡単で楽しい 情報は自分で調べるしかない → 困っていれば助けてくれるし、色んな知見をシェアしてくれる 凄いエンジニアの人達とは関われない → 気軽に会話できるし、ポジティブフィードバックしてくれる Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 17 /65

18.

自分を育成してくれたコミュニティ 運営者ギルド https://qiita.com/organizations/admin-guild Webサービスの運営者が知見を共有するためのコミュニティ 皆が新しいチャレンジを楽しみながらどんどん行い、そこで得た知見が皆に共有される 自分のチャレンジにも皆が背中を押してくれて、やる気が上がる最高のコミュニティ Engineering Manager Meetup https://engineering-manager-meetup.connpass.com/ エンジニアリングマネージャーの知見を共有するためのコミュニティ マネジメントについて困っていることを相談すると皆から助言してもらえる エンジニアと人生コミュニティ https://community.camp-fire.jp/projects/view/280040 発信に対する知見や刺激が多く、発信することの背中を押してくれるコミュニティ メンバーの発信や発信による成功を見ることで、発信のモチベーションが上がる Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 18 /65

19.

社外イベントで発表 私が初めての社外イベントで無事に発表できたのは、 コミュニティの皆が、迷っている時に背中を押してくれたり、 初めての発表資料を事前にレビューしてくれたおかげ 1回目が1番敷居が高いので、 勇気を出して1回目をやって本当に良かった 社外イベントでの発表は、技術記事でいいねをもらうのとは また違って、顔の見える人からフィードバックをもらえたりなど 新たな刺激、成長のキッカケ 社外イベントは参加するだけより発表した方が100倍楽しい (1回目の発表後、1年間で7回くらい発表) Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 19 /65

20.

カンファレンスの公募セッションに応募 最初に応募した時は落選(初めての発表から半年後) 自分が公募セッションに当選するなんて、確率的には0%に近い でも 0% じゃないと思ったからチャレンジ 当選確率を上げるためにスライドのドラフト版(70P)を作って応募 落選する経験を糧にして成長し、繰り返し応募し続ければ、 いつか当選できるはず その結果、Developers Summit 2020 KANSAI で当選 人生で最高のプレゼンをするために2ヶ月間全てのプライベートの 時間を費やして、自分が納得するまで資料の改善や発表練習し、 ベストスピーカー賞1位を受賞 その後も、楽しく技術記事投稿や社外発表を継続 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 20 /65

21.

自己紹介(現在) 名前:小島 優介 活動(2年半前): 社外での発表経験なし 社外での勉強会の参加経験なし 技術記事の投稿経験なし 活動(現在): Developers Summit 2020 KANSAI ベストスピーカー賞1位 ITエンジニア向け月刊誌「Software Design」今月発売号から連載 Qiita/Zenn/Note/Youtubeなどで通算100万PVの情報を発信 発信活動を始めたことで、たくさん成長できて、 多くの人から役に立ったと言われるので、人生が凄く楽しくなった21/65 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved.

22.

過去の自分のような発表初心者を支援したい 発信活動の中で難しいのが「初めての社外発表」 だから初めての発表がしやすいコミュニティを立ち上げて運営中 発信活動の初心者や設計の初心者が 頑張って壁を乗り越えた話をテーマにしたLT大会を開催 社外発表に興味はあるけど発表経験なしの人や、 設計の初心者で悩んでいる人にとって、その背中を押すイベント 参加登録して視聴してもらえると歓喜 3/30(水) 20:00 Youtube Live配信 詳細はこちら Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 22 /65