mruby advent calendar 2016 5日目の記事なのですが、公開が遅れ失礼します。
前日の様子です。
先日の Fukuoka.rb で、mrbgemをライブコーディングで作る、という一芸をやったのですが、とはいえ特に映像などを記録するでもなくという感じでした。
せっかくですのでもう少し違う実装で再現してスクリーンキャストを撮ってみました。公開します。
struct passwd
をバックデータに getpwnam(3)
をmrubyでラップしたgemを作っています。
ただ、このスクリーンキャストのままのコードだと、 getpwnam(3)
の返り値を free しかねないということに気づいてしまったので、デモはデモとして、より適切であろう最終形を gist に残しておきます。
「C言語はとにかく罠が多い」という別の学びもありつつ。。
mgemを作る流れは、僕はだいたい以下のような感じです。
- mruby-mrbgem-template でテンプレを作る
- manを読む
- バックデータの構造体を書く。一緒にfreeする関数も書く
- manをひたすら読む
- イニシャライザを書く。ライブラリによるが大抵
***_init()
的なものをラップするはず - 構造体のメンバへのアクセッサ関数を書く
- この辺でコンパイルに失敗する
- コンパイラさんからのお気持ちを受け止めて修正する
- コンパイルが通る
- この辺でテストを書く。好みによりもっと先でも
- 引き続き、その他の処理を書く
ご参考までに。どんどん面白mgemが増えるといいですね!
mruby advent calendarは、明日(今日...)も、 @yhara さんの記事が掲載予定です。