※ 「Ruby/Rails界隈ウォッチ」は2016年12月より週刊Railsウォッチにタイトルを改めました。
こんにちは、hachi8833です。昨日のTechRachoでお知らせしたとおり、RailsチュートリアルがRails 5に完全対応しました。それでは今週のRailsウォッチです。
臨時ニュース
Ruby 2.3.3リリース
11月21日に2.3.3がリリースされました。
このリリースには Refinements と Module#prepend に関する不具合の修正が含まれています。 同じ Class に対して Module#refine と Module#prepend を併用すると意図しない NoMethodError が発生することがありました。 これは先日の Ruby 2.3.2 のリリースで入り込んだ不具合です。 詳しくは [Bug #12920] を参照してください。
ruby-lang.orgニュースより
Rails公式ニュース
CapybaraがRails 5.1での統合準備すすむ
統合後はRailsのテストフレームワークがActionSystemTestと呼ばれるようになるそうですが、また変わるかもしれませんね。最初Capybaraの名前が変わるのかと空目してしまいましたが、違いました。
なおBona fideはラテン語で「本物の」「真正の」といった意味です。
System tests have finally taken strong hold at @Basecamp. Can't wait for us to level-up @Rails with great defaults for it in 5.1! pic.twitter.com/eptnu8OcAc
— DHH (@dhh) 2016年11月10日
Ruby Weekly
RubyのC言語拡張機能を書く―2016年版
morimorihoge: サウンド関係など、リアルタイム処理やりたいときや特殊なドライバをRubyからつつきたいときは必要になるかもしれないですね。
KubernetesでRailsをデプロイする
Kubernetesは自前でクラウドを構築するレベルのソフトウェアなので、強烈に難しそうです。morimorihogeさんの解説では、live migrationひとつとっても膨大な問題をクリアする必要があるそうです。
morimorihoge: 今ならDocker SwarmがDocker Engineに統合されたし、AWS ECSやGCPなどにも類似コンテナサービスがあるはずなので、そっちを使いたいですね。
Kubernetesはギリシャ語由来だそうで、発音は「クーベルネイテス」が近そうですね。きぐしねいです。
WebPackとYarnでAsset Pipelineを置き換える
多くの人がSprocketsやAsset Pipelineを何とかしようとして頑張っていますね。早く決定打が登場して欲しいです。
Railsのデータベース・ベストプラクティス
- データベースに本来の仕事をさせよう
- 有効かつチェイン可能な(chainable)スコープを使おう
- スコープはActiveRecord::Relationを返そう
- フィルタはRubyではなくデータベース側で行おう
- ソートはRubyではなくデータベース側で行おう
- スコープで不必要なORDERを指定しないようにしよう
- データベース呼び出しの回数を減らそう
- インデックスを使おう
- クエリが複雑になったらQueryオブジェクトを使おう
- ScopeやQueryオブジェクトの外でその場限りのクエリを行わないようにしよう
- 型を正しく指定しよう
- データベースの全文検索機能の利用も検討してみよう
- ストアドプロシージャは最後の手段にとっておこう
morimorihoge: 7.について、PostgreSQLは型についてかなり厳格だけどMySQLは逆にユルいので、Active RecordでMySQLを使っている人ほど型を正しく指定することに気をつけることをおすすめします。
RubyistのためのO(n)記法
計算量のO(n)記法をRubyのコードで解説してくれているのがありがたいですね。
RubyFlow
Rails 5でのSQLインジェクション問題解説サイト: rails-sqli.org
現時点では以下のSQLインジェクション例が紹介されています。再現用のGitHubリポジトリもあります。
Calculations#calculate
メソッドdelete_all
メソッドdestroy_all
メソッドexists?
メソッドfind_by
、find_by!
メソッドfrom
メソッドgroup
メソッドhaving
メソッドjoins
メソッドlock
メソッド、find
の:lock
オプションorder
メソッドpluck
メソッドreorder
メソッドselect
メソッドwhere
メソッドupdate_all
メソッド
提供元はBrakeman Proのスタッフです。すべてを網羅しているわけではないので、新しいパターンを見つけたらぜひ貢献して欲しいとのことです。
Hacker News
SpaceX社が低遅延のギガビット級衛星インターネットを計画
morimorihogeさんの解説によると、衛星経由のインターネット接続は広帯域ではあるが遅延(レイテンシ)が大きいという特性があるそうです。TCP 3-wayハンドシェイクとかいかにも苦しそうですね。
SpaceX社は、高度715〜823マイルの低軌道衛星を4,425機打ち上げ、現行のHugesNet衛星(高度22,000マイル)の600ms程度の遅延を25〜35msに短縮する計画であるとのことです。
なお715マイルは約1150km、22,000マイルは約35400kmなので、SpaceX社の衛星は低軌道とは言っても国際宇宙ステーションより高高度になりそうです。
Quick, Draw
Quick, Drawより(Quick, DrawはGoogleのサービスです)
指定の絵を20秒以内に描いてGoogleのニューラルネットワークに判定させるという遊びです。先週からBPSでも密かに流行っています。
これ本当に、子どもの英語学習教材として非常に強力なんじゃないでしょうか。
Googleが.NET Foundation加入を表明
Google公式ブログ(英語)でも、.NET FrameworkをGoogle Cloud Platform(GCP)で優先サポートすると発表されています。ついこの間のマイクロソフトのLinux Foundation加入に答えるかのようなタイミングです。
もしかするとGoogleは本気でJavaからC#に乗り換えるのかもしれません。ご存じのとおり、既に.NET FrameworkやC#などがオープンソース化され、Macでも開発・実行可能な環境が急速に整いつつありますが、それにしても動きが早くなってきました。
警告: Windowsのアプリやツールで(WSLの)Linuxファイルを絶対に変更しないでください
MSDNブログでの発表です。Windows側からLinuxファイルを変更するとデータが破損、最悪の場合ディストリの再インストールが必要になるかもしれないとのことです。
Github Trending
最近のGitHub Trendingは何とかAwesomeといった単なるまとめ情報が上位にあがってきて邪魔ですね。それも機械学習系のまとめ情報が目立っています。
devdocs
http://devdocs.io/は、複数のAPIドキュメントを串刺し検索できます。Dashのオンライン版のようなおもむきですね。私は一発で気に入ってしまいました。
使いたいドキュメントの[Enable]をクリックすることで、検索窓で検索できるようになります。
morimorihoge: GitHubでソースが公開されているのが良いですね。
Goの部屋
GDrive
Googleドライブのコマンドライン版クライアントです。ファイルリビジョンまで扱えます。これを使ってちょっとしたアプリケーションすら作れそうです。
無印枠
secureheaders gem
今週は以上です。
関連記事
- 週刊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の脆弱性ほか