こんにちは、hachi8833です。
今週より、従来の「Ruby/Rails界隈ウォッチ」をリニューアルいたします。
- タイトルを「週刊Railsウォッチ(YYYYMMDD)」に変更し、原則週刊といたします。
- 週刊とは別に、臨時の「Railsウォッチ」も公開することがあります。
- 過去記事もタイトルのみ統一的に変更いたします。
今後ともよろしくお願いいたします。まずは金星記事から。
Hacker News
?CSSReference.io?
CSSのビジュアルリファレンスです。見せ方が画期的にうまいですね。たとえばflexboxを「こういうふうに並べたい」ときにこのサイトでさっとスクロールして探すことができます。animationも実際にアニメーションをオン/オフしたりできます。今週の金星を射止めました。おめでとうございます。
CSSの仕様策定の段階からこういうビジュアルリファレンスを作って欲しいと切に思います。
Rails公式ニュース
公式ニュースの中の人も体調崩して先週お休みしていたそうです。お大事にどうぞ。
Rails 5.0.1rc1リリース
遅ればせながら。
元記事では「問題なければ12/6に最終版をリリースする」とありますが、本日(12/9)の時点では5-0-1ツリーにはまだstable
の文字がありませんね。
RailsのjQuery依存を廃止
既に出回っている話ですが、影響は大きいので。
- 見出しより
RailsのJavaScriptヘルパーが書き直され、新しくrails-ujs gemとなりました。rails-ujsではvanilla JavaScriptが使われるため、Railsは今後jQueryに依存しなくなります。
#27113では多くのサムアップで迎えられています。
rails-ujs gemはRails向けに開発されましたが、確認ダイアログ表示やAjaxなどを使うためにRails以外のRubyアプリでも利用できます。
野暮を承知で書くと、ニュースで言及されているVanilla JavaScriptとは「jQueryなどのJSライブラリを使わないでピュアなJavaScriptで同等の機能を書く」という意味です。
- 参考: Vanilla JSを使おう!
日本人の感覚からするとわかりにくいですが、アイスクリームの「バニラ味」は「他に何も加えられていない」「プレーンな」というニュアンスがあります。炊き込みご飯に対する白いご飯みたいな感じでしょうか。
morimorihoge解説
vanillaのもともとの語源はもちろんicecreemのvanillaですが、ソフトウェア的にはゲーム界隈でMODとかを入れていない素の状態のことを指しますね。マインクラフトなどでもvanillaとか言います。
なるほど、私がゲームに暗かったのでそのあたり初めて知りました。
また、UJSは「控えめな(unobtrusive)JavaScript」のことで、本来は具体的な実装やライブラリというよりは、アプローチ、パラダイムといった側面が強いようですが、jquery-ujs.jsや今回のrails-ujs.jsなどのようにUJSをサポートする実装もあります。
jQuery廃止で何が変わるか
SprocketsやAsset Pipelineなど、RailsにおけるJavaScriptの扱いについてさまざまな不満があがってきていますが、便利だが鈍重なjQueryへの依存廃止は、そうしたJavaScript関連の改良のひとつと言えそうです。
今回の変更の導入時期は明言されていませんが、masterにマージされているのでおそらくRails 5.1からの導入となりそうです。
- jquery-rails gemは新しいRailsアプリケーションには標準では含まれなくなります。
- 代わりに、rails-ujsが標準で含まれるようになり、Action View経由で提供されます。
- 今後はRailsのフロントエンド/AjaxをピュアなJavaScriptで書くのが標準になります。
- jquery-rails gemを別途導入すれば、従来どおりjQueryを利用できます。なお、jquery-railsにはjQuery UJS adapterも含まれています。
Rails開発者は、今後ピュアなJavaScript、そして今後に備えてECMAScript 6を意識したコーディングに徐々に移行するのがよいと思われます。
morimorihoge解説
基本的にjquery-rails的なgemを入れれば動作面は原則問題ないと思いますが、Rails 5.1.0のリリース前後で一気に既存のGemのgemspecにjQuery系gemのrequire dependencyが追記されて一斉にgemのバージョンが上がると、そこでconflictが発生するかもしれないですね。
Qiitaの「Rails5.1に向けてフロントエンド周りで起こっている革命まとめ」も参考になります。
Turbolinksなどの影響も小さくて済むとよいのですが。
ひとこと
#27035 Rails 5.1に備えてActive Supportから非推奨メソッドが削除される
いよいよalias_method_chain
とおさらばします。今後はRuby 2.0以降のModule#prepend
をお使いください。
以下の非推奨要素がActive Supportから削除されます。
- key_file_path
- escape_key
- set_cache_value
- namespaced_key
- kernel debuggerファイル
- local_constants
- (モジュール)method_transplantingファイル
- (struct) core_extファイル
- time marshal core_extファイル
- new_from_hash_copying_default
- :prefix オプション
- Module.qualified_const_get/set/defined?
- constant MissingSourceFIle
- alias_method_chain
- Numeric#to_formatted_s
- parameterizeのseparator引数
- (クラス)ActiveSupport::Concurrency::Latch
なお、5.0.0.1だと非推奨警告が表示されないものがあるので、警告をすべて表示するには5-0-stableを使って欲しいとのことです。
morimorihoge解説
あまり開発者が直接使うメソッドではなさそうですが、ライブラリが依存している可能性はあるので、やはり5.1.0へのアップグレードはかなり慎重になった方がよさそうですね。Asset Pipelineが導入されたかつてのRails 3.0->3.1に匹敵する規模になるかもしれません。
#26976 form_withを追加
従来のform_tag
やform_for
と似たような感じで使えるform_with
が追加されました。
#27108 Active Recordの接続終了時の動作を改良
過去のRailsウォッチでもたびたびコネクションプール周りに手が加えられていますね(2016/11/17](/hachi8833/2016_11_17/28909)の#26978など)。
#25395 PostgreSQLの暗号生成をuuid-osspからpcryptoに移行
PostgreSQL 9.4以降はpcryptoのgen_random_uuid()
が推奨だそうです。
#26836 Railsにyarnサポート追加
rails new プロジェクト名
に--yarn
オプションを与えることで、node.jsの新しいパッケージマネージャyarnが使えるようになります。
最初yarm gemと空目してしまいました。
#27133 reload_association周りの変更を元に戻す
5.1で予定されていた移行のひとつが元に戻されました。たとえばArticle.category(true)
に代えてarticle#reload.category
を推奨する予定だったそうですが、副作用が思ったより多く回避も難しいので取り消されました。
#27193 update_allとdelete_allのバグ修正
left_join
とチェインしたときのupdate_all
とdelete_all
の動作が、left_outer_joins_values.any?
を条件に加えるよう修正されました。
この記事をBPS社内でつっついているときに「えぇー?!left_join
でupdate_all
とかdelete_all
するかー?(笑)」とどよめきがあがりました。
Ruby Weekly
ヨーロッパのRuby事情
米国の開発者がイタリアのフローレンスで開催されたRubyDayを簡単に紹介しています。フローレンスは風光明媚で素晴らしい場所だそうです。コミッターは2人ぐらいしか来てなくて規模はそれほどでもなかったようですが、今後盛り上がるとよいですね。ヨーロッパで最後にRailsConfが開催されたのは2008年なんだそうです。
ヨーロッパではHanamiというRubyベースのWebフレームワークが妙に盛り上がってるらしく「米国じゃ聞いたことないなあ」という感想を漏らしています。米国ではRailsはすっかり定番として認知されていますが、ヨーロッパではまだそれほどでもないようです。Railsは米国勢が多いせいなのか、ヨーロッパはRails以外の選択肢についても積極的なところがあるようです。
ヨーロッパのRails関係者はどことなくロシアやポーランドなど東寄りが多いような印象がありますが、西ヨーロッパはまた雰囲気が違うのかもしれません。
余談
フローレンスってイタリアのどこかと思ったら人体で言う足三里のツボのあたり、内陸なんですね。
私はヨーロッパどころかユーラシア大陸に一度も足を踏み入れたことがないのですが、知人の話ではイタリアを含むヨーロッパの多くの国は日曜になるとレストランも食料品店も全部閉まってしまうので平日のうちに食料を手元に用意しておかないとマジでアウトだそうです。ヨーロッパってコンビニも自動販売機もほとんどないようなので。
Railsの新機能の開発の様子を中継
Sprocketsの後任メンテナがsprockets-railsに新機能を追加する様子を詳しく解説してくれます。
Ruby Facets
スレッドローカルな変数
Rubyのスレッドローカルな変数について詳しく解説しています。図や動画もあってよさげですね。
最近のruby-core (2016年11月)
今回も濃厚な解説がぎっしりです。ありがとうございます。[#5446] at_fork callback APIの解説を見て、スレッドは難しいと改めて思い知りました。
Hacker News
OpenAI
GitHub Trendingでも☆2,700超えと快進撃ですね。人工知能/機械学習系は、マネタイズの匂いがした途端に皆ソースや情報を出したがらなくなっているような印象があります。かつて暗号理論などが軍事情報がらみで長年非公開だったのを連想してしまいました。
Qiitaでも機械学習の記事は「やってみた」系がほとんどになってしまっているので、先端事情を知るには真面目に英語論文を読むのが早いのかも。
ダンボールで加算器つくったった
Rubyで書かれたファミコンエミュレータOptcarrot
似たもの二連続です。LEGOで作ったりするのは割と見かけますが、ダンボールというのが強烈です。
行列の乗算
行列の乗算の理解であれば、上よりも私はこちらのYouTube動画(途中から再生)をおすすめします。この画期的な筆算は学校で習った覚えも日本の教科書で見た覚えもないのですが、即取り入れて欲しいものです。
使えるMacセキュリティガイド
Macbookの裏蓋を開けてプローブを突っ込むところから始まり、Mac OS自体をVMWare Fusionで仮想化するなど、かなりエクストリームなセキュリティガイドですね。
ここまでするのは国家保安がらみか、さもなければ被害妄想に近い気もしますが、趣味ですよねきっと。
暗号を学べるcrypto101.io
私事で恐縮ですが、随分昔にブルース・シュナイアーの暗号技術大全日本語版の、確か第9章あたりで下訳をお手伝いしたのを思い出しました。
Github Trending
Metasploit
いわゆるペネトレーションテストを行うフレームワークです。ひととおりの攻撃を自動実行してWebサーバーをテストできます。この種のツールはみなそうですが、悪用厳禁ですね。
無印枠
Xcodeproj
XCodeプロジェクトを作成するRuby gemです。☆700個越えなので需要がある感じですね。
熱力学で新たな発見
エンジニアリングとは別の話題かつ先週ですが、一見枯れた学問のように思われていた熱力学で大きな発見があったとのことです。共同研究者のひとりである田崎晴明先生(@Hal_Tasaki)のファンなもので。
今週は以上です。
関連記事
- 週刊Railsウォッチ(20161125)Railsのデータベース・ベストプラクティス、SQLインジェクション解説ほか
- 週刊Railsウォッチ(20161117)DockerホスティングのHyper.sh、accepts_nested_attributes_for殺すほか
- 週刊Railsウォッチ(20161109)bundler audit gemは超おすすめ、CIAのFactbook gemほか
- 週刊Railsウォッチ(20161102)HTML 5.1正式勧告、CSS中央揃えに便利なサイトほか
- 週刊Railsウォッチ(20161027)LinuxカーネルのDirty COW脆弱性、DeviseはWikiを読めほか
- 週刊Railsウォッチ(20161019)ObjectSpaceモジュール活用法、Capybara統合、コミッターを撮影するソフト
- 週刊Railsウォッチ(20161012)RubyのHashの詳細、RethinkDBの会社が終業ほか
- 週刊Railsウォッチ(20161005)Mac OS SierraとRubyの問題、Learning Gitほか
- 週刊Railsウォッチ(20160928)constantizeの注意点、GoのGUI “gallium”登場ほか
- 週刊Railsウォッチ(20160921)クールなHTMLエディタ「Mozilla Thimble」他
- 週刊Railsウォッチ(20160913)MySQLの脆弱性ほか