Linkers Tech Blog

リンカーズ株式会社の技術ブログです。

「ポストMatz」はいつ、誰が? 2019年2月Matz会ダイジェスト

こんにちは、情報システム部の鈴木です。

弊社では技術顧問: まつもとゆきひろ氏を招いて定期的に勉強会(通称: Matz会)を行なっています。お待たせしました、今回は今年2月開催分のレポートです。

今回のテーマはこちらです。詳しいレポートは「続きを読む」より。

Rubyで音楽を奏でる

弊社エンジニアの大河原さんによるLTです。彼の趣味である音楽から生まれたテーマでした。

目指す挙動と実装方針

「楽譜データを入力すればその通りの音声ファイルが出力される」スクリプトを目指します。こんなイメージです。

$ echo "ド レ ミ ファ ソ ラ シ ド" | ruby something.rb output.wav

音声データの扱いを学ぶという目的も兼ねて、サンプリング済みの音声データを加工する方針に決めました。このためにRubyで音声ファイルを扱うGemのひとつである ruby-wav-file を採用します。ベースとなる音声ファイル(ピアノ音源)は 魔王魂 様からダウンロードします。

実装と課題

まずはサンプル音源を1オクターブ高い周波数に変換する実験です。公式の サンプルスクリプト では周波数は2倍になりますが音源の長さが1/2になってしまいます(要するに早回しです)。音源の長さを保つため「タイムストレッチ」という処理をかけます。完成したスクリプトがこちらです。

play-music-by-ruby/extend_wav_with_keeping_pitch.rb at master · expajp/play-music-by-ruby

ややノイズがありますが、音源の長さを保ったまま1オクターブ高い音に変換できました!

原理的には、同様の処理で周波数を 2^ \frac{1}{12} 倍ずつ変換した音声を用意すればメロディが奏でられる…ところですが、諸事情により発表はここまで。

まつもとさんによる補足

まつもとさんから、プログラミングにより音声を生成するための技術として Sonic Pi の紹介がありました(本当に詳しい…!)。ただ今回の取り組みについても「周波数を2倍にする処理がこれだけ簡単に実装できるのはインパクトがある」との評価をいただきました。

"xruby syndrome"

続いては筆者鈴木による発表です。2019年1月頃、まつもとさんがTwitterに投下した一連の投稿を深掘りする目的で発表しました。

エンジニアへの提言

背景として、2018年12月に実施されたRuby 2.6.0のリリースがあります。このリリース内容に関し、匿名掲示板Redditにおいて ネガティブな投稿が寄せられる ということがありました。これに対し、まつもとさん本人がTwitterで自身の経験も踏まえ意見を投稿しました。

20年以上前、Rubyに不満を持ったある人物がRubyリポジトリを丸ごとコピーし、著者名を自分にして勝手に運営し始めたということがありました。しかしまつもとさんは静観していたところ(ライセンス違反だがどうなるか興味があったとのこと)次第に更新は滞りこのリポジトリは自然消滅したようです。

似たような現象を繰り返し観測したまつもとさんはこれらを "xruby syndrome" と呼び、「不満を述べるのは簡単だし憂さ晴らしにもなるが、コミュニティのためにはならない」「そうしてPythonはGuidoを失ったのだ(と思う)」(後述)として警鐘を鳴らしました。そして「建設的になろう」と提言し、具体的な行動として「Issueを書き、Pull requestを送ってほしい」と述べました。

Pythonコミュニティで起きたこと

Pythonの言語仕様である "PEP" のひとつである PEP 572, Assignment Expressions が採択(この議論は大荒れに荒れました)された直後、Python生みの親Guido van Rossum氏が 「優しい終身の独裁者」 つまりプロジェクトの最高責任者から突然引退するということがありました。一連のツイートではこのことに言及しています。

Ruby長期運用計画

続いて発表者からまつもとさんに対して具体的に質問していきました。Rubyの更新が「遅い」という意見については、既にRuby自体が幅広く使われている事実と、新機能が増えることを歓迎する人が意外に多くないという経験から「意図的にコントロールしている」とのことです。また上記Redditで言われていた「チームでの運営はどうか」については、複数人での運営は必ず無責任になる人が出るとの考えから「取り入れることはない」と断言されました。

発表の最後に、まつもとさんがRubyの責任者を引退したあとのことを伺いました。「今すぐには考えていない」とのことですが「Pythonみたいになるのは望ましくない」とも考えており、 「2025年に60歳を迎えるので、それまでには動きたい」 と含みを持たせた発言がありました。また後継者となる人物については(もちろん未定ですが)、Ruby本体とは別の小さいプロジェクトを実際に任せ、責任者としての適性を探りたいということを考えているそうです。

勉強会ダイジェストは以上になります。

まとめ

技術的な実験の話からマネジメント関係の話まで、幅広い内容を扱えたのではないかと思います。そしてエンジニアたるもの、不満があったら Pull requestを送りましょう!

またどんな話題でも一歩踏み込んだコメントをしていただいたまつもとさんに、改めて感謝したいと思います…!

We are hiring!!

リンカーズ株式会社では、今回取り上げた月例勉強会の他、毎週月曜に前島真一(@netwillnet)氏との読書会を行うなど、社内勉強会に力を入れています。興味を持った方、Rubyエンジニアとしてキャリアアップしたい方、ぜひこちらからお問い合わせください。

採用情報|オープンイノベーションはリンカーズ。マッチングで世界を変える。

今後も更新を継続していく予定です。ご期待ください!