Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Ruby�2.3.0�の新
機能について
Kazuhiro�NISHIYAMA
第70回�Ruby関⻄�勉強会
2016-01-09
自⼰紹介
twitter�や�github�では�@znz
Ruby�関連
Ruby�(CRuby)�のコミッター
Ruby�関係でいろいろ
るびま�(Rubyist�Magazine)�とか
http://magazine.rubyist.net/
るりま�(Ruby�リファレンスマニュア
ル)�とか...
Ruby�2.3.0
2015-12-25�リリース
2.3�系列最初のリリース
新機能を知るには?
www.ruby-lang.org�のリリース
アナウンス
配布物の������ファイル
それらを元に紹介を書いている
ブログ記事
Frozen�String�Literal�プ
ラグマ�(1)
Ruby�2.1�から��������������が
最適化
�������追加の�pull�request�が
社会問題化
新しいマジックコメントとコマ
ンドラインオプション追加
Frozen�String�Literal�プ
ラグマ�(2)
結果:�新しいマジックコメント追
加の�pull�request�増加か(?)
要経過観察
Frozen�String�Literal�プ
ラグマ�(3)
�������������������
�����������������������
�����������������������������
����������������...
Frozen�String�Literal�プ
ラグマ�(4)
��でも���でも良い
�����������������������������
�����������������������������
Frozen�String�Literal�プ
ラグマ�(5)
大⽂字でも良い
�����������������������������
しかし�typo�していると効かない
のでしっかり動作確認しましょう
Frozen�String�Literal�プ
ラグマ�(6)
コマンドラインオプションでデフ
ォルトの挙動変更
������������������������������������������
Frozen�String�Literal�プ
ラグマ�(7)
影響を受けなくする�(今までの挙動
にする)�には
������������������������������
標準添付ライブラリには追加済み
Frozen�String�Literal�プ
ラグマ�(8)
�����������������������������
��������������
���������������������������������������������...
Frozen�String�Literal�プ
ラグマ�(9)
�����������������������������
��������������
���������������������������������������������...
Frozen�String�Literal�プ
ラグマ�(10)
個⼈的にはおすすめは
速度が必要なファイルだけ�
���������������������������
破壊的変更が必要なリテラルは�
����������で�mutable�...
���������,�����������(1)
�������は変更可能な�String�を
返す
�������は�freeze�された�String�
を返す
覚え⽅:�⽔は�0�度以下で凍るから
���������,�����������(2)
演算⼦の優先順位に注意が必要
�����������������������������
��������������������������������������
�������������...
���������,�����������(3)
�������������は最適化される
�������は最適化されない
個⼈的感想としては、広く使わ
れるかどうかはよく分からない
safe�navigation�
operator�(1)
セーフナビゲーション演算⼦
⽇本語の定訳は�(まだ)�ない
lonely�operator�(ぼっち演算⼦
)�とも呼ばれている
safe�navigation�
operator�(2)
C#,�Groovy,�Swift�などの����に
似た機能
���は採用できなかったので���
開発版の途中までは����だった
Active�Support�の������に相当
Active�Support
r52232�で修正されているように�
ActiveSupport�ではなく�Active�
Support�が正式名称
����������������������������
�����������������...
safe�navigation�
operator�(3)
��������
���������������相当
safe�navigation�
operator�(4)
���������������������
������が常に呼ばれる
���������������
������が呼ばれるかは�����が�����
かどうかによる
safe�navigation�
operator�(5)
��������������
属性の代⼊形式も使える
safe�navigation�
operator�(6)
������������
����が�����でも�����が呼ばれる
#11816�に議論あり
safe�navigation�
operator�(7)
�������������
��������������������������
��������に相当
dig�(1)
���������������������������������������������������
������������������������������������������
����
��������������...
dig�(2)
JSON�をパースした結果など用
���������,���������,�
����������,���������������
did̲you̲mean�gem�(1)
did̲you̲mean�gem�がバンド
ルされた
NameError�と�
NoMethodError�の発⽣時に修
正候補表⽰
did̲you̲mean�gem�(2)
������������������������������������
�������������������������������������������������
��������������...
did̲you̲mean�gem�(3)
無効にするには
�����������������������������������������������������������
���������������������������������...
did̲you̲mean�gem�(4)
内部的にサポートが増えて速度的
にもほぼ問題なくなっている
Feature�#10881�で�
������������������������が追加
された
Feature�#11777�で�
���...
RubyVM::InstructionSeq
uence�(1)
experimental�feature
RubyVM::InstructionSequenc
e#to̲binary�
と�.load̲from̲binary
コンパイル済みバ...
RubyVM::InstructionSeq
uence�(2)
使用例として�yomikomu�gem
https://github.com/ko1/
yomikomu
詳細は�http://atdot.net/~ko1/
diary/201...
さまざまなパフォーマンス改
善�(1)
https://www.ruby-lang.org/ja/
news/2015/12/25/ruby-2-3-0-
released/�より
method�entry�データ構造の再
検討
新しい�tab...
さまざまなパフォーマンス改
善�(2)
オブジェクトアロケーションと
メソッド呼び出しのコードにお
けるマシンコードレベルでの最
適化
よりスマートな�instance�
variable�データ構造
さまざまなパフォーマンス改
善�(3)
�����������における�
exception:�false�キーワード引
数のサポート
�����������に������������
������キーワード引数
����������������/
����������������
を発⽣する代わりに
��������������/��������������
を返す
NEWS
ここまでが�www.ruby-lang.org�
で取り上げられていた新機能�(と
その関連の話)
ここからは�NEWS�からその他の
新機能を抜粋
indented�here�
document�(1)
����の代わりに����
�������������������������������������
������������������������������������������...
indented�here�
document�(2)
⼀番浅いインデントが削られる
����������������������������������
������
����
�����
�����
indented�here�
document�(3)
2.3.0�では����の場合にバグあり
���������������������������������
������
����
�����
�����
�������������������
��������������(要素を返す)�のイン
デックスを返すバージョン
��������������no�longer�
rescues�exceptions
���������������
��������
��������������������
������������
�����������������
�...
new�Encoding::IBM037�
(alias�ebcdic-cp-us;�
dummy)
EBCDIC�は「主にIBM系のメイ
ンフレームやオフィスコンピ
ュータなどで使用されている」
(Wikipedia�より)
ASCII�とは...
�������(1)
�����������������,�
�����������������������
inverse�version�of������
�������(2)
�������������������������������������
����������������������������������������������
�����������������������(1)
����������������������の仲間
�����������������������(2)
��������������������
���������������������������������
������������������������������������
���...
�����������������
キーが存在しない時の挙動が�
�����������と同様の�
��������������
���������������������������������������������������������...
�������,�������,��������,�
�������(1)
包含関係を調べられる
���������������
��������������������
��������������������
���������������...
�������,�������,��������,�
�������(2)
全順序ではないので����������は定
義されていない
����������
����������
���������������������
����������...
������������
�����を�����などでそのまま使える
ようになる
�����
����������
����������
����������
�
�����������������������������������
�������������������������
deprecated�だが互換性のために
残している定数を参照した時に警
告を表⽰する機能
������������
����������
������������
�������������...
�����������������,�
�����������������
正の数か負の数かを調べるメソッ
ド
������������������������������������
�����������
close�すると無限の�nil�を�push�し
たかのような動作をする
�����������������
����������������
���������
�������������
�������������...
������/������
Unicode�のバージョンが�7.0.0�
から�8.0.0�に上がった
�����������に����������キー
ワード引数
frozen-string-literal�を考慮すると
���������������������������������������������
となるのが
����������...
�����������,�������������
�������の名前の取得・設定を⾏
うAPIが追加された
デバッグなどで識別したい時に
便利
��������での例外抑制
��������で�
�����������������������������
が発⽣する代わりに自動でエス
ケープされるようになった
Feature�#11801�rb̲inspect�
shouldn't�r...
������済み����の����������の
例外抑制
���������������������
と書いていたのが
�������
だけでよくなった
���������������が�
deprecated
���������������が呼ばれた時に�
deprecated�だと警告が出るよ
うになった
��������
passive�mode�がデフォルトに
なった
��������������������������で設
定可能
���������
�����������������������のデフ
ォルトが�����から����(秒)�に変
わった
�����������
net-telnet�gem�として外だしさ
れた
https://github.com/ruby/net-
telnet
bundled�gem�として配布には含
まれる
rake
rake�も�ruby�のレポジトリに直
接含まれるのはやめて�bundled�
gem�になった
�����
��������と���������が�
obsolete�になった
������を�2�以上に設定しようと
すると��������������
���������������⾼速化
���������������が�C�拡張で⾼速
化された
https://github.com/ruby/
ruby/pull/1164
最大約7倍
ワーストケースでも約3倍
まとめ
いろんな新機能が追加された
いろいろと⾼速化された
紹介しきれなかったものは�
NEWS�参照
https://github.com/ruby/
ruby/blob/v2̲3̲0/NEWS
Próxima SlideShare
Cargando en…5
×

