Skip to content

Instantly share code, notes, and snippets.

@ftnext
Last active December 14, 2019 14:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ftnext/b77cadb7f49741f4654dec0ac2df6bfb to your computer and use it in GitHub Desktop.
Save ftnext/b77cadb7f49741f4654dec0ac2df6bfb to your computer and use it in GitHub Desktop.
OOC_2020 Proposal

OOC 2020 プロポーザル

構成

はじめに (10min)

  • 挨拶、自己紹介 (1min)
  • トークの概要・対象者 (1min)
  • 背景 (3min)
    • 構造化プログラミング(手続き型プログラミング)とオブジェクト指向の紹介
    • クラスまで踏み込む入門書が少ない(Pythonの状況)
  • 問題:入門書のコードは変更しにくい (3min)
    • Pythonは読みやすいが、手続き型で書いた場合、スクリプト全体を読まなければならない
    • 保守のしやすさ→オブジェクト指向
  • アプローチ:入門書のコードをオブジェクト指向で書き直す (2min)
    • クラスまで踏み込む入門書が少ない中、オブジェクト指向をやってみたい人に例を示す

書き換え例について (9min)

  • 入門書のスクリプト例の紹介 (3min)
    • 指定した画像を縮小するコード(構造化プログラミング)を例にする
    • python resize.py path/to/target
    • ディレクトリの中の各画像を縮小することもできる
  • 書き換えて、以下の変更を容易に取り入れたい (2min)
    • 縮小後の画像の保存先を指定したい
    • サブコマンドで縮小の他にグレースケール化も実施したい
  • 指針の紹介 (4min)
    • オブジェクト指向について具体的な知見を共有した2冊を書き換えの指針とする
    • 『現場で役立つシステム設計の原則』
    • 『ThoughtWorksアンソロジー』の「オブジェクト指向エクササイズ」
    • 9つのうち、全体的な指針となるエクササイズを紹介(名前を省略しない、など)
    • [memo]「ファーストクラスコレクション」などは実際に試したコードを書き換えのところで示す

書き換え (17min)

  • 1枚画像を渡して縮小する (MVP) (5min)
    • コマンドラインから指定された引数から対象と保存先を導出
    • 縮小する処理のクラス(「インスタンス変数は2つまで」)
    • 縮小する処理に対象と保存先を与えて呼び出す
  • 機能追加1:画像の入ったフォルダを指定できるようにする 5min)
    • 指定された引数から(対象, 保存先)の「ファーストクラスコレクション」を作成
    • 縮小する処理に各要素を与えて呼び出す
    • 実装1:マジックメソッドの上書きでリストのように扱う
    • 実装2:UserListを使う
  • 機能追加2:保存先をファイルパスまたはディレクトリパスで指定できる (3min)
    • (対象, 保存先)のファーストクラスコレクション作成処理を更新
  • 機能追加3:サブコマンドでグレースケールにもできる (4min)
    • サブコマンドによって処理のクラスの呼び出しを分ける
    • 処理のクラスは共通のインターフェース(Pythonでは抽象クラス)

まとめ (2min) + 質疑 (2min)

  • まとめ (2分)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment