1週間の振り返り 2026/10/25

フラグかエラーか?

伝えたいこと: エラーを用いることによって契約を意識しやすくなる

ある条件において処理を続けず早期終了するというコードはよく見るだろう。 例えば、ユーザーが授業から退室する時、すでに退室済みなら、その後の処理をスキップしたい、というケースを考えてみよう。 まず以下のコード例を見てみよう。

state, err := buildClassState(request)

if err != nil {
    return err
}
if state.AlreadyLeft() {
    return nil
}
// 後続処理が続く

このコードは状態データに退室済みかどうか確認するためのメソッドを定義している。シンプルで理解しやすいアプローチだと思う。

state, err := buildClassState(request)

if errors.Is(err, ErrAlreadyLeft) {
    return nil
}
if err != nil {
    return err
}
// 後続処理が続く

このコードは、状態を構築する際のエラーとして退室ずみであることを返している。

buildClassStateの債務次第ではあるが、退室のための状態を組み立てるという債務を持っていた場合、自分はエラーで返す方が適切だと考えている。 なぜなら、退室のための状態が満たすべき契約として、ユーザーが教室に存在していることが必要だから。 ユーザーが教室にいないのに、状態を組み立てれるのは契約を満たしていないと言える。

もし、buildClassStateの債務がさらに広いscopeでの状態を組み立てることならば、フラグでも良いと思う。 そもそもbuildClassStateがあまりいけてないんじゃないかと突っ込みたくなるけど。

「勝負眼」を読んだ

勝負眼はサイバーエージェント会長の藤田晋氏の著書。経営者が持つべき心構えや学ぶべき手法などについて、彼の経験を元にまとめたれたもの。

記憶に残ったのは、押すべきところで押し、引くべきところで引くという「押し引き」の重要さだ。彼はこの押し引きを麻雀から学んだらしい。 そして失敗する人の多くは、押すべきところで引き、引くべきところで押しているということだ。失敗する原因は、戦局を見誤ること、冷静でいられなくなることなど様々な要因が挙げられる。

株の例だと、当たり前は高い時に売って、安い時に買う。多くの人は持っている株が安くなると、冷静でいられなくなり、安い時に売ってしまう。逆に、他の人が持っている株が値上がりすると、自分だけ損をするのが嫌で高い時に買ってしまうのだ。 裏を返せば、大きく株が負けていようとも、自分が本気でこの先株が伸びると考えているなら、それは損ではない。上下動する株の一つのプロセスであるということだ。

そして、この押すか引くかの判断を正確かつ自信を持って行うために多くの時間とコストを費やしている。藤田氏がABEMAの数多くの番組に目と通し、映画をたくさん見て、自分が知らない世界を積極的に見にいくのはこのためだと言える。

「絶望し切って死ぬために、今を熱狂して生きろ」を読んだ

幻冬舎社長(今はわからない)の見城徹氏と藤田晋氏による、ビジネスマンとしてどう生きるべきか、何を考えるべきかをまとめた本。見城氏が書いた内容に対して、藤田氏がアンサーを書く、みたいな構成。

絶望しきるとは、本書では色々やりたいことあったけど全然できなかったことに絶望する、と表現されている。絶望しないとは、現状に満足しているという状態を示す。人間は、現状に対する不安・不満を解消するために熱狂する。熱狂できなくなってしまったら、それは現状に満足したということになる。満足している環境では、生を感じないということみたいだ。

記憶に残ったのは、「たった一人で熱狂する」ということ。その人が熱狂しているかどうかで、その人の本気度合いがわかる。他人任せにしていたり、人からの見え方を気にするようでは、熱狂していない。

次に、戦局を早く判断し過ぎてしまうことについてだ。上にも書いた株の例のように、人は冷静さを書いて間違った行動をしがちだ。自分が働いている会社の業績が落ちてきたら、すぐ転職しようとする。本当に、その会社の事業に熱狂しているなら、信じているなら、一つのプロセスと割り切って長期的に見てどうすべきかを考えるべきなんだ。

これを聞いて、ボクシングと同じだと思った。ボクシングではKOをしにいく瞬間が一番危ないとされている。勝ちを急いだ選手が、相手の手痛いカウンターをくらって逆転負けする光景はよく目にする。逆に、ボクシングで負けない選手というのは、とても冷静なのだろう。相手の動きを常に観察し、次の一手を探る。パンチをもらってもひたすら自分を失わずに、観察し続ける。そしてここぞというタイミングで会心の一撃を打ち込む。

近所のパスタ屋の店員さん

近所のパスタ屋の店員さん、とても仕事ができると思った。 常に笑顔で、柔らかい雰囲気だ。オーダーボタンを押してからしばらくして、その店員さんが注文をとりにきてくれた。最初に、遅くなって申し訳ございません、と言われた。自分は驚いた。確かに少し遅かったが、気にするほどでもないくらいだった。普通に注文を取り始めてもなんとも思わなかっただろう。 でも、謝っていただいたとき、私はその人の仕事に対する姿勢にとても感銘を受けた。とても忙しいのに細かいところまで目が回っていて、なんて素晴らしい店員さんなんだと思った。私はエンジニアとして働いている。もしこの人がエンジニアだったら自分が書いているコード全てに対して責任をもち、質の高いコードを書くのだろうなと思った。 感謝。またパスタを食べに行かせていただきます。

人月の神話

開発プロジェクトが遅れている時、取れる選択肢は大きく3つ。

  1. 人を追加するか
  2. スコープを小さくするか
  3. リリースを延期するか

人を追加してもプロジェクトは進捗しないばかりか、逆に遅れるというのは有名な話だ。これは、人を追加するために必要なコストを過小評価していることが原因だ。

人を追加すれば、その人がプロジェクトをのことを理解するためのコストが必要だ。これは人を追加するたびに、線形に増えていく。

さらに人を追加すると、その分コミュニケーションパスも増える。これはN人のチームメンバーがいたとして、1on1でコミュニケーションをとると仮定すると、O(N^2)のオーダーで増大していく。

新しく追加された人が進捗を産むまでに時間がかかり、さらに追加したことによってコミュニケーションや教育コストが膨れ上がる。結果、プロジェクトはさらに時間がかかるということになる。

雨の中走ってみた

友人たちがフルマラソンを走るために島田に行くことになり、自分はフルマラソンには出場しないものの同行することにした。 せっかくなので宿泊地の周辺を走ることににした。その日はあいにくの雨だった。土砂降りのなかランニングをすることになった。

結果、とても満足する体験だった。まず人生最長の15kmを走れたし、土砂降りの中走るのもちょっとした非日常感を味わえた。

大学時代のボート部生活を思い出した。雨の中トレーニングを頑張ったあとは、とても心地いい眠気が来る。ご飯もいつもより随分と美味しく感じる。

誰かにすごいと思われるプロダクトを作りたい

この考えは諸刃の剣だと思う。誰かがすごいと思うかどうかは人によるし、すごいと思うは便利かどうか、世の中の課題を解決しているかとイコールではないからだ。

自分がどれくらいそのプロダクトに熱狂できるか、愛しているかが大事だと感じる。結局、いいプロダクト、すごいプロダクトはとても時間がかかるものだからだ。

そこに愛がなければ、ずっと適当なものを作ってはやめてを繰り返すことになるだけだ。