nikkie-ftnextの日記

イベントレポートや読書メモを発信

登壇報告 | #ooc_2024 にて、"ソフト"ウェアに憧れた過去の私に向けて、変更しやすいコードを書くコツを共有しました #ooc_2024_d

Object-Oriented Conference 2024、素晴らしいカンファレンスをありがとうございました!1
このエントリは、タイトルが全てです。

目次

ソフトウェアを作りたかった私へ 〜変更しやすいコードを書くコツが見えてきた今伝えられること〜

資料類

発表中の様子

成瀬さん2、まとめ、ありがとうございます!

page=3642 が(裏のトークも含んだ)ツイートでした。

forteeにも発表時間帯のツイートに飛ぶ機能がありますね

アーカイブで見てください!」

前夜祭のランダム対談から参加していますが、裏番組が強すぎて(特にミノ駆動さん・成瀬さん)、「私のトークを聞きに来て」とは全然言えなかったです。

カンファレンスで聞くトークってときに人生が変わるきっかけにすらなると思うんですよね。
私はミーハーで、カンファレンスでは著者のトークを生で聞いて、心に火を灯してもらうって経験が多いです。

設計に関して著書がある方たちに私が伍するとは、到底思えていません。
そうなると、ブロードキャストできる場では「俺を聞け」なんて言えなかったのです。
聞くトークを迷っているんだったら、その方の事をよく知らない以上、ミノ駆動さんや成瀬さんのトークを聞いた方が人生によい影響をもたらす見込みが高いんじゃないかな〜

今回の発表、ピンポイントに過去の私向けで、私以外の人類にどれだけ刺さるのか未知数だった(自信がなかった)というのもあります

発表後記

嬉しかったこと

登壇した後、部屋で直接「よかったです」と言ってくださった方が何人もいて、これがめちゃめちゃ嬉しかったです!
聞きに来てくださってありがとうございました。
オンラインでつながっていてリアルでははじめましての方もいらっしゃいました。

全人類には刺さらないと思ってますが、私以外にも共有できる知見があってよかった...😭

気づき1: 基本のリファクタリングテクニックでソフトウェアに変えていける!

小さく分けるを指向した時に、過去の私は行数にだけ注目しており、「入出力と計算判断」や「使用と生成」が混ざった関数やクラスを書いていました。
異なる目的の処理が混ざっていることが変更しにくさの要因となっていたのですが、今回の発表の準備を通して基本のリファクタリングテクニックで変えていけることに気づきました。

  • 関数の抽出
  • 関数のインライン化
  • 関数宣言の変更

書籍『リファクタリング』ではじめの一歩として紹介されるテクニックです(6章)

これらはエディタのサポートを受けて、非常に小さなコストで実施できます。
VS Codeなら「Extract Method」ですね3

気づき2: インターフェース(生成を分離するとDIPに至る道が見えてくる)

インターフェースについては、Pythonが文法に備えていないので、理解するのに大変苦労しました。
ちょうぜつ本がきっかけとなり、ようやくつかめはじめた感があります。

今回の発表の準備を通して、インターフェースに関する知識がつながった点があります。
「作ると使うを分ける」と依存性逆転への道が見えてくるんですよ!

  • 「作ると使うを分ける」で依存するモノを引数で渡す(依存性注入)ように切り出す
  • 引数の共通の性質として、インターフェースを導入できる
  • 導入すると、インターフェースに依存させられる(=依存性逆転。DIP

見えてくるというのがミソで、一度に依存性逆転まで持っていかなくてもよいと思っています。
私はテストコードを用意しておいて、いつでも不安なく小さなリファクタリングを重ねていける開発体験を重視する立場です

おまけ:ガイドブックに寄稿しました

Pythonでインターフェースが難しかったという話は、ガイドブックに寄稿しています。

第22章 私とPythonとインターフェース

寄稿のベースになったのは、こちらのエントリです

終わりに

OOC 2024の登壇報告でした。
聞きに来てくださった方、対面でもTwitterでも感想をお寄せくださった方、本当にありがとうございます。
スタッフの皆さま、素晴らしいカンファレンスをありがとうございました!

このエントリで知ったよという方は、スライドだけでも、このあと公開予定のアーカイブでも見ていただけたら嬉しいです。
応援ください!

(TODO アーカイブが公開されたらこのあたりに載せよう)

P.S. 関連ブログエントリ

登壇準備中のエントリ

発表のベースにしたもの


  1. オススメの資料まとめはこちら
  2. ハイパーパラメータをディープラーニング!!(このCMのヘビロテのおかげで、めちゃ自己紹介しやすかったです。ありがとうございます)
  3. 関連アウトプット