Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

パターンマッチのドキュメントを ruby/ruby の rdoc を翻訳する形で追加 #2773

Merged
merged 43 commits into from
May 31, 2024

Commits on Jan 2, 2023

  1. ruby/ruby の rdoc からパターンマッチ関連のドキュメントの原文をコピペ

    ### 原文の場所
    
    - pattern_matching.rd
      - cf. https://github.com/ruby/ruby/blob/v3_2_0/doc/syntax/pattern_matching.rdoc
    - control.rd
      - cf. ruby/ruby@281b350
    
    ### pattern_matching.rd の配置に関して
    
    ## pattern_matching.rd の配置に関して
    
    rurema/doctree の `refm/doc/spec` 配下と ruby/ruby の `doc/syntax` 配下が似たようなファイル構成になっているため、 pattern_matching.rd も `refm/doc/spec` に配置した
    また今後可能なら doc 配下のファイルやクラス・モジュール・ライブラリのヘッドラインに rdoc へのリンクを追加したいと思っているが、その場合にディレクトリ・ファイル構成を ruby/ruby に寄せておくほうが実装しやすいのではという思惑もある
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    801fe52 View commit details
    Browse the repository at this point in the history
  2. パターンマッチ関連のドキュメントのサンプルコードにシンタックスハイライトを適用

    #@SampleCode から #@EnD までは COPY が実行できる最小範囲を基準にした
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    263d9c1 View commit details
    Browse the repository at this point in the history
  3. パターンマッチ関連のドキュメントのインデントを整形

    素の rdoc と bitclust の文法の違いを反映するため
    
    - サンプルコード・整形済みテキストの行頭の余分なインデントを削除
    - 箇条書きのスタイルを適用するためインデントを追加
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    6366477 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    c2de8c0 View commit details
    Browse the repository at this point in the history
  5. pattern_matching.rd のタイトルと冒頭部を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    - unpack は Python に「アンパック」という用語があるのでとりあえずそのまま「アンパック」と訳している
      - cf. https://docs.python.org/ja/3/tutorial/datastructures.html#tuples-and-sequences
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    221c5d1 View commit details
    Browse the repository at this point in the history
  6. pattern_matching.rd の Patterns(パターン) を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    - パターンの名称にアルファベットが含まれる場合は頭文字大文字で統一している
    - respond to に関しては「実装もオブジェクト自体が持つ」のと「応答できる」だと意味が異なり、どのように翻訳するか迷ったが注記を追加し Object#respond_to? へのリンクを追加することで respond to の意味での『〜を持つ』だということを説明した
    - rest に関しては rest parameter の日本語名に合わせて「残余」と訳した
      - cf. https://secret-garden.hatenablog.com/entry/2022/03/11/210246
      - ただ「残余」とだけ書かれていても分かりづらいため、カッコつきで rest も併記してみた
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    eb19c6f View commit details
    Browse the repository at this point in the history
  7. pattern_matching.rd の Variable binding(変数の束縛) を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    - パターンの名称にアルファベットが含まれる場合は頭文字大文字で統一している
    - rest に関しては rest parameter の日本語名に合わせて「残余」と訳した
      - cf. https://secret-garden.hatenablog.com/entry/2022/03/11/210246
      - ただ「残余」とだけ書かれていても分かりづらいため、カッコつきで rest も併記してみた
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    c3f7ef1 View commit details
    Browse the repository at this point in the history
  8. pattern_matching.rd の Variable pinning(変数のピン留め) を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    58bf05c View commit details
    Browse the repository at this point in the history
  9. pattern_matching.rd の Matching non-primitive objects(プリミティブなオブジェクト以外と…

    …のマッチング) を翻訳
    
    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    - パターンの名称にアルファベットが含まれる場合は頭文字大文字で統一している
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    95ae935 View commit details
    Browse the repository at this point in the history
  10. pattern_matching.rd の Guard clauses(ガード節) を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    1905a52 View commit details
    Browse the repository at this point in the history
  11. pattern_matching.rd の Current feature status(機能の現状) を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    - Ruby 3.2 ではおそらくこの節は不要だがまだ ruby/ruby 側でマージされていないため分岐は入れていない
      - cf. ruby/ruby#7052
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    7d5b498 View commit details
    Browse the repository at this point in the history
  12. pattern_matching.rd の Appendix(付記) を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    86fa8d0 View commit details
    Browse the repository at this point in the history
  13. 制御構造 のパターンマッチの部分を翻訳

    - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    870481d View commit details
    Browse the repository at this point in the history
  14. パターンマッチ関連のドキュメントの code タグを二重かぎ括弧に置換

    素の rdoc と bitclust の文法の違いを反映するため
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    7400520 View commit details
    Browse the repository at this point in the history
  15. パターンマッチ関連のドキュメントの _ と em タグ (イタリック体) をかぎ括弧に置換

    素の rdoc と bitclust の文法の違いを反映するため
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    140c056 View commit details
    Browse the repository at this point in the history
  16. パターンマッチ関連のドキュメントの + (タイプライター体) を削除

    素の rdoc と bitclust の文法の違いを反映するため
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    89757fb View commit details
    Browse the repository at this point in the history
  17. パターンマッチ関連のドキュメントの見出しレベルを変更

    - 見出しレベル2だと見た目の主張が強すぎるため
    - 他のドキュメントでも見出しレベル2を飛ばして見出しレベル3を利用するケースが多そうだった
      - cf. https://github.com/rurema/doctree/blob/a770b9a74b1e8d1e0918e97fc390f9ae00cfec19/refm/doc/spec/control.rd
      - https://github.com/rurema/doctree/blob/a770b9a74b1e8d1e0918e97fc390f9ae00cfec19/refm/doc/spec/def.rd
    sanfrecce-osaka committed Jan 2, 2023
    Configuration menu
    Copy the full SHA
    7efedd6 View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    5d72994 View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    6b99c13 View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2023

  1. pattern_matching.rd の表現を他のページに合わせた(FooBarErrorがraiseされる -> 例外FooBarEr…

    …rorが発生する)
    
    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (review)
    sanfrecce-osaka committed Jan 6, 2023
    Configuration menu
    Copy the full SHA
    2a852c1 View commit details
    Browse the repository at this point in the history
  2. pattern_matching.rd の表現を他のページに合わせた(カッコ -> 括弧)

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (review)
    sanfrecce-osaka committed Jan 6, 2023
    Configuration menu
    Copy the full SHA
    09fa165 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1a446ac View commit details
    Browse the repository at this point in the history
  4. pattern_matching.rd の表現を他のページに合わせた(マッチング -> マッチ)

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (review)
    sanfrecce-osaka committed Jan 6, 2023
    Configuration menu
    Copy the full SHA
    84211ca View commit details
    Browse the repository at this point in the history
  5. sub-pattern の翻訳を修正

    cf. rurema#2773 (comment)
    
    > 原文中で『sub-pattern』としているところは、具体的にArrayパターン、Findパターン、Hashパターンの構文で指定されている`<subpattern>`の場所そのものを指していると思われるが、これをどう翻訳するか。カタカナ「サブパターン」は避けたいと感じる
    > * 具体的には、プルリクファイル「refm/doc/spec/pattern_matching.rd」の312, 393, 506行目らへんなど
    > * カタカナで『サブパターン』とすると、原文と違い、字面が別物なので「パターン**構文**のあの場所に相当するところかぁ」という気持ちにならない。説明なく現れて消える用語になってしまい、混乱するので、使用を避けたい
    > * 文脈的に、「構文部分の`<subpattern>`のことだね、ウンウン」を意識する必要性自体は薄そう(「まあ、マッチに使うパターンの部分のことやろ」と察せられる)
    > * 変更案(例)
    >
    >   * いっそ、全部バッサリ「パターン(部分)」などにしてしまう
    >   * 丁寧に...312, 393行目は本文中で余裕もあるので、「サブパターン(Array/Find/Hashパターン構文の`<subpattern>`の部分)」とし、506行目はコードコメントなので「パターン」にする
    sanfrecce-osaka committed Jan 6, 2023
    Configuration menu
    Copy the full SHA
    ed29996 View commit details
    Browse the repository at this point in the history
  6. respond to 関連の翻訳を修正

    cf. rurema#2773 (comment)
    
    > respond to `foobar`のような部分は、「foobar **メソッド**を持つオブジェクト」「オブジェクトに foobar メソッドを定義する」と直接的に表現するのはどうだろうか(そして注釈を削除し、respond toの香りを無くす)
    > * respond toをあまり大事にする必要がないと思うため:
    >
    >   * トレイトやインターフェイスのないRubyでは、ダックタイピング的に実装することになるが、そこまでくると、直接的に「メソッドを持つ」でいいと感じる
    >   * ココをうまく使いこなすのに、内部の挙動である`Object#respond_to?`まで踏み込んで理解する必要性は薄く(個人的見解)、却って(初心者寄りの読者は特に)混乱を招きそう
    sanfrecce-osaka committed Jan 6, 2023
    Configuration menu
    Copy the full SHA
    b00f3fc View commit details
    Browse the repository at this point in the history

