読者です 読者をやめる 読者になる 読者になる

ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

mruby gemを作るスクリーンキャストです

mruby advent calendar 2016 5日目の記事なのですが、公開が遅れ失礼します。

前日の様子です。

qiita.com


先日の Fukuoka.rb で、mrbgemをライブコーディングで作る、という一芸をやったのですが、とはいえ特に映像などを記録するでもなくという感じでした。

せっかくですのでもう少し違う実装で再現してスクリーンキャストを撮ってみました。公開します。

www.youtube.com

struct passwd をバックデータに getpwnam(3) をmrubyでラップしたgemを作っています。

ただ、このスクリーンキャストのままのコードだと、 getpwnam(3) の返り値を free しかねないということに気づいてしまったので、デモはデモとして、より適切であろう最終形を gist に残しておきます。

C言語はとにかく罠が多い」という別の学びもありつつ。。


mgemを作る流れは、僕はだいたい以下のような感じです。

  • mruby-mrbgem-template でテンプレを作る
  • manを読む
  • バックデータの構造体を書く。一緒にfreeする関数も書く
  • manをひたすら読む
  • イニシャライザを書く。ライブラリによるが大抵 ***_init() 的なものをラップするはず
  • 構造体のメンバへのアクセッサ関数を書く
  • この辺でコンパイルに失敗する
  • コンパイラさんからのお気持ちを受け止めて修正する
  • コンパイルが通る
  • この辺でテストを書く。好みによりもっと先でも
  • 引き続き、その他の処理を書く

ご参考までに。どんどん面白mgemが増えるといいですね!


mruby advent calendarは、明日(今日...)も、 @yhara さんの記事が掲載予定です。