本記事ではpre-commitを使ってコミット前にPythonプログラムを自動検査する方法を紹介します。 モジュールのインポート順序や行あたりの文字数を始め、人が意識せずに標準化したいルールは多くあります。 このようなルールをコミット前に自動で検査・修正することでより簡単にきれいなプログラム開発を進められます。

pybind11を使うことでC++で書いたライブラリをPythonから利用できるようになります。 例えばDeep LearningフレームワークのPyTorchもコア部分をC++で実装し、pybind11を使ってPythonから利用できるようになっています。 pybind11の公式リファレンスを読むことで基本的なことはわかったのですが、Pythonモジュールをサブモジュールごとにファイルに分割する方法がわからなかったので本記事を作成しました。 特にプログラムが複雑になってきたときにファイルを分割してサブモジュールを作成したいことが出てくると思います。 ベストプラクティスなのかわかりませんが、本記事が同じ疑問を持っている方の解決策になれば幸いです。

本記事ではC++の単体テストフレームワークであるGoogle Testを、CMakeを使ってプログラムにリンクできるようにするための方法を紹介します。 Google Testを毎回手動でダウンロードするのは面倒ですが、本記事で紹介する方法ではCMake内でGoogle Testをgit submoduleで管理できます。

本記事ではGitHub Flowのように機能追加やバグ修正などの度にブランチを作成して開発を進める際によく利用する機能をユースケースに分けて紹介します。本記事のキーワードはstash
、rebase
、cherry-pick
です。
これらの機能を利用することで、複数のブランチで非同期的に開発が進んでも、簡単に差分を自分のワーキングディレクトリに取り組むことができるようになります。

私が機械学習研究をするときのコード・データ管理方法 - Qiitaがいい話で参考になった。 特に、データがどのプログラムから作成されたかをgitのコミットで管理するところが勉強になったのだけど、gitのコマンドをよく忘れてしまうので、ここに簡単な例を書いておいて、いつでも参照できるようにしておく。