Logicbookとは
LogicbookはPythonの関数を独立してGUI上で管理・テストするためのオープンソースライブラリです。
Reactのコンポーネント管理ライブラリ「Storybook」のPython関数版のようなイメージです。
Reference
詳しいドキュメントはこちらにあるので興味がある方は一度使ってみてください。
Githubはこちら https://github.com/RuiHirano/logicbook
開発しようと思ったきっかけ
現在。私は3年ほど大学発ベンチャー会社のソフトウェア開発に関っており、Webアプリを5人ほどのチームで開発しています。Webアプリは基本的にfrontendはreactを用いてbackendのAPIにはpythonを使用してます。
初めの方はfrontend,backendともにどちらも最小限のテストコードしか書いておらず、それでも保守管理にはそこまで問題はなかったのですが、規模が大きくなるにつれてバグだったりエラーが多発するようになっていました。
また、チームの人数も少しずつ増えると実装する機能をそれぞれに分散するため、チーム内のプログラミング能力の差によってコードの書き方に大きく違いがでてしまうという問題もありました。しかも、新しい人が加わると既存コードの説明をするために何回も打ち合わせを繰り返しておりサポートに大きな時間を割かれていました。
こういった経緯から 「既存コードをうまく説明可能な状態で保守管理できる方法」 はないのかなと思い始めました。
Reactについては「Storybook」というOSSでコンポーネント管理ツールがあり、とても便利に活用しています。
しかし、Pythonに関しては調べてもそのようなライブラリが見当たりませんでした。
そこで、どうせなら自身でOSSとして開発しようと思い、Logicbookの開発を始めました。
Logicbookは「Storybook」を意識していて、開発においてかなり参考にしています。
現在はまだβ版ですが、今後も開発を続け正式リリースできることを目標としています。
Logicbookでできること
GUIでできることはREADMEやソースコードの確認、関数の実行、テストの自動実行などいくつかあります。
Example
Exampleの項目では実際の関数に対して任意の入力を行いどのような出力がされるかを確認できます。複雑な関数でも一つ一つの関数の入力と出力のみを意識するだけで扱えるため、挙動を理解しやすくなります。
Test
Testの項目ではファイルに変更が加わり保存されたタイミングで自動的にテスト実行されます。(GUIの「RUN TEST」をクリックしても実行できます。)
テスト結果に応じて色分けされて表示されるので、視覚的にわかりやすいと思います。
Tutorial in less than 5 minutes.
最新のpip3系であればpypiからインストールできます。
pip install logicbook
初期化
cd YourProject
logicbook init
# Your Project Name: [プロジェクト名]
# Your Src Path: [srcまでの相対ディレクトリパス]
Src Pathはlogicsというlogicbookで管理する設定を記述するためのフォルダを作成するパスです。
デフォルトは/でプロジェクトルート直下に作成されます。srcなどの下の階層に作成したい場合は「src」などと相対パスで入力してください。
サーバーの立ち上げ
cd YourProject
logicbook start
上記のコマンドの後、http://localhost:8000 を表示してください。Logicbook UIが表示されていれば成功です。
その他、詳しい方法についてはドキュメントを参照してください。
おわりに
Pythonで関数を独立させて管理、テストできるOSSライブラリは今まであまりなかったかと思います。
Pythonはわかりやすく書きやすい反面、厳密な型定義がなくtestを書く人も少ないためバグが発生しやすい言語でもあります。将来的にはLogicbookで一つ一つのロジックを管理しながら開発していくのが当たり前になり、コード管理の一つのアプローチになればいいと考えてます。
まだβ版で正式リリースに向けて開発中なので、興味ある方は一度使ってみて、意見や要望などをいただけたら幸いです。
また、コントリビューターとして一緒に開発していただけるメンバーも募集しているので参加してもらえると嬉しいです。
Logicbook開発者: 平野 流