Commits on Feb 4, 2023

  1. コードコメントの修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (review)
    
    - 短さのために、常体(not 丁寧語)に
    - 能動態を中心に使う
    - ~が出力されます -> ~と出力
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    a4e0eb0 View commit details
    Browse the repository at this point in the history
  2. コードコメントの修正(翻訳抜け -> 原文コメントアウト + 翻訳)

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (review)
    
    ディスカッション中のものを除く
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    aeeb5a0 View commit details
    Browse the repository at this point in the history
  3. Value パターンの訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    983f241 View commit details
    Browse the repository at this point in the history
  4. **nil の説明の訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    
    > 『**nil』 を指定する方法以外はないので
    >
    > 元々の翻訳いただいた文章を活かす場合、
    >
    > > また、パターンで明示的に指定されたキー以外にキーが存在しないケースにマッチングさせたい場合**のために**、『**nil』 を指定する方法もあります。」
    >
    > のようにできると思いますが、ここは原文の文体を維持するよりも、「こういうときは、こうする」という書き方に寄せています。
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    d94ffe7 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    95db524 View commit details
    Browse the repository at this point in the history
  6. カスタムクラスにマッチした場合の訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    bf2c93c View commit details
    Browse the repository at this point in the history
  7. ガード節の訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    b7f8368 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    3023eb9 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    878f744 View commit details
    Browse the repository at this point in the history
  10. deconstruct_keys での keys についての説明の訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    c6bc5e0 View commit details
    Browse the repository at this point in the history
  11. 変数のピン留めの冒頭の訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    
    > 「変数の束縛の機能」の話ではなく、「変数の束縛の機能の存在のせいで、制限が生まれる」という話だと思われます。
    >
    > そもそも原文(Due to the variable binding feature, ...)に対して、あんまり親切とは言えない・無くなっても困らないレベルの中途半端な言及の仕方だなぁと感じているので、変更案では、ちょっと手厚めにしています。
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    f924b97 View commit details
    Browse the repository at this point in the history
  12. 後ほど説明します -> 後述

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    cf. rurema#2773 (comment)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    7bffd47 View commit details
    Browse the repository at this point in the history
  13. 全ての deconstruct・deconstruct_keys に「メソッド」を付加

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (review)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    7a533e0 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    d04656c View commit details
    Browse the repository at this point in the history
  15. deconstruct と deconstruct_keys についての説明の訳を修正

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    sanfrecce-osaka committed Feb 4, 2023
    Configuration menu
    Copy the full SHA
    3702378 View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2023

  1. 冒頭に束縛についての注記を追加

    Co-authored-by: shuichi <shuichi.shp.code@gmail.com>
    
    cf. rurema#2773 (comment)
    
    > 4. 用語『束縛』に対しては、「(Rubyでは)代入と読み替えていいよ」という注釈をつけるか、いっそ『代入』に書き換えるか、をした方が親切に思う
    >   - 個人的には、パターンマッチの文脈で他の言語に触れた際の『束縛』に橋渡しできるので、注釈を一発入れて『束縛』という用語は残していいかも
    
    cf. rurema#2773 (comment)
    
    > ## 4. 用語『束縛』について
    > > > 「(Rubyでは)代入と読み替えていいよ」
    > >
    > >
    > > とあるんですがこれは
    > > > 「(Rubyでは 値の束縛といいつつ再代入ができるので )代入と読み替えていいよ」
    > >
    > >
    > > という解釈で合っていますか? 👀
    >
    > そう...なのですが、私の大元の意図の記載について言及し忘れておりまして、このパターンマッチのドキュメントは、「特に他のプログラミング言語の知識がないRubyユーザが読んでも理解できるドキュメント」であるべきかなぁと考えておりました。
    >
    > となったときに、「関数型言語のimmutableな変数(らしきもの)に代入(らしきことをする)動作」と詳しく対応させる&そのためにそれらの言語を知る必要性を、前提に置くことなしに、読めてほしいなと思います。
    >
    > また、Rubyに置き換える際には、言語の仕組みが違うので、正確に1対1の用語の射影はできない=いわゆる妥協をする必要があると思っています。
    >
    > ...ということを込めて、
    >
    > > 「『束縛』は、パターンマッチの輸入元である関数型言語なんかの用語で、ここでも使っているんだけども、(Rubyでは)代入と読み替えていいよ」
    >
    > というのは、
    >
    > > 「『束縛』は、パターンマッチの輸入元である関数型言語なんかの用語で、ここでも使っているんだけども、**(ここで『束縛』って初耳です、なぁにそれ、という方々、細かいことは考えなくていい!)**『束縛』は(Rubyでは)代入と読み替えていいよ **(勿論、ホントは関数型言語における『束縛』との比較などの細かい話はあるけれども、だ)** 」
    >
    > みたいな意味合いでした...😅
    >
    > (私の場合、Lispや不慣れなHaskellの知識ぐらいしかないので、ここで言っていることが頓珍漢な可能性があります;Lispは『関数型言語』の文脈で出すべきかはアレですが)
    sanfrecce-osaka committed Jun 2, 2023
    Configuration menu
    Copy the full SHA
    d261348 View commit details
    Browse the repository at this point in the history

Commits on May 29, 2024

  1. pattern_matching.rd が 3.0 の CI で落ちないように修正

    cf. rurema#2773 (comment)
    
    以下のコミットの内容を分岐に取り込んだ
    
    cf. [DOC Update pattern matching docs for 3.2](ruby/ruby@ce0f3de)
    cf. [Allow omission of parentheses in one line pattern matching](ruby/ruby@ecb6d6a)
    cf. [
    Add pattern matching pin support for instance/class/global variables](ruby/ruby@fa87f72)
    cf. [Pattern matching pin operator against expression](ruby/ruby@2186347)
    cf. [
    Update documentation for pattern matching](ruby/ruby@4902f96)
    cf. [Reintroduce expr in pat](ruby/ruby@88f3ce1)
    cf. [Pattern matching is no longer experimental](ruby/ruby@b601532)
    sanfrecce-osaka committed May 29, 2024
    Configuration menu
    Copy the full SHA
    ea7d92d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    497a461 View commit details
    Browse the repository at this point in the history