2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
エンジニアとしてのブランクを乗り越えて、Serverlessを使って開発した話(全1記事)
リンクをコピー
記事をブックマーク
坂本直樹氏:今日お話しするのは、「エンジニアとしてのブランクを乗り越え、Serverlessを使って開発した話」です。
簡単な自己紹介ですが、坂本と申します。
昔はたくさんコードを書いていました。ハッカソンに出たり、スタートアップ2社の立ち上げをしました。ただ、組織が大きくなってエンジニアを引退してからは、ほとんどコードに触れていませんでした。
最近、久しぶりにコードを書きました。だいたい3〜4ヶ月間ぐらいの話ですが、今日はこの話をします。これからServerlessを使って開発するような人の参考になるようなお話ができればと思っています。
お伝えすることは3つです。1つ目が「Serverlessを選択した理由」で、(1)3つの社会変化(2)Serverlessを選んだ理由と期待する効果です。2つ目が、「エンジニアに復帰してブランクを乗り越えた話」。3つ目が、たくさんあるんですけど「失敗談」です。あまり具体的なコードの話は出てこなくて、ちょっと概念的なお話になると思います。
「3つの社会変化」の1つ目が、一言で言うと「目標設定が不可能になった」ということです。
変動性(Volatility)と不確実性(Uncertainty)と複雑性(Complexity)と曖昧性(Ambiguity)の頭文字を取って「VUCA」と言われています。
2つ目が「機能的価値から情緒的価値になった」というところです。
80年代は多機能性があって、90年代ぐらいからかっこよさ・おしゃれさのデザイン価値というものがフィーチャーされてきて、最近は経験価値というところがフィーチャーされています。
3つ目が、「『プロダクト』中心から『顧客』中心へ」ということです。
プロダクトがあって、たくさんのチャネルがあって、マーケティングしていくのが昔のモデルだったんですけれども、今は顧客中心にサブスクリプションで提供していくというかたちです。
こういう社会変化がある中でどうするかというところで、自分がとった戦略がこの3つです。
長期的に実現したい未来を描く。でも、その目標設定ができなくなったので、短期では仮説と検証を高速に回す。そして大胆な実験ができる体制をつくる。この3つが大事だと思っています。
戦術として、こういう体制を作る具体的な方法です。
企画のところではデザイン思考があって、そこから出てきたフィーチャーをバックログにためて開発を回していきます。今回は、開発のマイクロサービスとDevOpsあたりのお話がメインになるかと思います。
serverless frameworkを選んだ理由は、「全てコードだけで完結できる」「少人数で開発」できる、その結果として「圧倒的な柔軟性」が得られるということです。
期待する効果がこの4つです。
(1)サーバ管理が不要、(2)柔軟なスケーリング、(3)組み込まれた高可用性、(4)アイドル時のリソース確保不要です。
まだサービスリリースはしていないんですが、今はサーバ代がほとんどかかっていない状態で、本当に安いなと感じています。
あと、プログラミング言語はPythonを選んだのですが、理由はこの4つです。
(1)ドキュメントが充実している、(2)コードの書きやすさ、(3)データ分析と機械学習、(4)エンジニアの数も多く、これからも増加していくということで、採用も楽なんじゃないかといったところです。
ソフトウェアのライフサイクルとして、こういうものを作りました。
コーディングはCloud9を使って、GitHubを通して、CircleCIでテストを回してデプロイして、Slackに流すというところです。
ここからが自分の経験です。コンセプトとインタビューをずっと繰り返していたんですが、去年の11月か12月ぐらいに、お願いしていたエンジニアが離脱しちゃったんです。
なので自分でコードを書くしかなくなって、決断をしました。ここからの話は3〜4ヶ月の期間に、ブランクを乗り越えてコードを書いたという話です。
最初に感じたのが、まったく手が動かないということです。身体がもうコードを書くことを忘れていて、2週間ぐらいすごく悩んでいました。
どうやって乗り越えたかというと、2つあります。
1つは「巨人の肩の上に立つ」ということと、2つ目が「『テーマのない努力』ほどムダなものはない」という2つです。
1つ目、「巨人の肩の上に立つ」。これはアイザック・ニュートンの言葉なんですけれども、ニュートンの重力理論は全部自分でゼロから作ったものじゃなくて、過去のいろんな先達の理論の上に立っているということを意味する言葉です。
それに倣って、自分がやったことは、「自分が困っていることであっても、世の中の誰かが知っている」ということです。なので、たくさんの人のアドバイスをもらいました。
さっきのソフトウェアライフサイクルの、「コーディングして、デプロイして、テストして」みたいなところも、ほとんどがServerless Frameworkコアコミッターの堀家隆宏さんにお願いして作ってもらったり、たくさんの人に助けてもらいました。
あと、AWSのLoftをすごく使っています。ソリューションアーキテクトにいつでも話が聞けるので、アーキテクチャで困ったことやDynamoDBの設計で困っていることがあると、すぐに聞けるのはすごく助かっています。
そして、専門家からのアドバイスです。コーディングでは、大半の時間を調査に使います。専門家に「ここで困っているから、ちょっとサンプルのコードを書いて」というようなお願いをして、もらったコードを参考にしながら自分で書くというように、専門家からのアドバイスをうまく使っています。そうすると調査に要する時間が劇的に少なくなります。
次に、「『テーマのない努力』ほどムダなものはない」です。(プロ野球で活躍した)野村監督の言葉ですが、何かしらのテーマを決めて努力をしなさいというメッセージです。
例えば、「テストを書きたい」となると、Udemyにすごく優れたコンテンツがあるので、「テストを書きたい」というテーマを決めて、それに即したものをUdemyで探すとか。「もっとスムーズにコードを書きたい」というテーマだったら、コードを書く時間をとにかく増やしたり、開発環境でCloud9を使ったり、(スライドを指して)こういうコードスタイルを助けてくれるようなツールを使ったりしました。このように必ず何かしらのテーマを決めてから努力するようにしました。
失敗談はいっぱいあります。
最初はコードエディタにVimを使っていたんですが、難しすぎてまったく作業が捗らなかったというのが最初の失敗談です。Vimは初心者には難しすぎました。Cloud9に変えてからは少し捗るようになりまして、やっぱりGUIは便利だなと思いました。
そして、ユニットテストとインテグレーションテストがなかなか通りませんでした。今の自分の事業のフェーズは、プロトタイピングと検証が大事なので、ここはもうレッドのままにしています。
あと、コードと関係ないんですけど、Macbook Proを買ったというところですね。開発するにはハイスペックなマシンが必要だと思って、12月ぐらいにMacbook Proを新しく買ったんですけど、今の環境はほとんどクラウドで完結しているので、ハイスペックなマシンは必要なかったです。
あと、DynamoDBの設計はすごく苦戦しました。RDBはずっとやっていたので土地勘はあるんですけど、DynamoDBは初めてだったので、何度も手戻りしました。勢いでやってもやっぱりダメで、ここは基本に立ち返ってユースケースを作りました。
まずアウトプットのイメージを作って、それに対して、DynamoDBのテーブル設計と「そのテーブルからどういう順番でデータを取るのか?」みたいなところを、ユースケースをちゃんと作ったら書けるようになりました。遠回りのようで、実は近道だったというお話です。
あと、マイクロサービスにこだわりすぎることによる弊害も失敗談です。
ジレンマですけど、マイクロサービスで開発すると、その設計に慣れていなくてやっぱり時間を使ってしまうんですね。でも、モノリシックで開発すると柔軟性を欠いて、柔軟性を担保したいから、またマイクロサービスで開発するというジレンマが起きました。
やっぱり「今、自分にとって何が大事なのか?」に立ち返って、すばやくプロトタイプを作って検証することが大事なので、今書いているソースコードを捨てることを前提に開発することに決めました。テストを通らなくてもよいということと、あとからモジュールを分けられるようにすることを決めました。
とはいっても、ユニットテストとインテグレーションテストは通したほうがいいと、いろんな方からアドバイスもらっていて、ここはとても困っているので、アドバイス、もしくは手伝ってくれる人がいたら募集しています。
以上です。みなさんにとって何かヒントになれば幸いです。ありがとうございました。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略