Tech Racho エンジニアの「?」を「!」に。
  • 開発

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を動かしてみる


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。