3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonの関数をGUIで管理、テスト可能なOSSライブラリ「Logicbook」を開発した話

Last updated at Posted at 2022-03-22

Logicbookとは

LogicbookはPythonの関数を独立してGUI上で管理・テストするためのオープンソースライブラリです。
Reactのコンポーネント管理ライブラリ「Storybook」のPython関数版のようなイメージです。

Reference

詳しいドキュメントはこちらにあるので興味がある方は一度使ってみてください。
Githubはこちら https://github.com/RuiHirano/logicbook

example_join.png

開発しようと思ったきっかけ

現在。私は3年ほど大学発ベンチャー会社のソフトウェア開発に関っており、Webアプリを5人ほどのチームで開発しています。Webアプリは基本的にfrontendはreactを用いてbackendのAPIにはpythonを使用してます。

初めの方はfrontend,backendともにどちらも最小限のテストコードしか書いておらず、それでも保守管理にはそこまで問題はなかったのですが、規模が大きくなるにつれてバグだったりエラーが多発するようになっていました。

また、チームの人数も少しずつ増えると実装する機能をそれぞれに分散するため、チーム内のプログラミング能力の差によってコードの書き方に大きく違いがでてしまうという問題もありました。しかも、新しい人が加わると既存コードの説明をするために何回も打ち合わせを繰り返しておりサポートに大きな時間を割かれていました。

こういった経緯から 「既存コードをうまく説明可能な状態で保守管理できる方法」 はないのかなと思い始めました。
Reactについては「Storybook」というOSSでコンポーネント管理ツールがあり、とても便利に活用しています。

しかし、Pythonに関しては調べてもそのようなライブラリが見当たりませんでした。
そこで、どうせなら自身でOSSとして開発しようと思い、Logicbookの開発を始めました。

Logicbookは「Storybook」を意識していて、開発においてかなり参考にしています。
現在はまだβ版ですが、今後も開発を続け正式リリースできることを目標としています。

Logicbookでできること

GUIでできることはREADMEやソースコードの確認、関数の実行、テストの自動実行などいくつかあります。

example_join.png

Example

Exampleの項目では実際の関数に対して任意の入力を行いどのような出力がされるかを確認できます。複雑な関数でも一つ一つの関数の入力と出力のみを意識するだけで扱えるため、挙動を理解しやすくなります。

example_movie (1).gif

Test

Testの項目ではファイルに変更が加わり保存されたタイミングで自動的にテスト実行されます。(GUIの「RUN TEST」をクリックしても実行できます。)
テスト結果に応じて色分けされて表示されるので、視覚的にわかりやすいと思います。

test_movie.gif

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が表示されていれば成功です。

example_join.png

その他、詳しい方法についてはドキュメントを参照してください。

おわりに

Pythonで関数を独立させて管理、テストできるOSSライブラリは今まであまりなかったかと思います。

Pythonはわかりやすく書きやすい反面、厳密な型定義がなくtestを書く人も少ないためバグが発生しやすい言語でもあります。将来的にはLogicbookで一つ一つのロジックを管理しながら開発していくのが当たり前になり、コード管理の一つのアプローチになればいいと考えてます。

まだβ版で正式リリースに向けて開発中なので、興味ある方は一度使ってみて、意見や要望などをいただけたら幸いです。
また、コントリビューターとして一緒に開発していただけるメンバーも募集しているので参加してもらえると嬉しいです。

Logicbook開発者: 平野 流

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?