Slide 1

Slide 1 text

mruby のご紹介 〜PHPから使ってみるぞ!〜 2014-10-17 Fukuoka.php

Slide 2

Slide 2 text

誰?

Slide 3

Slide 3 text

近藤うちお 技術基盤チーム @ GMOペパボ ルビースト Fukuoka.rb 関係者 でもRubyより前に触ったのはPHPだよ! 出身はタモリがdisってる愛知です

Slide 4

Slide 4 text

[PR]著書です(共著)

Slide 5

Slide 5 text

めっちゃルビーストやん なんしにきとうと?

Slide 6

Slide 6 text

仕事 主に福岡でやってるサービスを見てます ・minne(Rails, しかしよく触るのはPuppet) ・ムームードメイン
  (PHP/モバイル向けなどがRails) ・ロリポップ!!!!!!レンタルサーバー
  (ほぼPHP)

Slide 7

Slide 7 text

PHP!!!

Slide 8

Slide 8 text

最近書いたPHP ! (のC拡張へのパッチ)のコード

Slide 9

Slide 9 text

Yes, I am PHPer!!1

Slide 10

Slide 10 text

本題

Slide 11

Slide 11 text

php-mruby

Slide 12

Slide 12 text

mruby?

Slide 13

Slide 13 text

mruby三行 組み込み向けのRubyの実装 ISO Ruby相当(だいたい1.8) luaっぽいことがRubyでできる、みたいな?

Slide 14

Slide 14 text

「組み込み」 物理的なデバイスと言う意味だけでなく、 Cベースの他のソフトウェアに組み込める

Slide 15

Slide 15 text

e.g. mod_mruby https://suzuri.jp/matsumotory/86257/mug/m/white

Slide 16

Slide 16 text

e.g. mitchellh/go-mruby cgoを使ってる

Slide 17

Slide 17 text

php-mruby chobi_e さんの 実装が代表的

Slide 18

Slide 18 text

(m)rubyを 他言語に組み込んで どうするの?

Slide 19

Slide 19 text

僕はこう思ったッス

Slide 20

Slide 20 text

例えば、 バラバラのコンポーネントの 設定/共通部分をmrubyで。 フロント Rails なんか分かんない 古いやつ CGI… 共通API Go 顧客管理 PHP+Zend

Slide 21

Slide 21 text

ほら、アレですよ マイクロサービス?ってやつ

Slide 22

Slide 22 text

SOA/microservices の ボトルネックの一つ 共通設定部分をどう管理する?

Slide 23

Slide 23 text

mrubyなら DSLでスマートに 設定・ロジック管理できそう

Slide 24

Slide 24 text

※ 個人の感想です LTということで、 あまり深入りしない…

Slide 25

Slide 25 text

動かしてみよう

Slide 26

Slide 26 text

おてもとで

Slide 27

Slide 27 text

やるぞ!

Slide 28

Slide 28 text

segmentation fault _人人人人人人人人人人人人人人人_ >               <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

Slide 29

Slide 29 text

かなりカジュアルにセグる… @hoge みたいなインスタンス変数がダメぽ $hoge ならいける(サンプルもそう) PHPじゃないので、これはグローバル変数 あれ……???

Slide 30

Slide 30 text

いろいろやって Rubyの外部ファイルから DSLを読み込んで PHP内部で使うとこまできた

Slide 31

Slide 31 text

demo

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

cf. 手前味噌ブログ ! ! ! ! ! Goでも「全く同じDSL」を解釈・利用可能 http://udzura.hatenablog.jp/entry/2014/09/18/163715

Slide 34

Slide 34 text

コツとか PHP.call_user_func がmrubyの側で 定義されてる。これをブリッジにできる。

Slide 35

Slide 35 text

! ! ! ! ここでも @prefix なんて利用できないぞ! 甘えるな!

Slide 36

Slide 36 text

所感

Slide 37

Slide 37 text

go-mruby がかなり良いので あんな感じのAPIがいい… mrubyをDSL的に使う上では最高な設計 ミシェルハシモト氏のコードめっちゃ奇麗 2012年から更新が無いし、 書き直してみたいかも…

Slide 38

Slide 38 text

ということで PHP拡張の書き方を学習中… _人人人人人人人人人人人人人人人人_ > ZEND_BEGIN_ARG_INFO_EX  <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

Slide 39

Slide 39 text

あと PHP力が低すぎて 奇麗なコードにならないぞい…… さっきの、クラスすら無い……

Slide 40

Slide 40 text

まとめ

Slide 41

Slide 41 text

東京風まとめ ペパボ福岡支社では @udzura に厳しく PHPを教えてくれる人を募集しています

Slide 42

Slide 42 text

ご清聴 ありがとうございました! PHPは

Slide 43

Slide 43 text

Credits Font: やさしさゴシック http://www.fontna.com/blog/379/ Theme: Azusa http://memo.sanographix.net/post/82160791768 ! ! あと、テーマカラーのオレンジ色(とフォント)は @tatsuoSakuraiさんのスライドからいただきました…