Ruby 2.3.0 の新機能について

820 visualizaciones

Publicado el

第70回 Ruby関西 勉強会で Ruby 2.3.0 の新機能の紹介などの話をしたときのスライドです。

  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Ruby 2.3.0 の新機能について

  1. 1. Ruby�2.3.0�の新 機能について Kazuhiro�NISHIYAMA 第70回�Ruby関⻄�勉強会 2016-01-09
  2. 2. 自⼰紹介 twitter�や�github�では�@znz
  3. 3. Ruby�関連 Ruby�(CRuby)�のコミッター Ruby�関係でいろいろ るびま�(Rubyist�Magazine)�とか http://magazine.rubyist.net/ るりま�(Ruby�リファレンスマニュア ル)�とか http://docs.ruby-lang.org/ja/ Ruby�関連のイベントでの発表
  4. 4. Ruby�2.3.0 2015-12-25�リリース 2.3�系列最初のリリース
  5. 5. 新機能を知るには? www.ruby-lang.org�のリリース アナウンス 配布物の������ファイル それらを元に紹介を書いている ブログ記事
  6. 6. Frozen�String�Literal�プ ラグマ�(1) Ruby�2.1�から��������������が 最適化 �������追加の�pull�request�が 社会問題化 新しいマジックコメントとコマ ンドラインオプション追加
  7. 7. Frozen�String�Literal�プ ラグマ�(2) 結果:�新しいマジックコメント追 加の�pull�request�増加か(?) 要経過観察
  8. 8. Frozen�String�Literal�プ ラグマ�(3) ������������������� ����������������������� ����������������������������� ���������������������� shebang�や�coding�マジックコメ ントがあれば、その後
  9. 9. Frozen�String�Literal�プ ラグマ�(4) ��でも���でも良い ����������������������������� �����������������������������
  10. 10. Frozen�String�Literal�プ ラグマ�(5) 大⽂字でも良い ����������������������������� しかし�typo�していると効かない のでしっかり動作確認しましょう
  11. 11. Frozen�String�Literal�プ ラグマ�(6) コマンドラインオプションでデフ ォルトの挙動変更 ������������������������������������������
  12. 12. Frozen�String�Literal�プ ラグマ�(7) 影響を受けなくする�(今までの挙動 にする)�には ������������������������������ 標準添付ライブラリには追加済み
  13. 13. Frozen�String�Literal�プ ラグマ�(8) ����������������������������� �������������� ��������������������������������������������������������������������
  14. 14. Frozen�String�Literal�プ ラグマ�(9) ����������������������������� �������������� ������������������������������������������������������ ��������������������������������������� ruby�--debug=frozen-string- literal�foo.rb�で実⾏すると⽂字列 の⽣成場所がわかる�(ruby�-d� foo.rb�でも有効になる)
  15. 15. Frozen�String�Literal�プ ラグマ�(10) 個⼈的にはおすすめは 速度が必要なファイルだけ� ��������������������������� 破壊的変更が必要なリテラルは� ����������で�mutable�にする 互換性が必要なら、引き続き� ������������
  16. 16. ���������,�����������(1) �������は変更可能な�String�を 返す �������は�freeze�された�String� を返す 覚え⽅:�⽔は�0�度以下で凍るから
  17. 17. ���������,�����������(2) 演算⼦の優先順位に注意が必要 ����������������������������� �������������������������������������� ������������������������������������
  18. 18. ���������,�����������(3) �������������は最適化される �������は最適化されない 個⼈的感想としては、広く使わ れるかどうかはよく分からない
  19. 19. safe�navigation� operator�(1) セーフナビゲーション演算⼦ ⽇本語の定訳は�(まだ)�ない lonely�operator�(ぼっち演算⼦ )�とも呼ばれている
  20. 20. safe�navigation� operator�(2) C#,�Groovy,�Swift�などの����に 似た機能 ���は採用できなかったので��� 開発版の途中までは����だった Active�Support�の������に相当
  21. 21. Active�Support r52232�で修正されているように� ActiveSupport�ではなく�Active� Support�が正式名称 ���������������������������� ���������������������������������� http://railsguides.jp/ api̲documentation̲guidelines.h tml#%E8%AA%9E%E8%AA%BF
  22. 22. safe�navigation� operator�(3) �������� ���������������相当
  23. 23. safe�navigation� operator�(4) ��������������������� ������が常に呼ばれる ��������������� ������が呼ばれるかは�����が����� かどうかによる
  24. 24. safe�navigation� operator�(5) �������������� 属性の代⼊形式も使える
  25. 25. safe�navigation� operator�(6) ������������ ����が�����でも�����が呼ばれる #11816�に議論あり
  26. 26. safe�navigation� operator�(7) ������������� �������������������������� ��������に相当
  27. 27. dig�(1) ��������������������������������������������������� ������������������������������������������ ���� ��������������������������������������������������� ���� ��������������������������������������������������� ���������������������� ��������������������������������������������
  28. 28. dig�(2) JSON�をパースした結果など用 ���������,���������,� ����������,���������������
  29. 29. did̲you̲mean�gem�(1) did̲you̲mean�gem�がバンド ルされた NameError�と� NoMethodError�の発⽣時に修 正候補表⽰
  30. 30. did̲you̲mean�gem�(2) ������������������������������������ ������������������������������������������������� ��������������������������������� ��������������������������
  31. 31. did̲you̲mean�gem�(3) 無効にするには ����������������������������������������������������������� ������������������������������������������������� ��������������������������������� ����������������������������������������������������������� ������������������������������������������������� ���������������������������������
  32. 32. did̲you̲mean�gem�(4) 内部的にサポートが増えて速度的 にもほぼ問題なくなっている Feature�#10881�で� ������������������������が追加 された Feature�#11777�で� ��������������������������が追 加されて������������を使わなく なった
  33. 33. RubyVM::InstructionSeq uence�(1) experimental�feature RubyVM::InstructionSequenc e#to̲binary� と�.load̲from̲binary コンパイル済みバイナリを読み 書き
  34. 34. RubyVM::InstructionSeq uence�(2) 使用例として�yomikomu�gem https://github.com/ko1/ yomikomu 詳細は�http://atdot.net/~ko1/ diary/201512.html#d13
  35. 35. さまざまなパフォーマンス改 善�(1) https://www.ruby-lang.org/ja/ news/2015/12/25/ruby-2-3-0- released/�より method�entry�データ構造の再 検討 新しい�table�data�構造 ����������最適化
  36. 36. さまざまなパフォーマンス改 善�(2) オブジェクトアロケーションと メソッド呼び出しのコードにお けるマシンコードレベルでの最 適化 よりスマートな�instance� variable�データ構造
  37. 37. さまざまなパフォーマンス改 善�(3) �����������における� exception:�false�キーワード引 数のサポート
  38. 38. �����������に������������ ������キーワード引数 ����������������/ ���������������� を発⽣する代わりに ��������������/�������������� を返す
  39. 39. NEWS ここまでが�www.ruby-lang.org� で取り上げられていた新機能�(と その関連の話) ここからは�NEWS�からその他の 新機能を抜粋
  40. 40. indented�here� document�(1) ����の代わりに���� ������������������������������������� ���������������������������������������������� ���������������������������� ����������������
  41. 41. indented�here� document�(2) ⼀番浅いインデントが削られる ���������������������������������� ������ ���� ����� �����
  42. 42. indented�here� document�(3) 2.3.0�では����の場合にバグあり ��������������������������������� ������ ���� ����� �����
  43. 43. ������������������� ��������������(要素を返す)�のイン デックスを返すバージョン
  44. 44. ��������������no�longer� rescues�exceptions ��������������� �������� �������������������� ������������ ����������������� ����� ��� ���������������� ����������������������� ������������������������������������������������������������ ����� ����������������������� ���������������������������������������������������������� ������������������������������������������ �������������������������������� ������������������������������������
  45. 45. new�Encoding::IBM037� (alias�ebcdic-cp-us;� dummy) EBCDIC�は「主にIBM系のメイ ンフレームやオフィスコンピ ュータなどで使用されている」 (Wikipedia�より) ASCII�とは非互換なので� dummy
  46. 46. �������(1) �����������������,� ����������������������� inverse�version�of������
  47. 47. �������(2) ������������������������������������� ����������������������������������������������
  48. 48. �����������������������(1) ����������������������の仲間
  49. 49. �����������������������(2) �������������������� ��������������������������������� ������������������������������������ ����������������������������������������������������������� �������������������������������� ��������������������������������������� ������������������������������������ ������������������������������������������������������ ������������������ ������������������������������ �������������������������������� ��������������������������������������������� ��������������������������� ������������������������������ �������������������������������������������� �������������������������������������������
  50. 50. ����������������� キーが存在しない時の挙動が� �����������と同様の� �������������� ��������������������������������������������������������������� ����������������������������������������������������������������������� ���������������������������������������������������������������� ���������������������������������������������������������������������
  51. 51. �������,�������,��������,� �������(1) 包含関係を調べられる ��������������� �������������������� �������������������� ���������������������
  52. 52. �������,�������,��������,� �������(2) 全順序ではないので����������は定 義されていない ���������� ���������� ��������������������� ���������������������
  53. 53. ������������ �����を�����などでそのまま使える ようになる ����� ���������� ���������� ���������� � �����������������������������������
  54. 54. ������������������������� deprecated�だが互換性のために 残している定数を参照した時に警 告を表⽰する機能 ������������ ���������� ������������ ������������������������� ��� �������� ������������� ��������������������������������������������������
  55. 55. �����������������,� ����������������� 正の数か負の数かを調べるメソッ ド ������������������������������������
  56. 56. ����������� close�すると無限の�nil�を�push�し たかのような動作をする ����������������� ���������������� ��������� ������������� ��������������������������������������� ������������������ ��� � ����������������������������� ����������
  57. 57. ������/������ Unicode�のバージョンが�7.0.0� から�8.0.0�に上がった
  58. 58. �����������に����������キー ワード引数 frozen-string-literal�を考慮すると ��������������������������������������������� となるのが ������������������������������������������������ とかける
  59. 59. �����������,������������� �������の名前の取得・設定を⾏ うAPIが追加された デバッグなどで識別したい時に 便利
  60. 60. ��������での例外抑制 ��������で� ����������������������������� が発⽣する代わりに自動でエス ケープされるようになった Feature�#11801�rb̲inspect� shouldn't�raise�error�even�if� calling�inspect�returns�non� compatible�strings
  61. 61. ������済み����の����������の 例外抑制 ��������������������� と書いていたのが ������� だけでよくなった
  62. 62. ���������������が� deprecated ���������������が呼ばれた時に� deprecated�だと警告が出るよ うになった
  63. 63. �������� passive�mode�がデフォルトに なった ��������������������������で設 定可能
  64. 64. ��������� �����������������������のデフ ォルトが�����から����(秒)�に変 わった
  65. 65. ����������� net-telnet�gem�として外だしさ れた https://github.com/ruby/net- telnet bundled�gem�として配布には含 まれる
  66. 66. rake rake�も�ruby�のレポジトリに直 接含まれるのはやめて�bundled� gem�になった
  67. 67. ����� ��������と���������が� obsolete�になった ������を�2�以上に設定しようと すると��������������
  68. 68. ���������������⾼速化 ���������������が�C�拡張で⾼速 化された https://github.com/ruby/ ruby/pull/1164 最大約7倍 ワーストケースでも約3倍
  69. 69. まとめ いろんな新機能が追加された いろいろと⾼速化された 紹介しきれなかったものは� NEWS�参照 https://github.com/ruby/ ruby/blob/v2̲3̲0/NEWS

×