これまでにいろんな問題に出会い、その問題に対処するためにいろんなツールを作成してきた。 それらツールについて、何が問題で、何を作って、どうなったのかをふりかえる。

Guippy

課題

  • 開発ツールがダイアログ操作だった。

  • 複数のツールを使う必要があったため夜間走行 が非効率だった。

  • Python で WIndows の GUI 操作をするライブラリは バイナリインストーラでインストールする必要があった。

  • できればPure Pythonがいい。

Guippy - WindowsのGUI操作の自動化

PyPI / Source Code

  • Pure Python

  • ctypes モジュールで win32.dll を呼びまくるライブラリになった

  • ダイアログとブラウザをシームレスに行き来できる

結果

  • 実際に業務に組み込んだ。

  • 夜間実行して停止していることもあった。

  • 本来であれば、GUI操作しなくても処理を実行できるように元のものを修正したほうが筋がよい。

その他

  • 最初にpypi に公開したパッケージ。

  • 当時、転職活動などなどでデモとして用いた。ウケは良かった。

jumon

課題

  • 開発用のコマンドがたくさん作成されていたが散らばっていた。

  • 開発用コマンドがまとめるような作業になるべく工数をかけたくなかった。

jumon - サブコマンドを作成するためのフレームワーク

PyPI / Source Code

  • Python の dotted name がそのままサブコマンドに適応される。

  • ディレクトリの構造がそのままサブコマンドの構造になる。

  • ディレクトリの構造に従いmain()関数を探して実行する。

結果

既存のものを統合するのは面倒であったため利用しなかた。 作成したもののあまり使うことはなかった。

その他

  • 勉強会でデモをしたら「こういうツールいっぱいあるよね」 という反応だった。

    そうだったのか….

  • たしかにclickとかと競合している。

docker-volume

課題

  • docker machineにてVurtialBoxで構築したDocker環境に対してVOLUMEをhostのディレクトリにしたい。

    dockerでMySQLを起動するときにVOLUMEのサイズを調整したかった。

  • そのためにはmountするディレクトリのuidやgidなどをmysqlのコンテナが期待しているものにする必要がある。

docker-volume -

PyPI / Source Code

  • docker-volume.ymlでgidやuid、permissionを指定できる。

  • 内部ではVBoxManageコマンドを実行している。

結果

  • 一時期は重宝した。

  • その内Docker Desktop for Macが超絶便利になったため必要なくなった。

その他

  • dockerと言いつつVirtualBoxのツールだったのにpackage名をdocker-xxx と付けてしまったことは失策だった。

総括

全体的に考えると、その時の必要性は理解できるが本当に作成するだけの労力をかけるべきだったのか疑問を感じるものが多かった。 作りたいというモチベーションが先行するため、課題やニーズを良く考えず実装してしまうことが一つの原因だろう。 個人用のツールであっても保守コストはかかるし、作り捨てるのであればパッケージ化までする必要はない。 何に困っているのか、どうしたいのか、何が必要かなどをもっとよく考えるべきということに尽きる。 一方でさまざまなアンチパターンを自ら踏んだことでソフトウェアの様々なことを学べた。 ドイツの鉄血宰相として有名なビスマルクの名言に「賢者は歴史から学び愚者は経験からしか学ばない」というものがある。 どうやら私は愚者だから経験から学んだようだ。学べただけマシだが。

備考

ここの内容はhttps://www.slideshare.net/TakesxiSximada/ss-62570463を元に作成した。