Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

イーロンマスクの「開発の5ステップ」をまとめました - あなたの要件はアホだし、そのプロセスも要らない、すぐ最適化するな。

イーロンマスク氏がスペースXを案内するという動画(Starbase Tour with Elon Musk PART1)の中で語られた「開発の5ステップ」が僕的に衝撃でしたのでまとめます。

この内容、心底素晴らしいのですが、元動画では話が少しとっ散らかっていますし専門的すぎます。 僕自身、何度も内容を思い返して役に立ったのですが、見直すたび読解に苦労するので自分のためにまとめ直しました (ありがとう、僕!愛してるよ!)。

以降については、イーロンマスク氏が語る開発の5ステップについてまとめています。 余力があれば、自動字幕ありで動画を見ながらのほうが、イーロンマスク氏の熱意を感じられて楽しいと思います(下の動画では、この話が始まる辺りから始まるようにしています)。

youtu.be

イーロンマスク、開発の5ステップ

開発の中では以下の順序を必ず守らないといけません。

  1. 要件をアホのままにしないこと。誰しもがアホにするので疑う
  2. プロセスを削除する。無駄なのを積みたがるので徹底的に減らす
  3. シンプル化・最適化する
  4. サイクルを速くやる
  5. 自動化する

絶対に逆行してはいけません。

ステップ1:要件は必ずアホになる。アホのままにするな

要件は必ずアホになります 。それはあなたが書いても、誰が書いてもそうなります。 なので疑い、アホのままにしないでください。

とくに優秀な人が書いた場合、誰もが「完璧だ」と錯覚してしまい、質問できなくなるので危険です。 常に疑う必要があります。「その要件はなぜ必要なのか?」、「意味があるのか」と。

そして要件には署名すべきです。その要件を決めた人が責任を持って行動しなければいけません。たとえば2年前のインターン生が、その要件の説明責任を果たせるでしょうか?ランダムに思いついた要件を、責任を取らずにいなくなってしまいます。

(注)

ここでいう要件はロケットに必要な耐荷重性能であったり、発生する振動の許容量などのことだと思われます。

ソフトウェア開発の世界でも要らない機能や、無視して良いデータフォーマットの都合、満たすべきでもないリクエスト量の基準などたくさん要らない要件・制約が出てきます。 誰かがなぜか「必要」とした要件がすぐに発生します。疑いを持たないと、それらアホな要件をすぐ許容してしまいます。

この話が興味深いのは 「要件定義をしろ」ではなく「要件をアホなままにするな」と言っている点です 。誰がやっても最初はアホになるから疑えということです。

ステップ2:とにかくプロセスを削除する

要件に対して 人は必要なプロセスを積みたがりますが、ほとんどが不要です

「この要件ならこれも考慮しないと、あれも作ってカバーしておかないと」となりますが、削除してください。

私たちはタイトなマージンでやらないといけません(そうしないと軌道には乗りません)。そのためにプロセスは削除しないといけません。必要なら後で追加できます。むしろ、 追加し直していないのであれば、十分に削除していません

たとえばロケットのグリッドフィンも折り畳む必要はありません。シミュレーションして、迎え角が小さければ問題ないことを確認しています。追加のエンジン出力も必要ありません。そうすれば折り畳みに必要なモーターも機構もすべて不要になります。

(注)

ここでのプロセスをソフトウェア開発でいうと、具体的な動作や画面、モデルやテーブルのことでしょう。どうしてもアレコレと足してしまいがちですが、不要だとイーロンマスクは言います。追加し直すレベルに至ってないのであれば、まだ削除が足りていません。

この話、 常識的に考えればグリッドフィンは折り畳み可能としておきたい気持ちになります 。飛行機が飛び立った後には、タイヤを収納したい気持ちになりますよね?それと似た発想です。ですがそのプロセスそのものを削除してしまった、ということです。スペースXは宇宙に飛び立つ前に、常識という宇宙に穴を開けてしまっています。すごすぎます(グリッドフィンについてはイーロンマスク氏以外の人が思いついたものらしいです)。

ステップ3:やっと、シンプル化・最適化する

シンプル化・最適化を1つ目にしてはいけません。3ステップ目です。 優秀なエンジニアは「そもそも存在するべきでないもの」を最適化しがち です。

なぜ人はそうするのかというと、学校(中学校・高校)では問いに答えることを教えるからです。人は学校で問いに答えるべきであると刷り込まれ、問いそのものを疑うことを忘れています。問いを疑うと、成績を落とされてしまうからです。

