2016」が開催されました。基調講演の模様をレポートします。最終日となる3日目の基調講演はRubyコミッタである,成瀬ゆいさんです。RubyKaigiに参加してCRubyに貢献してみたくなった人を念頭に,新機能・最適化・トラブルシュートを軸に発表しました。重要なのは具体的なユースケース新機能は大きく二つに分けることができると言います。一つは新しくメソッドやクラスを追加すること。一つはRubyを動かすことのできる環境を増やすことです。前者の場合,現実的なユースケースをあげて,本当にほしい機能を明確にすることが重要だと,成瀬さんは言います。Rubyに取り込まれたケースと取り込まれなかったケースを取り上げて,説明をしていました。取り込まれたケースは,RubyのStringに不正なバイト列が含まれているときに,それを置き替えたいというものでした。最初は適切なユースケースが見当たらず,機能実装が見送られていました。Webフォームから不正なバイト列が送られてくるというケースでは,それはユーザーにエラーを伝えることができることから,適切なユースケースではなかったと言います。Rubyで対応するべきユースケースとして,Webクローラーを例示しました。修正が可能なファイルの読み取りなどと異なり,Webクローラーの場合はクライアント側で不正なバイト列を処理する必要があります。このとき追加されたString#scrubを例に,CRubyのコードを解説しました。2015を例にあげました。clangは最適化がgccに比べて強くかかるときがあります。RubyのGCは,オブジェクトのポインタがメモリ上のどこにも存在しないと回収します。その結果gccでは問題が起こらなくても,clangでは問題が発生することがありました。厳しかった例としてContinuationの中でRubyのGCが壊れていたケースをあげ,説明していました。様々な側面からRubyの速度を考える次に最適化について話をしました。Machine)の3つに分けて説明しました。速度改善の定石として,次のステップを紹介しました。Relicを使ってRailsアプリケーション(bugs.ruby-lang.orgのRedmine)のプロファイルを取得してみたところ,IO待ち以外では目立ったボトルネックは見つからなかったと言います。Ruby組み込みライブラリの速度改善の例として,Regexp#match?を取り上げました。2.4で追加されるメソッド(r55061)で,正規表現にマッチするか否かをBooleanで返し,$&特殊変数を更新しないというメソッドです。MatchDataを作成しない分だけ高速になります。VMを早くするアイディアとして,JITやレジスタマシンについて考察しました。Railsアプリケーションのプロファイルでみたように,今あるアプリケーションでは目立ったボトルネックがなく,JITの効果があまりないそうです。今までにベンチマークしてこなかったタイプのアプリケーションでJITの効くものが公開されると,CRubyにJITが入るかもしれないと述べました。レジスタマシンについては#12589というチケットがあるので,興味のある方は手伝ってくださいと呼びかけました。fileを活用する最後のテーマとしてデバッグやプロファイリング,SEGVしたときの調査方法といったトラブルシューティングについて説明しました。正規表現のマッチングでバックトラックの回数が爆発したときや,カーネル内部で無限ループに陥っているときなどはRubyのレベルでは何もできなくなってしまいます。gdbのアタッチすらできないときでも,(⁠Linuxの)procfsを利用することでプロセスの状態を理解できると言います。tableと突き合わせることで具体的な関数を割り出します。この作業はアドレスの計算を伴う煩雑なものなので,成瀬さんはpid2lineというツールを作ったと話しました。fileの情報をベースに調査を進めるそうです。backtraceにはRubyレベルのbacktraceと,C言語レベルのbacktraceが表示されますが,多くの場合でC言語レベルのbacktraceが重要だと言います。bugs.ruby-lang.orgに報告するときは,必ず全行分の情報を送ってほしいと言及していました。fileはクラッシュした時点のメモリの内容をダンプしたもので,gdbに読ませることでデバッグに役立てることができます。fileの内容からRubyの状態を把握するためのツールとして,Ruby本体に添付されている.gdbinitを利用します。C言語で書かれたRubyの関数をgdbのスクリプトで再実装する必要があり,またRuby本体の開発に合わせてそのスクリプトも書き直していかないといけないため,管理が大変だと語っていました。まとめ最後に本日の発表を以下のようにまとめました。現実に即したユースケースをきちんと考える現実のアプリケーションのボトルネックが何かをきちんと調べる質疑応答では,「⁠Rubyのなかには,みんなの関心が薄いところもある。いう部分に興味あがって,手を挙げていけば貢献できる部分はある」と答え,締めくくりました。Ruby著者プロフィール金子雄一郎(かねこゆういちろう)OSSの世界に惹かれて,経理から転職したRailsエンジニア。現在は株式会社マネーフォワードに勤めている。Asakusa.rb所属。Evansさん「たのしいRubyの先に,はやいRubyがある。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。