Goby: Rubyライクな言語(2)Goby言語の全貌を一発で理解できる解説スライドを公開しました!

こんにちは、hachi8833です。
前回のGoby: Rubyライクな言語(1)Gobyを動かしてみるから時間が空いてしまいました。久方ぶりのGoby記事です。

スライド「Goby ← Golang + Ruby」

「Gobyとは何ぞや」をまとめたスライドを趣味で作りました(47ページ)。

実はこのスライド、明日開催のGo Conference 2018 Springに応募したものの選に漏れた後にそのまま作り始めたのですが、やっているうちにだんだんムキになってきてついつい手を入れまくってしまいました。

Gobyコントリビュータにも評判がよく、BPS社内勉強会でもお披露目したので、ここに公開いたします。

英語ベースですが見ればだいたいおわかりいただけると思います。どうしても日本語で見たい方は以下の日本語版スライドもついでに作りましたのでどうぞ。ただ英語の方がフォントやレイアウトがきれいにキマるんですよね…

Gobyの理念というかキャッチコピーは私が@st0012さんとのやりとりで得たことを元にそれっぽいのを考えましたが、日本語にしようがないのでそこだけ英ママです。

スライドを作ってみて

こうしてまとめてみると、Gobyは(自分にとってはですが)手のひらサイズというか謎が割りと少ない言語だなぁとしみじみ思ったりなんかしました。人によっては物足りないと思うのかもしれません。

私にとって謎の多くは、未実装の部分とドキュメント化されてない部分と私がまだ@st0012さんに質問していない部分、そして私がRubyの方でまだわかってない部分だったりするので、そこは自分たちの今後の楽しみということで。

あ、VMに手を入れたことがあるのはまだ@st0012さんしかいなかった💦。VMが自分にとってボスキャラですね。

昨年5月頃に参加してから今日この日までの1年間、気がつくまでもなく日本でほぼほぼ唯一Gobyに通じている私ですが、このスライドを公開したが最後、来月にはあっという間に他の方々に追い抜かれるでしょう。

さようなら、つかの間の日本一。

参考: 日本語版

たぶん今後は英語版スライドしか更新しないと思います。

最近のGoby

前回の記事を出した後、Gobyもいろいろ変わってきました。

バージョン0.1.3から0.1.9へ

詳しくはリリースノートをどうぞ。

4/9に★2600超え

プラグインがmacOSでも動いた

スライドにも載せましたが、Gobyの「プラグインシステム」(Goパッケージを動的に直接読み込んで動かすという野心的な試み)が当初Linux環境でしか動かなかったのが、いつの間にかmacOSでも動くようになってました。プルリク(#634)もらうまでメンテナーの誰も気づいてなくてびっくりでした。

Windowsはどうなんだろう…

get_blockキーワード

  • get_blockという特殊なキーワードがGobyに追加されました。動きからしてメソッドでは実現不可能っぽいですね。Rubyの&blockパラメータの代わりにこれを使えます。@0012さんもどっちがいいか迷った(まだちょい迷ってる)そうです。記号を使わない分好ましいかなと個人的には思っています。
def bar(block)
  block.call + get_block.call  # ブロックを2つ取っている
end

def foo
  bar(get_block) do
    20
  end
end

foo do
  10
end

第1回Gobyビデオカンファレンス開催

先週4/7の日本時間深夜1:00に、Gobyコントリビュータの面々(総勢5名)が初めてGoogle Hangoutsで顔見せしました。

台湾、ベルリンなどさまざまな地域の人々が一同に会し、@st0012さんが頑張って「VMを今後レクチャーしたい」など所信を述べ、終わった後でSlackが懇談会のごとく盛り上がりました。

記念にスクショをいくつか撮ったのですが、スクショなのにボケボケになってしまいました。やっぱり写真下手だわ自分…

シンタックスハイライト増やし中

Rubyのシンタックスハイライトがだいたいそのまま使えますが、やっぱり欲しいですよね。

会議の後盛り上がった勢いで、あっという間にVim用Sublime Text 3用のシンタックスハイライトができてしまいました。ありがたや!

こうなるとJetBrainsのIDEとかVSCodeでも欲しくなっちゃいますね(チラッチラッ

「xxメソッド/クラスがないよ!」

標準で足りないクラスやメソッドはいろいろありますが、欲しかったら足しゃぁいいんですw

Go言語で書けるのはもちろんですが、速度がそれほど重要でない派生的なメソッドならたとえばlib/にGobyで書くこともできます。ここに置いた外部ファイルのコードはオートロードされるので、プルリクして通ればもうそれが標準メソッドです。もちろんプロジェクトローカルに書いてrequire_relativeすることもできます。

考えてみたらGo言語でもRuby言語でも好きな方で書けるも同然ですね。Gobyは「メタプログラミングは基本取り入れない」としつつ、クラスの再定義(モンキーパッチ)は許容していますが、きっとこのためだったんだなと今理解しました。

参考: Gobyの組み込みクラスにメソッドを追加する方法 - Qiita — 先越されちゃいましたが、hanachinさんが昨年書いてくださった記事です。

忙しい方ならGobyのDocker imageを取ってくるのが一番楽だと思います。

※ 思い思いにメソッドやクラスを増やすと散らかりそうなので(つか散らかりつつある…?)、そろそろネイティブクラスと標準ローダブルライブラリの交通整理というか編成の方針を決めないといけないのかな?と今思いました。相談しよう、そうしよう

関連記事

Goby: Rubyライクな言語(1)Gobyを動かしてみる

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