なので人は、存在しないものを最適化したがります。

(注)

これは私を含めてエンジニアがすぐにやりたくなるやつです。

  • データ設計やクラス設計をより良くする
  • デプロイの過程を無駄なくする
  • 画面の使い心地・手触りを良くする
  • アクセシビリティを高める

要件やプロセスを削除してしまえば、これら全ては不要になります。「ここのボタンは『OK』じゃなくて『次へ』のほうが良いだろう」なんて、存在するべきでないポップアップや画面・機能、要件について議論しても無駄という話です。

ステップ4:速くやる

上記3ステップを忘れずに速くやります。サイクルの時間を加速しましょう。 あまりにも遅いときは、速く動いてください。ただし3ステップを忘れると、自分の墓を急いで掘ることになります。 とにかく、いつであっても早く・速くやることはできます。

ステップ5:自動化する

最後に、自動化してください。

(注)

この点について詳しく話されていませんが、前後の話から考えるにロボットを使って自動で作る工程を整備することでしょう。 ソフトウェア開発で言うならCIを導入したり、自動デプロイを整備したり、E2EテストやA/Bテスト・BlueGreenデプロイを整備することでしょうか。

イーロンマスクの失敗:モデル3のグラスファイバーマット

私(イーロンマスク氏自身)も、これについて何度も失敗しました。自動化し、速くやり、最適化し、削除したんです。 モデル3の製造であった、3つのバッテリーパックの上にグラスファイバーマットを敷くという生産ラインが、全体を阻害していました。バッテリーパックの生産、ひいてはモデル3の生産ライン全体を阻害していました。

失敗したのは、まずオートメーションを直したことです。ロボットの動作を速くし、経路を短くし、トルクを強くして改善しました。そして速く仕事をし、グラスファイバーマット用の糊を減らすよう最適化しました(糊は全体に塗る必要がなく、糊が延びることを加味して中心部に塗るだけで良かったのです)。

最後になって「これは何のためのグラスファイバーマットなんだ?」と疑問を持ちました。私がバッテリーセフティーチームに聴くと「ノイズと振動低減のためです」と答えたんです。でも彼らはバッテリーに責任があるはずですよね?そこでノイズと振動のチームに聴くと「火災防止のためです」と答えました。お互いが交差することを言っています!まるでDilbertの漫画です!Dilbert漫画のシミュレーションの中にいるのか?と思いました。

よし、わかったと。グラスファイバーマットがある車・ない車で、マイクを積んで走らせました。試して聴き比べると、「で、どっちがどっち?」となりました。違いがなかったんです。結果としてそのグラスファイバーマットは削除したんです。

過程を逆に行ったことで、それまでの自動化や最適化などすべてが無駄になってしまいました。存在すべきでないものを最適化したんです。

終わりに

これは本当にすごい洞察だと思います。まさにリーン的な発想というか、MVP(Minimum Viable Product)を求める姿勢そのものだなと感じます。

「機能を追加しよう」、ではなぜなのか?何のためなのか、どういう数値や体験を改善したいのか。 はたまた、その数値や体験の改善に意味はあるのか?

グリッドフィンを折り畳まないような発想ができているのか? グラスファイバーマットを敷いてるんじゃないか? そもそも存在すべきでないものを最適化してるんじゃないか?

とくに、エンジニアから出発したPdMや起業家は頭に入れておくべきことです。 イーロンマスク氏も言っているように、誰であれアホな要件を出すんです。プロセスを足したがるし、最適化したがるんです。

未来の僕、ぜひ読み直して、頭に入れておください。 動画を見た後に、失敗してたなって思ったでしょ?その後の仕事で何回も役に立ったでしょ?このステップをまとめておいたから、見返して思い出してね。

執筆:Kiyohara Hiroki (@hirokiky)Shodoで執筆されました

ジェンダーニュートラルな単数形のtheyは "they is" でなく "they are" を使う

ジェンダーニュートラルな目的など、 they を単数形で使いたい場合があります。 ですが、その場合のbe動詞は they are になります。 they is とは言いません。

先日、日本人の友人と話しているときに they is ではないのか?とこの話題がでて they are だよと回答しました。改めて間違いがないかを調べてここにまとめます。 僕自身も詳しいわけではないので、違うところや気になる表現があればぜひ教えてください。

