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

続きを読む

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

続きを読む

プロフィール画像

Takuya Makino

自然言語処理の研究開発に従事しています。自然言語処理に関する研究から製品化に向けた開発に興味を持っています。本ブログでは自然言語処理、機械学習、プログラミング、日々の生活について扱います。詳細はプロフィールを御覧ください。

自然言語処理の研究開発に従事

Kanagawa, Japan