dcos-metronome-pythonというOSSをリリースしました


こんにちは、@s_tsukaです。

仕事でmetronome(mesos上で動くスケジューラーアプリ)を利用することがあり、それを操作するためにdcos-metronome-pythonというクライアントライブラリを作成しリリースしました。

https://twitter.com/s\_tsuka/status/839860854321397760

https://github.com/tsukaby/dcos-metronome-python

使い方はREADME.mdに載っている通りです。clientオブジェクトを作成して、create_jobなどのメソッドをcallすればOKです。

OSSは過去にも何個か開発していますが、今回のものが一番まとも(使ってもらえそう)な感じです。

まだまだ微妙なところは多いですが、とりあえず使えるレベルではあります。今回初めてちゃんとPythonを書いたので、構文などの基本的なところ、テストなどの環境周りなどいろいろこれで良いのかかなり不安です・・・。よろしければPython詳しいみなさん、PRで指摘をお願いします!

開発余談

以下どうでも良い話です。今回開発してみてよかったところや悪かったところについてつらつらと書いていきます。

よかったところ

  • Python意外と分かりやすい。こちらの記事にも載せましたが、1冊本読んで他の慣れてる言語との違いを把握しておけばまあまあ書けて読めるようになりました
  • 会社の支援(?)。会社の、というか部署の方針としてOSSとして公開できるものは公開していくの推奨のようで、今回のライブラリは仕事の時間も使って開発したんですが、OSSとして公開できました。リポジトリを会社のorganizationに入れても良いんですが、自分もいつまで今の会社にいるかわかりませんし、自分が退職したら絶対メンテされないだろうから個人リポジトリにしてます
  • protobufやっぱ便利。entityの定義をしておいて、そこからクラスを自動生成はやっぱり便利ですね
  • 参考となるライブラリがあって非常に助かった!thefactory/marathon-python こちらはmesos上で動くアプリケーション実行環境marathonのclient libraryです。metronomeはcron的な定期実行用でmarathonはAPIサーバのような長期実行用です。そのclient libraryです。これが参考になって助かりました。というか区分的に同じなのでできるだけ似せて作りました

わるかったところ

  • コンパイラによる静的チェックやっぱほしい・・・。実行してみたらそんな属性ないと言われたり、初心者がやりがちなミスが非常に多かった。やっぱコンパイラは欲しいです
  • protobuf3 + Pythonが意外と辛い。これは別途記事にします
  • テストがまだまだ微妙。integration testも用意してますが、dockerコンテナをnetwork:hostで動かさないといけなかったりしてそのあたりがまだまだ使いづらいです。

いろいろどうでも良いことを書きましたが、今後も細々と開発していこうと思います。