こちらのページに、「単数の you と同じように、単数形の they も文法的には複数形と扱い、複数形の動詞を取ります」とあります。

別のサイトでの説明 では "You should ask someone who knows where they are going." のように、 someone が単数でも they には are を使うと書かれています。他には "They are a child. " のような文もありえるようです。

Wikipediaの "Singular they" の項目によくまとまっています ので、引用先を含めて参照されることをお勧めします(上記の2ページはWikipediaからの引用先です)。

en.wikipedia.org

僕は日本人なので、感覚的に何がおさまりが良いかは分かりません。ですがこのように「you are と同じように they are を常に使う」と言われれば納得できます。

イギリス出身の友人に聴いたときも、「they is とは言わない。 they are が良い」と言っていました。 また彼は「僕に対しては he を使ってね。 they と言われると変な気遣いを感じてしまうから」とも言っていたので、「日本人的には面倒もないし全部 they を使ったろ!」とすれば万事解決というわけでもないようです(個人の考え方のうえで言葉を選びましょう)。

またジェンダーニュートラルな代名詞には zie などもあり、 they だから正解というわけでもないようです。この辺りはまだ議論の余地があるようですので、ぜひこの機会に各種引用先などを参照してみてください。

uwm.edu

執筆:Kiyohara Hiroki (@hirokiky)Shodoで執筆されました

【雑記】freeeとStripeの口座連携をせずに登録するメモ

会計ソフトfreeeと決済代行サービスStripeを使っているときの個人的なメモです。 少しややこしい話と、freee、Stripe特有の話がでます。

freeeとStripeの口座連携をすると、お客様からいただいた売上が入るたびにfreeeの明細(決済)を登録してしまいます。そのたびにfreeeで取引を登録するのは面倒ですし、決済手数料も別の明細として登録されます。

さらにBillingを使っている場合は毎日「Billing手数料」と「税金」の明細も登録されます。これはStripeで定期課金をする際に取られる手数料と、その消費税です。税込み処理方式を採用しているので、税金が別で登録されるのもまた面倒なところです。

  • 日々の個別の売上を帳簿に乗せると取引が多すぎる
  • 決済手数料が別の明細で登録される
  • Billing手数料の消費税が、別の明細で登録される

困ったことに、freeeでは1つの取引に対して、複数の明細は登録できません。複数の明細をまとめて1つの入金に紐付けられません。 たとえば会社用に机を100個買ったとして、机一つひとつの購入を「取引」として帳簿付けするのは非現実的です。

Stripeの口座連携をやめてみる

freeeとStripeの口座連携をやめてみました。 freeeにはStripeから週単位で入金されるので、その明細を使います。この取引には売上、決済手数料やBilling手数料を登録し、入金ごとに関係するお金の動きがまとまるようにしました。

消費税の扱いをまとめると以下になります。

  • 売上(課税売上10%)
  • 決済手数料(非課税)
  • Billingの手数料(課税仕入10%)

Stripeは財務レポート機能が優秀で、入金ごとの明細もキッチリと出してくれるので安心です。 上記のように分割して表示してくれるので、そのままfreeeの取引に登録できます。

終わりに

発生主義的にはすべての売上が起こった次点で勘案しないといけない気がしますが、それこそfreeeさん自体はどうしてるのでしょう。日々、数百、数万件の売上があるのをすべて会計ソフトに入力するのでしょうか。

もちろん、お客様からいただいた売上についてや各種手数料については、Stripeの財務レポートなどでいつでも確認できます。なので明細はある状態なのですが、それをどこまで会計ソフトに反映させるか、というレベルの話なのでしょうか。

執筆:Kiyohara Hiroki (@hirokiky)Shodoで執筆されました

inゼリー完全栄養の通販と味のレビュー:美味しい。完全食にしては

8月4日に販売された「inゼリー完全栄養」を買ってみました。

届いたinゼリー完全栄養。

inゼリー完全栄養

今までいくつか完全食を買っていますが、今回はinゼリーということで期待して発売日の8月4日に買いました。 普段は朝食にカロリーメイトを食べるのですが、夏場はinゼリーを食べることもあります。それくらいinゼリーは好きです。

inゼリー完全栄養の通販

こちらの森永ダイレクトストアから購入しました。

https://www.morinaga.co.jp/direct-store/products/list.php?category_id=242

価格は18個入りで5,540円でした。 1個あたり308円 となりますが、1食あたり2個を食べるので、 1食あたり616円 になります。送料は無料でした。

