2018年5月31日から6月2日まで、宮城県仙台市の仙台国際センターでRubyKaigi 2018 が開催されました。 1日目の基調講演は、Rubyの作者のまつもとゆきひろさんです。 「 箴言(Proverbs) 」というタイトルで、3つのことわざを取り上げました。そして、ことわざに示される先人たちの知恵から、プログラミングやコミュニティについて学べることを話しました。
名は体を表す
1つ目のことわざは「名は体を表す」です。 まつもとさんの座右の銘が「名前重要」とのことで、プログラミングにおいて名前付けは非常に重要だという話から始まりました。
プログラミングには物理的な実体がないため、クラス、メソッド、変数などの概念に名前をつけることになります。 どのような目的で利用されているかを十分に理解することで名前をつけるのが簡単になり、よい名前がつけられれば使い勝手のよさにつながります。「 よいプログラマーになるためにはよい名前をつけられるようになることが必要で、それだけ名前にはパワーがある」と、まつもとさんは言います。
ここで、名前付けのよくない例としてyeild_self
を紹介しました。
def yield_self
yield self
end
yield_self
は名前と挙動がほぼ同じで何がしたいかを表現できていなかったため、then
というエイリアスを追加しました(Feature #14594 ) 。RubyKaigi前日にコミットされたそうですが、まつもとさんによるバージョンを上げる以外のCRubyへのコミットは久しぶりで、およそ5年ぶりとのことです!
また、プロジェクトやコミュニティにおいては、よい名前は旗印や求心力になり、コミュニティに対する愛着を強める力があります。
「もし“ Ruby” という名前をつけなかったら今のように広く使われたり、RubyKaigiも開催されていなかったかもしれない」と、まつもとさんは言います。 ただ、いま名前をつけるとしたら、googlabilityの高い名前をつけるのがよいということでした。
時は金なり
2つ目は「時は金なり」ということわざです。 「 時は価値なり」とも言い換えられますが、ここでは、Rubyが価値を生み出すときに果たしている役割について話しました。
価値を生み出すためには、1日24時間という制約の中で時間を有効に使うことが求められます。 「 与えられた時間の中で、何をするかの選択・優先順位は自分で決める必要がある。プログラミングも同じ。いかに短い時間で価値のあるソフトウェアをつくるかを考えなければならない」と、まつもとさんは言います。
Rubyは、時間を有効活用して生産性を高めてくれるためのパワフルな言語といえます。例えば、便利で多様なメソッド、ライブラリの充実度合い、やりたいことをすぐ表現できることはもちろんのこと、助けてくれる人を見つけやすい、成熟したコミュニティといった環境面での特色もあります。他にも、メタプログラミング、DSLといった方法で、簡潔に書く方法も提供されており、Paul Grahamの「簡潔さは力なり」というエッセイにある「プログラミング言語の進化は、プログラムを簡潔に書くことができる方向で、それはプログラミング言語がパワフルになっていることとイコールである」の一文も体現しているといえます。
また、Ruby2.6では、JITコンパイラなど実行速度がより高速化される機能が実装され、時間を有効に使う=価値を生み出していることにつながっているといえるでしょう。
塞翁が馬
最後に「塞翁が馬」を挙げて、Rubyの軌跡について話しました。 2004年のRuby on Railsの登場により注目されるようになったRubyですが、2013年頃からは人気がおちつき、近年では「Rubyは死んだ」と揶揄されることがあります。 しかし、「 一喜一憂せず、Rubyを進化させ価値を提供し続けていく」と、まつもとさんは言います。
「ゆく河の流れは絶えずして、しかももとの水にあらず」という一節があるように、絶えずRubyを改善し続けることにまつもとさんは重点を置いています。しかしRuby1.8から1.9へのバージョンアップの際に、その非互換性のためにコミュニティーが分断してしまった時期が長くありました。その出来事を踏まえつつ「分断はできるだけ起こしたくない。もし起こしてしまっても短くて済むようにしたい。互換性を犠牲にせず、それでも変化は止めずに前進していく」と語ります。
現在Rubyは、コミッターのみなさんが直接の開発を行い、まつもとさんは言語デザイナーとして交通整理をしたり提案を取り込んだりするスタイルで改善がすすめられています。
まつもとさんは最後に、「 Rubyはコミュニティーの中で“ こんなRubyがあったら” というアイデアによって育てられているものです。RubyをよりよくするためのアイディアをまわりのRubyistと話し合ってください。そして、よいアイディアを教えてください。それがRubyKaigiなのです」と締めくくりました。