RubyHero-2014のEric Michels-Aubertへのインタビュー

Ericは2014年のRubyヒーローであり、さまざまなRubyコミュニティ(Ruby Summer of Code、Google Summer of Code、Rails Girls Summer of Code)で人気のメンターであり、ただの興味深い人物です。 当初、インタビューは「フレーズを短くする」ように見えるはずでしたが、エリックはこの問題に創造的にアプローチしたので、完全に公開します。





私のチームがWebアプリケーションをPHPからRailsに切り替えることにした2006年に、 Rubyの完全な作業を開始しました 。 当時のRailsはバージョン1.0レベルでした。 Rubyバージョン1.8.4とMongrel Webサーバーを使用しているようです。 これは、Rack、Bundler、RubyGems.org、GitHubの前でした。 振り返ってみると、私が毎日使用しているこれらのツールなしでRubyで作業することは想像しにくいです。





ルビーは人々がコンピューターより価値があることを理解するのを助けました 。 ほとんどのプログラミング言語は、迅速なコード実行のために最適化されています。 Rubyは、コードをすばやく読み書きできるように最適化されています。 これにより、コードの理解が変わったため、コンピューターではなく人のために書いています。





言語としてのRubyは非常にクールですが、Rubyコミュニティがはるかに好きです 。 その一環として、私は世界中の素晴らしい人々とコミュニケーションを取ります。 Meetupや会議で新しいRubyプログラマーに会うのが好きです。 ブログ、ポッドキャスト、ビデオなどで知識をオープンに共有している人から多くのことを学びました。 Rails Girls、RailsBridge、およびプログラミングをより多様で有意義なものにする他のITコミュニティが大好きです。 Artoo、Kids Ruby、Shoes、Gosu、Sonic Piなどのプロジェクトの作成を促すRubyコミュニティの創造的な精神が好きです。





Rubyの構文がより一貫していれば、Rubyの方が良いと思います。 たとえば、Rubyには、ハッシュを作成する2つの異なる方法と、関数(def、proc、Proc.new、lambda、->、{}、do ... end)を作成する7つの異なる方法があります。名前付き関数であれ匿名関数であれ、関数を定義する1つの方法。 また、RubyのエイリアスはPythonの哲学に比べて多すぎます。Pythonの哲学では、何かを行うための明確な方法は1つだけであるべきだとしています。 デザインは意思決定の技術です。 1つのメソッドに複数の名前がある場合(たとえば、map / collect、reduce / inject、find / detect、find_all / selectなど)、Rubyの作成者は、この選択をユーザーに渡すことで難しい決定を避けました。 Rubyには、わずかに異なるメソッドの類似した名前も多数あります(==、===、eql?、equal?など)。 私はほぼ10年間Rubyを毎日使用していますが、eqlの違いをまだ覚えていませんか? そして等しい?、プロンプトを見ないで。 これらのメソッドには、よりわかりやすい名前を付けてください。



もう1つの例は、aliasとalias_method、またはprivateとprotectedのわずかな違いです。 SymbolはフリーズしたStringに置き換え、言語のユーザー部分から削除できると思います。 たとえば、Perlから来たグローバル変数の場合は、Rubyから除外したい他の言語の「機能」がいくつかあります。 私の意見では、これは他の言語とは関係ありません。 Rubyの標準ライブラリには、メンテナンスが不十分で古くなったコードも多数あります。 キーワードの引数など、言語の新しい機能を使用するように標準ライブラリを更新してください。 そのような関数がメイン/標準ライブラリに使用されていない場合は、不要な問題を引き起こすため、除外する必要があります。 Rubyが初期段階(起動時)で何らかのエラーを発見する機会があれば素晴らしいでしょう。



また、バイナリファイルを生成できるダイナミックコンパイラは問題ありません。 実行パフォーマンスが向上します。 Rubyの好きな機能のほとんどがあり、好きではない機能が欠けているため、レポートに専念するRubyクリスタルの代わりに使用し始めました。





最初に思い浮かぶのは、Railsが一意性チェックを実行する方法です。 わからない場合は、SELECTを実行して、INSERTを実行する前にフィールドが存在するかどうかを確認します。 最初の問題は、これら2つの操作がトランザクションで実行されないため、一意でないエントリを挿入できるシグナル競合が発生する条件があることです。 ただし、トランザクションは多くのテーブルロックを引き起こすため、原則として、良い解決策ではありません。 最善の解決策は、データベースのこのフィールドに一意のインデックスを作成することです。これにより、正確さと最適なパフォーマンスが保証されます。 独自性を検証するRailsのアプローチは、ユーザーに誤った安心感を与える弱い防御です。





これは、Alan Guo Xiang TanによるRubyBench.orgの作成に関するニュースです。 これは、Rubyコミュニティへの非常に貴重な(そして待望の)貢献です。 このプロジェクトは、Rubyのパフォーマンスの成長を保証し、リリースごとに高速になります。 RubyBenchが以前に存在していた場合、Ruby 1.9でパフォーマンスの低下を防ぐことができたでしょう。





クリスタル ! 詳細については、私の講演をご覧ください:)(5月末に、エリックはキエフでのRubyカンファレンスで、Crystalについての講演のトピックを話します)





現時点では、Crystal用のTwitter CLIの書き直しに取り組んでおり 、Rails Girls Summer of Codeについても生徒に教えています。





私の開発環境の特別な場所はFishシェル占められています 。これは、コマンドラインで多くの時間を過ごす人にお勧めです。 一週間使ってみてください、それなしではもうできません!





Ruby-Talk、Ruby Weekly、今週のRailsニュースレター。 Aaron Patterson、Aman Gupta、Sam Saffron、James Edward Gray II、Thomas Reynolds、Sandi Metz、Tom Stuart、Avdi Grimm、Jessica Kerr、Pat Shaughnessyによるブログ。 また、Rubyに関係のない多くのブログを読みました。





「Ruby Under a Microscope」、Pat Shaughnessy 、これはRubyが内部からどのように機能するかについてのエキサイティングな見方です。 また、まだ読んでいないすべてのRubyプログラマーに、Rubyの実用的なオブジェクト指向設計、Sandi Metzをお勧めします。 ITを知識の分野としてよりよく理解するために、Tom Stuartの「Computationを理解する」ことをお勧めします。 そして初心者には、Chris PineによるLearn to Programをお勧めします。 最後に、Why's(Poignant)Ruby to Guideは私の心の中で特別な位置を占めています。





crontabに次の行を追加します :* / 30 9-17 * * 1-5は「立ち上がって歩き回る」と言います。



All Articles