8月4日に購入をして、8月6日の午前中に届きました(首都圏在住)。

f:id:hirokiky:20210806123411j:plain

味のレビュー

inゼリー完全栄養の味を例えると、パイナップルの味が強めのミックスジュースです。公式の「ミックスフルーツ味」という表記に偽りはありませんし、完全食にありがちな豆乳の臭いなどもありません!

inゼリー完全栄養にも、完全食らしい独特の癖(ケミカルっぽさ)は少しあります。さらに普通のinゼリーよりも濃く、水分も少なめで食べにくいです。感覚的には「色々なフルーツを荒く潰して混ぜたものが少し粘ついた感じ」です。離乳食(7ヶ月)のフルーツミックスに近いかもしれません。普段のinゼリーの美味しさまではいきません。

完全食としてはかなり美味しいです。BASE BREADメープル味くらいのクオリティの高さは感じます。僕はこれまでCOMPやHuel、BASE BREADなどを食べてきましたが、その中でも3本指には入ります。でもよく冷やすことはお勧めします。

買いか、どうか

inゼリーが大好きで、フルーツミックスな味もいけるなら絶対買いだと思います。BASE BREADメープル味と同じかそれ以上に美味しいです。 ただ、そうでもない人は少し味見してみてからでも良いかもしれません。

執筆:Kiyohara Hiroki (@hirokiky)Shodoで執筆されました

起業から1年が経ちました。近況とか資金面の話

起業から1年が経ちました。

え、もう1年?という感じで、Shodoに至ってはもう2年以上やっている計算となります。 今年はただただShodoに打ち込んだような1年でした。 株式会社ゼンプロダクツは8月3日に登記されましたので、今日が創立記念日です(そうらしいです)。

Shodoや会社でやりたいこと、作りたいものはまだまだ山積みです! 知れば知るほど、関われば関わるほどに、記事を書くことや技術ブログ、ライティング、コンテンツマーケティングには解決したい問題がたくさんあります。 今日も レビュアーの募集機能をリリース しました。他にも 会社の決算をしたり、日々充実しています。

ただお客様との対話がまだまだ足りていないなとは思っています。もちろんアーリーアダプターとして使っていただいたり、相談していただける方はいますが、今後は相談会などを開催してより多くの現場の課題に向きあいたいなと思っています。

資金面は「まだ大丈夫」というところですが、今のところすべて自己資金なので底をつく時期も実は見え始めています(なんか株主総会みたいになってますね)。 その辺りについてもこの1年が勝負というところですので、正直なところ苦心しています。が、Shodoがなくなることは絶対にないです(絶対にないです)し、さらに良い課題解決ができるよう会社もやっていくのでご安心ください。次の1年も "やっていき" ますので応援してくれると嬉しいです。

具体的には、執筆やライティング、コンテンツマーケティングに困っている知人にShodoを紹介したり、Shodoを使っていることについてブログ記事などを書いてくれると嬉しいです。Shodoについての改善点やフィードバックをいただけるのもとても嬉しいです。

そういえば4分くらいで分かるShodoという動画も撮りましたのでぜひ観てください。

www.youtube.com

今後もっとデモっぽい動画とかも用意する予定です。

ではまた来年。

執筆:Kiyohara Hiroki (@hirokiky)Shodoで執筆されました

会計が楽しい - 会社の決算をしているという話

7月末が弊社、 株式会社ゼンプロダクツ の決算月なのですが、会計が楽しい話をします。 ここで書くことは僕が勉強中のことですので、詳しい人から見て間違いがあれば教えてください。

何が楽しいかというと、今まで勉強してきた会計や複式簿記、ひいては経済というものを実務・実益として感じられるからです。会社の決算はそういった知識のある種の集大成といった感じで、ゲームで言うと 1面のボスに立ち向かっているときに、道中で身につけた技が役立っている ような感覚です。

初年度はお金の動きが小さいので、会社の決算や税務申告(いわゆる「年1」)を僕がやることにしました。税理士さんに分からない点の相談や間違いないかのチェックはしてもらってます。 今まで僕は個人事業主青色申告をしていたり会計の勉強をしていたり、株式投資のために決算書を読んだりしていましたが、その経験が今活きています。「今まで読んでいた決算書はこれだったのか」という気持ちに改めてなります。

