いうプロダクトを公開しました。それは、Linuxのユーザや権限をGithubのTeamと連携して運用を楽にするというツールでした。必要としそうな人の目に触れたのではないかと思っています。継続して機能追加していくというモチベーションにつながっていて、非常にありがたいです。libnssモジュールをCで実装しています。Objectを吐き出しても良かったのですが、それだと技術的挑戦が足りないとして、触れてこなかったCに挑戦しました。v0.2としてgoの部分をCに置き換えるという作業を行い純粋にCのプロダクトとしました。そのことで、CIをシンプルにでき、類似の実装をしなくて良くなりましたし、見通しがずいぶん良くなった気がします。今回、Cのプロダクトを作るにあたって、Cを勉強する以外にどんなことをやったか振り返ってみようと思います。Formatまず、自分が作るのがlibnssのモジュールなので既存のものをgithubで検索してひたすら読んでみました。有名なプロダクトであっても、あまりこれがスタンダードというものがなく、さあ、どうしようという状態になっていました。いう整形ツールがあるよという情報を得ました。いったそれぞれの流派を選択できる様になっていたのでとても便利でした。適当にformatを定義し(設定は下記)、vimと連携することで保存時にきれいに整形されるという感じになりました。formatのdiffをチェックするようにもしました。自前でassertion作ってたりといて結構カオスです。frameworkはないかなと調べると良さそうなものがいくつかあります。signalを検証する仕組みもあります。テストケースのプロセスを分離して実行結果をレポートする仕組みによるものです。Theoryテストを簡単にやれたりテストスイートを楽に設定できるのもメリットなのかなと(他のフレームワークを使って比較してないので)想像しています。documentationMakefile次に、テストを頻繁に実行しだすとコンパイルしてテスト実行というのが面倒になってきます。出番で、ビルドやビルドに必要な依存ライブラリ等をセットアップすることを定義していきます。自己文書化という裏技があるようなので導入しました。みたいなことができます。$$2}'ターゲット名の後ろにコメントを書くことでそれらがターゲットの一覧となるようにしています。Packagingプロダクトが完成すると、使いやすくするために、パッケージにしたくなってきます。一気に作成されるようにします。いうコマンドだけで完結してしまいます。出たりして統合テストが出来てなかったことに気づきBashで書きました。出来たかもしれません。ConclusionCのプロダクトを作る際にやったことをまとめると以下です。前向きで楽しくなるものだなというのを改めて思いました。v0.3では共有ユーザ機能を追加しています。指定したユーザをチームで共有し認証することができるというものです。ユースケーストしては、アプリなどの実行またはdeployのためのユーザを共有するのを想定しています。limitを超えAPIの手前にproxyを設置してリクエスト回数を減らすという施策が必要になってきます。APIのproxyを不要にしようと考えています。使う感じになるイメージです。