鱒身(Masu_mi)のブログ

知った事をメモする場所。

ツールを生み出すRubyコミュニティは作法のハードコートで育ったのかしら

このまえ同期と少しRubyについて話した。 同期はRubyを触った事が無いらしく雑談の中で「どんな感じ?」と聴いてきた。

雑談は紆余曲折を経て「何故Rubyコミュニティは多くのツールやDSLを生み出してきたのか?」について答える形で終わった。 私も”メタプログラミングRuby”を読んだばかりで詳しくないため印象に過ぎないが結論めいた物は出たのでメモしておく。 ただ本当にこんな結論だったかは酒も手伝いイマイチ覚えていない。

フルスタックエンジニアってRubyist界隈から始まった言葉なのですかね

Rubyにはシステム構築・管理等をコーダー視点で解決するツールが非常に多い。 Rubyはあくまで開発者を想定している印象がある。 企画・システム管理者を想定したツールって少ない印象がある。

私は開発者だし恩恵を受ける立場だけど、CMS等は少なく他の立場にも優しいコミュニティといった印象はない。

柔軟で読みにくいRuby

まず言語の特性から考えてみた。 Rubyはメタプログラミング・DSL実装が気楽に出来るほど柔軟だ。 (PHPで似た事をやろうとすると記述量がとんでもなくなるし泣ける)

思いつくだけでも、

  • 無名関数
  • ブロック
  • オブザーバブルな言語操作
  • 単純なオブジェクトモデル
  • モジュールインクルード
  • リフレクション
  • オープンクラス
  • (ブロック内self)の動的スコープ
  • 多様な略記

そして可読性を消し飛ばせる言語でもある。 そのためユーザー(プログラマー)間で可読性を維持する為に作法・イディオムの共有が重要になる。

作法のハードコート

この問題の一部はRuby自身の柔軟性が解決している。 柔軟であるため関心対象を限定したDSLを作る事が可能で「作法」をハードコートしてしまう。 初級者は上級者の強制した作法の影響を受ける。 これにより作法の共有という曖昧な文化的問題の多くは(少なくともDSLを書ける程度の)上級者に限定される。

カリスマ性って大事

では上級者の間で作法の共有はどのように維持されるのか。これはカリスマが解決しているのではないか。 要するにMatzが上級者を牽引して言語の(使い方含めて)方向性が定まる。 実際とても積極的に引っ張る人という噂だし…

開発者向けツールが生まれる流れ

要するに、柔軟で可読性を落とせる言語でカリスマの牽引力が強いため以下が繰り返される。

  1. Rubyistは敷居が低い事もあり可読性維持の為にDSL・ツールを作る
  2. Rubyに触れているとDSLなどツール類に出会う。意欲的なユーザーは”開発者向けツール”に挑む
  3. 受け入れられる開発者向けツールは既存の上級者に受け入れられる作法を共有している必要がありRubyコミュニティ全体で方向が維持される
  4. また車輪の再発明を避けると、開発以外の問題を対象とした言語・ツールが生まれる

酔いが醒めてから

Matzが居なくなったらどうなるのかは気になる点だ。 コア開発の方では不穏な噂が立っては消えしている。 標準化はMatzの仕事抱え込み過ぎ状態を解消する布石になるのかも知れない。

上級者向けの解決要因は大分怪しい。コア開発レイヤのコミュニティの印象になっている。 そして開発者がDSLやツールを作る時に「なぜ”開発者向け”ツールを作るのか」には実は答えられていない。

酔っぱらってると変な論に落ちるもんですねって言い訳を書きたくなるし書いている…