とくにお金の流れが綺麗に可視化されて、貸借対照表に収まるというのが気持ちいいです。 損益計算書と月次の貸借対照表を見て疑問のある取引がないかを見ていって、間違いがあるときに直していくのも楽しいものです。部門や取引先などもちゃんと管理すれば、すべての数字が集計されて、どこにどれだけお金が動いているのかも分かります。それがさらに銀行口座やクレジットカードの利用履歴とひも付いてピッタリそろうと本当に嬉しい。プログラミングをしてキレイな設計やデータ管理ができたときのようです。

会計ソフト(freee)を使ってるのもありますが、損益計算書貸借対照表複式簿記というのがすごく良くできていると感じます。 複式簿記の場合1つの取引に借方と貸方ができて、貸借対照表にも反映されていくのが面白い です。 たとえば源泉徴収(特例納付)の場合、借方に役員報酬があって、貸方に源泉徴収税がくる。その源泉徴収税は預り金として会社の流動負債に計上されるわけです。税を納めるときは、その預り金が借り方になって貸方に未払金(など)がきて精算され、流動負債も解消されます。さらに借方にその未払金、貸方に現金や銀行口座がくる(資産が減って帳尻もあう)わけです。面白い。

「30分で分かる経済の仕組み」という素晴らしい動画があるのですが、この中でも「誰かの収入は誰かの支出」、「クレジットは誰かの資産であり、誰かの債務でもある」のように説明されます。つまりお金や経済活動というのは1方向でなく双方向であると気づかせてくれます。そして複式簿記はまさにそのモデルを反映したものなんだなと気づきます。

www.youtube.com

つまり 会計や貸借対照表損益計算書複式簿記を学ぶことで、お金とは何かを学べる ということです。 単純に支払われた給料が財布に入って、どう使おうか?という話以上の世界(資産や債務、お金の流れなど)を知れます。おまけに会社の会計をやると、源泉徴収や厚生年金の支払いもありますので、忘れがちな後ろの世界も味わえます。

複式簿記や会計って面倒だなと思っていましたが、知っていくと良くできていて面白いです。 もちろん固定資産管理などIT時代に少しそぐわないものもありますし、税務では源泉徴収や年末調整という厄介な仕組みもあります。ですが会計自体の根本的な考え方や貸借対照表複式簿記というのはすごく良くできていて、学ぶ意味があるものだと改めて思いました。

会計や経済の勉強は多くの人にお勧めできます。 お勧めの本を下に3つ書いておきますので、ぜひ読んでみてくださいとくに、MBA財務会計は読んで間違いない と思います。

執筆:Kiyohara Hiroki (@hirokiky)Shodoで執筆されました

5年以上前のことを許す(自分の中で固執しない)という時効を設けてから気持ちが楽になった話

人間、生きていると悩みがあるものですよね。 でも実際のところ、 悩みの半分くらいって昔のことだったりしませんか?

僕も10年以上前にあった、嫌な気持ちになった会話や喧嘩したことを不意に思い出して辛くなったりします。 昔のことをよく覚えている人間ですし、あの頃を精算してキレイになりたいという感情も強いのでなかなか苦しみがちです。

でもあるとき、 5年以上前のことを許す(固執しない)という「時効」をするようにしてから少し楽になりました

これは何も「きれいサッパリ忘れよう」みたいな自己啓発ではなくて、少しだけ気にしないように意識しようという心がけみたいなものです。 あくまでも僕の内心での話です。 ですので、僕は今後も5年以上前のことを引っ張ってきてネチっこく怒ったりすると思いますが、広い心で許してください(愛とは許すことですよ。皆さん)。

自分時効のやり方:

  • 5年より前のことは、もう不用意に思い出して反省したり後悔しない
  • あくまでも自分の内面のため
  • 特段、そのときの行為や相手について謝罪したり弁明する必要もない

「どうしても気になる」ということは、7年や10年で考えても良いと思います。でも永遠に昔のあることに固執しなくても良いんだなと思いました(まぁ当たり前のことかもしれませんが)。僕は記憶に残りやすいほうなので、昔あった細かなことも覚えていてしまいます。なので、こうやってある種の自分ルールを決めて楽になろうと思った次第でした。

不用意に思い出して辛くなることは減るので良いかなと思います。まだ妙な引っかかりは残ったりはするんですが、「大切なエッセンスは覚えておいて、次に活かせれば良い」みたいな表面的な言葉で自分を納得させています。

一つの考え方として、自分を許す口実が少しくらいあるのは良いんじゃないですかね。