shirotamaki
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 【第10週】🍒チェリー本輪読会 (2021\-07\-26~2021\-07\-30) ###### tags: `チェリー本🍒` [チェリー本 輪読会ノートまとめ \- HackMD](https://hackmd.io/vDXm6tpgTdeHKByO1HK5_Q) ## 目次 [TOC] ## 2021\-07\-26 ### 参加者 参加者は`%w[]`の中に署名してください。 ```ruby %w[isshi-hasegawa Hosso pctapitapitapi yana-gi obregonia1 shirotamaki yatsuhashi].shuffle.slice(0,4) ``` ### 司会 - @isshi-hasegawa ```ruby %w[eatplaynap isshi-hasegawa hosso yana-gi shirotamaki yatsuhashi obregonia1 pctapitapitapi keikosmile].sample ``` [タイマー](https://timer.onl.jp/) ### ドライバー - @yana-gi ```ruby %w[isshi-hasegawa hosso yana-gi shirotamaki yatsuhashi obregonia1 keikosmile fu-ga].sample ``` ### スタート地点 - 第7章 7.2.2から 7.3.2まで ### 疑問点・気づき #### 第7章 7.3.2まで - @isshi-hasegawa - 前回に続いてクラスの基本の基本の範囲 - [Class\#new \(Ruby 3\.0\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/latest/method/Class/i/new.html) - > このメソッドの引数はブロック引数も含め`Object#initialize`に渡されます。 - @pctapitapitapi - わかる様でわからない様でわかる。。。 - 抽象的なのでわかりにくいのでは - コンセプトが抽象的なので、コードで具体的になっていくのを理解して行けば良いのでは - @shirotamaki - オブジェクト、インスタンスは同じ意味だとは理解していたが、レシーバも文脈によっては、同等の意味で使われていることは知らなかった。 - たのしいRuby 79ページ > インスタンスという言葉はオブジェクトとほとんど同じ意味で使われています。一方、あるオブジェクトが、あるクラスに属していることを強調する場合には、「インスタンス」のほうがよく使われます。 - @yana-gi - 「オブジェクト」と「インスタンス」は同じ意味。同じ意味だとしても、表記揺れしないようどちらかで統一することを気をつけたい。 - > 場合によってはオブジェクトではなくインスタンスと呼ぶこともあります。 - あえて「インスタンス」を使っているなとなんとなく分かる時もあるけど、どういう場合かはうまく説明できない - 「インスタンス」はクラスから作られたことを強調したいとき - 「レシーバ」は自分でもつかったことがあるけど「メッセージ」はまず使われているところをあまり見ない。 - @yatsuhashi - インスタンス変数は作成する前に参照してもエラーにならない - - @hosso - オブジェクト,インスタンスは同じ意味。レシーバは「メソッドを呼び出された側」というニュアンスを出すときに使う。 - 状態(ステート)と属性(アトリビュート、プロパティ)の違いが難しい。 - インスタンスメソッドはそのクラスのインスタンスに対して呼び出せるメソッド。 - @obregonia1 - 状態(ステート)の項目があったけど属性との違いがよくわからなかった。他のオブジェクト指向言語にはあるけどRubyには無い概念なのかも? ### 振り返り(よかった点・次回に向けての改善点等) - @yana-gi - トミーさんがいなくて寂しかった😭お大事に - 😭 - 自分がした状態と属性の話、微妙に間違えてることをいっしーさんの説明をきいて気付いた。難しい - @isshi-hasegawa - HackMD作り忘れてた!すんません、たまきさんありがとう! - 自分も体調優れなくて全然声が出なかった… ミュートにして発声練習してた - 低気圧なので:souiuhimoaru: - @hosso - 7章はしょっぱなから内容が濃い。まだギリついていけてるけど、次回から怪しい…。 - shirotamakiさんの疑問で議論が発展するので、とても助かります! - @yatsuhashi - はぇー難しい - @pctapitapitapi - 何回読んでもわかる様でわからん様でわかる、これがオブジェクト思考か。。。という気持ち - でもみんなが少しずつわかる様になってきたと言ってて、私がまだ出会っていない本やコードでわかる様になってくるんかなぁ??と思っています。 - @shirotamaki - オブジェクト指向は、他の章と違い一気に理解しようとすることは困難。 - しかし、難しいが少しづつ分かってきた感覚はあるので、この先のコード例などを見ながら徐々に理解していければと思う。 ## 2021\-07\-27 ### 参加者 参加者は`%w[]`の中に署名してください。 ```ruby %w[eatplaynap isshi-hasegawa Hosso pctapitapitapi yana-gi obregonia1 shirotamaki keikosmile].shuffle.slice(0,4) ``` ### 司会 - @eatplaynap ```ruby %w[eatplaynap isshi-hasegawa hosso yana-gi shirotamaki yatsuhashi obregonia1 pctapitapitapi keikosmile].sample ``` [タイマー](https://timer.onl.jp/) ### ドライバー - @obregonia1 ```ruby %w[isshi-hasegawa hosso yana-gi shirotamaki yatsuhashi obregonia1 keikosmile].sample ``` ### スタート地点 - 第7章 7.3.3 ### 疑問点・気づき #### 第7章 7.3の最後まで - @eatplaynap - `attr_hoge`は`name`メソッドと`name=`メソッドを兼ねている - `attr_hoge`はメソッド? - 渡せるのはシンボルまたは文字列(引数って呼んでいいのかな?) - Moduleクラスのメソッド。渡してるのは`()`を省略してるけど引数 - [class Module \(Ruby 3\.0\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/latest/class/Module.html) - インスタンス変数は作成前に利用してもエラーにならずnilが入る - モンキーパッチが気になる - @hosso - `attr_accessor`は外部からの読み取りと書き込みどちらもできるようにするので、不必要に許可する事に注意(以前メンターに指摘された) - `attr_〇〇`をシンボルだけではなく文字列でも定義できるのは初めて知った。なんかそういう書き方だと思っていた。 - @yana-gi - ローカル変数とインスタンス変数で、宣言しない状態で参照した時の挙動が違う理由をQ&Aで聞いたことがある - [代入されていない状態で変数を参照した時の動作がローカル変数とインスタンス変数 \| FJORD BOOT CAMP(フィヨルドブートキャンプ)](https://bootcamp.fjord.jp/questions/647) - Rubyでは「セッター」と「ゲッター」という言葉をあまり見かけない気がする - `user.name = 'Bob'`は代入しているようみ見せかけて実は`user.name=('Bob')`とメソッドを呼び出している - @shirotamaki - `name=`メソッドは、@nameを外部から変更するためのメソッドで、`attr_accessor`, `attr_writer`で置き換えることができる。 - `name=`は、`foo=`とかでもいけるのか気になった。 - いける。 - `attr_` `initialize`の曖昧な理解が解決できスッキリした。 - `name=`記法について。Ruby超入門に詳しく書いてある - @pctapitapitapi - `=`で終わるメソッドを定義できるっていうのが中途半端でなんか使いにくい。。と思っていたけど、よくよく見てみたらメソッド名を代入式みたいに書けるよってことかなと思った。 - 超入門にも書いてあるよ!読み直してみて👍(198ページ) - @yatsuhashi - `name=`メソッドは、実行する際、`=`と引数の間、`name`と`=`の間にスペースを入れることができる - @obregonia1 - インスタンス変数とローカル変数の挙動の違いは気にして無かったのでyana-giさんのQ&Aを後で見てみる - @isshi-hasegawa - `attr_accessor`・`attr_reader`・`attr_writer`は、どれも最初は呪文に見えた - セッターとゲッターはJavaScriptで初めて聞いて「?」となった ### 振り返り(よかった点・次回に向けての改善点等) - @eatplaynap - このHackMDずっとハイライトされてたのがいつのまにか治ってよかった - 昨日はラジオ参加だったのであんまり理解できてなかったけど、復習できてありがたかった! - @yana-gi - 昨日途中だったところの復習から始めたおかげでちゃんと理解しながら進められた - `attr_xxx`がモジュールのメソッドで、呼び出される時はレシーバーのselfが省略されていることが分かった。メソッド呼び出しに見えなくてもメソッドだったりする。 - @isshi-hasegawa - 寝坊したけどなんとかついていけた - `attr_accessor`って何?からどんどん深堀りしていけた - @pctapitapitapi - 昨日はインスタンス変数のところがふんわりした理解だったけど、もう一度ゆっくり復習してみるとちょっとわかった様な気がする。 - 超入門も読み直さないと! - @yatsuhashi - レシーバが省略されてること考えてなかった - @hosso - `attr_〇〇`周りがより理解できた! - @shirotamaki - Ruby超入門を見直そうと思いました! - ClassはModuleが親クラス。 ## 2021\-07\-28 ### 参加者 参加者は`%w[]`の中に署名してください。 ```ruby %w[eatplaynap isshi-hasegawa pctapitapitapi yana-gi obregonia1 shirotamaki keikosmile npakk].shuffle.slice(0,4) ``` ### 司会 - @eatplaynap ```ruby %w[eatplaynap isshi-hasegawa hosso yana-gi shirotamaki yatsuhashi obregonia1 pctapitapitapi keikosmile].sample ``` [タイマー](https://timer.onl.jp/) ### ドライバー - @isshi-hasegawa - @shirotamaki ```ruby %w[isshi-hasegawa yana-gi shirotamaki yatsuhashi obregonia1 keikosmile].sample ``` ### スタート地点 - 第7章 7.3.4 ### 疑問点・気づき #### 第7章 7.4.2まで - @eatplaynap - クラスメソッドを使う場面「クラスに関連は深いものの、ひとつひとつのインスタンスに含まれるデータは使わないメソッドを定義したい場合」がどういう場合なのかよくわからなかった - 伊藤さん「それな」 - インスタンスに全く依存していないメソッドを定義する場合使える可能性もある - あまり機会は多くない - 定数はマジックナンバーを回避するために定義する - オブジェクト指向は擬人化、シュミレーションで考える - むき出しのコードが読みづらいというのは、昨日自分で書いたボウリングの非OOP版のコードを読んだとき思った。どこで何をやりたいのかいちいち読むのだるすぎる - @yana-gi - 例題のテストコードのようなオブジェクト指向でかいたコード理解しにくいという疑問に対して伊藤さんの回答 - プログラム感(条件分岐など)はない方がいい。 - コードが小さいうちはまだ処理を追えるけど、コードが大きくなったりチームで開発をしているといちいち処理を追えない。 - なので裏でやってることは隠して欲しい - 名前が重要という話にもなってくる(メソッド名に反して違う動きをしていると読みにくい) - 自分もチーム開発をしていて、処理を追っている時に全部コードを読んでられないことや、メソッド名だけで何をしているのか判断するしかないと思っていたので、今回の伊藤さんの回答に納得した。 - インスタンスメソッドとクラスメソッドの使い分け(by伊藤さん) - インスタンスメソッド - クラスが持つインスタンス変数を扱う処理 - クラスメソッド - インスタンス変数を使わずに書く処理 - @isshi-hasegawa - るりまの"クラス名#メソッド名"と"クラス名.メソッド名"の表記の違いを理解していなかった - 前者がインスタンスメソッドで、後者がクラスメソッド - Tell, Don't Ask(求めるな、命じよ) - 伊藤さんの話を聞いて、ようやく具体的なイメージがつかめた - [Tell, Don't Ask(求めるな、命じよ) \- しめ鯖日記](https://llcc.hatenablog.com/entry/2015/11/23/130412) - @pctapitapitapi - 超入門も7章のメソッドから、🍒本も7章のクラスから理解が難しくなっていったので、今日の伊藤さんのお話しを聞いて今は難しいと思ってていいんや!と思えたのでありがとうございました。オブジェクト指向で理解して行けばわかりやすくなって来るとのこと。 - @npakk - プログラムを擬人化させて理解するというのは大事だということがわかった。ドメイン知識においてもこの考えは通用するなーと改めて思ったので意識したい。 - クラスメソッドはインスタンス化しなくてよいという点がメリットとしてあると思うが、これをちゃんとどういう状況であれば便利であるのか説明するには難しい。 - @obregonia1 - クラスメソッドとインスタンスメソッドの使い分けはなんとなくわかってきたけど言語化できるほど理解できていない - [インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) \| mah365](https://blog.mah-lab.com/2014/11/13/instance-method-and-class-method-with-ruby/) - @yatsuhashi - わかりやすいメソッドやクラスの大事さ - 未来の自分が読んでわかるようなコード - @shirotamaki - クラス(7章)に入り、グッと難しく感じる理由がわかった。 - 伊藤さんの説明を聞き、クラスの概念が例題を通して意識できるようになれる手がかりが得れた気がする。 - 過去の自分や開発メンバーにとってわかりやすいプログラム。クラスやメソッドの定義など大事。 ### 振り返り(よかった点・次回に向けての改善点等) - @yana-gi - 伊藤さんのなぜオブジェクト指向で書くのか、という説明がシンプルで分かりやすかった。自分が説明する時があったら参考にしたい! - 参加者の疑問や体験談などから理解を深められるのはやっぱり輪読会のいいところだなと思った。 - @npakk - プラクティスの進み方がバラバラだけど、その違いからみなさんがどう理解しているのか知る機会になって勉強になった。 - オブジェクト指向について伊藤さんやチーム開発されている方からの視点で説明を受けられてわかりやすかった。 - 初VCあり参加で途中から参加してわからない点もあるが、細かく一緒にコーディングされているので一人でやるよりはわかりやすい! - - @shirotamaki - 今日はオブジェクト指向の話しを聞けたりなど、神回だった! - :kami: - チーム開発や実際に働いている方の話しが聞けて良かった。 - @yatsuhashi - オブジェクト指向のプラクティスはまだ先だけど、今日学んだことを覚えておきます💪 - @obregonia1 - オブジェクト指向で書くとどんなメリットがあるかを頭に入れておくと理解しやすくなるかもしれない - @isshi-hasegawa - 最近オブジェクト指向がアツい(プラクティスはまだまだだけど) - @pctapitapitapi - 伊藤さんが突然参加してくださったのでちょっと緊張しました笑 オブジェクト指向で読むともっと理解できるということだったので、今後のプラクティスでオブジェクト指向のことを学ぶのが楽しみです! - @eatplaynap - 伊藤さんが参加してくださり、オブジェクト指向全体にどう取り組めばいいかのイメージができた気がする。多分ラジオ参加の方にもとても有益な時間だったと思う - タマキさんがドライバー交代してくれてめちゃくちゃスムーズに進んだ - :sorena - ありがたかった - えぬぱくさんも初参加ありがとうございます! - ありがとうございます! ## 2021\-07\-29 ### 参加者 参加者は`%w[]`の中に署名してください。 ```ruby %w[eatplaynap isshi-hasegawa pctapitapitapi yana-gi obregonia1 shirotamaki keikosmile npakk yatsuhashi].shuffle.slice(0,4) ``` ### 司会 - @hosso ```ruby %w[eatplaynap isshi-hasegawa hosso shirotamaki yatsuhashi obregonia1 pctapitapitapi].sample ``` [タイマー](https://timer.onl.jp/) ### ドライバー - @shirotamaki ```ruby %w[isshi-hasegawa yana-gi shirotamaki yatsuhashi obregonia1].sample ``` ### スタート地点 - 第7章 7.4.3 ### 疑問点・気づき #### 第7章 7.4.3まで - @eatplaynap - 分かった部分もあるけどわからない部分が不安… - 「駅名」が乗車駅を表しているのか降車駅を表しているのかがまだ混乱している - Gateクラスの`enter`メソッドとTicketクラスの`stamp`メソッドのところまたちゃんと考える - @pctapitapitapi - オブジェクト指向が分かっていれば良くわかるということがわかった。。。 - ファイルが分かれているのでわかりにくかったのもある気がする。。。 - トミーさんが`name`の受け渡しを深堀りしてくれたおかげで、そういうもんなんや〜とボーッとしてた所がわからないことがわかった。なぜ`name`が渡るのかはよくわからなかった。。。これもオブジェクト指向。。?? - @obregonia1 - シーケンス図は説明聞いてもよくわからなかったので考えるのをやめた - インスタンスメソッドを他のクラスで呼び出したりすると処理を追うのが難しくなる - @hosso - クラス同士の値の受け渡しがまだ完全に理解できていない。けどみんなの説明を聞いて少し分かったきがする。 - 少しシーケンス図を読み方が分かった、実務での使われ方などもsanfrecce_osakaさんの話を聞いてイメージできた!ありがとうございます! - @yatsuhashi - なんとな〜〜くわかった - `@name`が`attr_reader`なしでいいのかという疑問で、スルーしていたところが深掘りできて良かったです - @isshi-hasegawa - 1周目読んだときはこの例題意味不明だった😇 - 肝心の部分が聞こえなくて困ったけどコード読んでみんなの話聞いてたら大体わかった - 一度でも喋るタイミングを失ったらずっと黙ってしまう - メソッドの中でのメソッド呼び出しを事前にイメージできたら、シーケンス図を書けるようになるのかも - @yana-gi - 例題のコードをなんとなく理解していたつもりだったけど、共有してもらった疑問点とその解説を聞くと理解が足りなかったことに気づけた - 苦手意識のあったシーケンス図をコードと一緒に読んだら少し読み解けるようになった。 - シーケンス図はコードを書く前に必ず書くわけではなく、他のメンバーとのコミュニケーションツールとして書いたりすることがある - @shirotamaki - コードを書く前に文章で設計を書き記してあったが、それに沿ってコード追っていくと動きが掴みやすいと思った。 - シーケンス図は、補助輪としての利用。他のメンバーとのコミュニケーションで使う。 - プログラムというよりは実際のモノに置き換えて考えるとよくて、ticket は切符で改札機に通すと印が入りますよね。その印が入った情報を残しておかないと料金の計算ができないので stamped_at で切符に印が入った駅の情報を残している感じですね。(森塚さん) - 実行しながら pp とかで変数に今何が入っているかを確認しながらコードを読むとより理解しやすいかも(森塚さん) #### 第7章 7.4.まで - @eatplaynap - RDocは最初スルーしようかと思ったけどちゃんと見たらすごい高機能だった - リファクタリングするとめちゃくちゃテストコードが見やすくなったと思ったけど、これもチェリー本を読み進めてRubyの基礎的な文法が頭に入っているからかな - ここまでちゃんと設計してコードを書いて、テストでエラーが出たらデバッグするの結構ワクワクしそう - 自分は設計なしにいきあたりばったりに書いて分からないので毎回泣きそうになってるが… - @yana-gi - Minitestのsetupメソッドはテストメソッドを実行する前に都度実行される。前は1番最初のテストメソッドを実行する前に1度だけ実行されるものだと勘違いしていた - テストを実行した後に実行する`teardown`もある(ほとんど使われない) - るりまから飛べるRDocは、Rubyで自動生成されていたことを知って感動。RubyのドキュメントをRubyで作ってる……! - @pctapitapitapi - 一人で読んでる時はテストコードのメソッドとかがよくわからなくてこういうもんか〜と思っていたけど、意味が分かってきた。 - RDocの使い方が全然わからなかったですがやなぎさんがるりまで見たことある!とおっしゃって実際に使われている所が見られて盛り上がった。 - @hosso - `setupメソッド`でテストに必要な情報をあらかじめ定義しておく。便利。 - RubyでRubyのドキュメントを自動生成してくれるの凄すぎる。今日一盛り上がってた。笑 - @shirotamaki - RDoc(Ruby Document)のこと。るりまにリンクが貼られている。 - `setup`メソッドを定義すると、テストメソッドの実行前に毎回setupメソッドが呼び出される。(リファクタリングしたコード) - 下記の`setup`メソッドは、`Minitest::Test`に定義されているメソッド。継承している。 各テストメソッドの実行前に呼び出している。 ```ruby= class GateTest < Minitest::Test def setup @umeda = Gate.new(:umeda) @juso = Gate.new(:juso) @mikuni = Gate.new(:mikuni) end ``` - @obregonia1 - minitestのsetupメソッドはテスト実行前に一回実行しているイメージだったけど @yana-gi さんのおかげで各テストメソッドの実行前に呼び出していることがわかった - 🙌 - みんなスルーしていたっぽいRDocはめっちゃ便利なことがわかった。Ruby便利やなー - @yatsuhashi - `setup`はテストメソッドごとに実行される - RDocすごい - @isshi-hasegawa - @yatsuhashi ありがとう😇 ### 振り返り(よかった点・次回に向けての改善点等) - @eatplaynap - 参加者の配列、前回のやつをコピペするといない人けっこういるから参加者は都度書いたほうがよさそう - 司会の塩梅でタイムスケジュールしてくれたのがよかった。今後も司会が自由に采配(区切りが悪そうだったらオーバーしてもいいし、今回みたいに振り返りは省略など)してくれるのが個人的には嬉しい ## 2021\-07\-30 ### 参加者 参加者は`%w[]`の中に署名してください。 ```ruby %w[eatplayanap isshi-hasegawa yana-gi Hosso Daichi yu-kichi yatsuhashi shirotamaki obregoina1].shuffle.slice(0,4) ``` ### 司会 - @eatplaynap ```ruby %w[eatplaynap isshi-hasegawa hosso shirotamaki yatsuhashi obregonia1 pctapitapitapi].sample ``` [タイマー](https://timer.onl.jp/) ### ドライバー - @yatsuhashi ```ruby %w[isshi-hasegawa yana-gi shirotamaki yatsuhashi obregonia1].sample ``` ### スタート地点 - 第7章 7.5 ### 疑問点・気づき #### 第7章 7..まで - @shirotamaki - [Module\#attr\_accessor \(Ruby 3\.0\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/latest/method/Module/i/attr_accessor.html) - `name=`のようなセッターメソッドを呼び出す場合は、`self`を付ける必要がある。 - クラスは全部 Class クラスのインスタンスが定数(Ruby では頭文字が大文字のものが定数)に入ったもの。 - @eatplaynap - クラス定義内に登場するselfは、クラス直下およびクラスメソッド内だとだとクラス自身、インスタンスメソッド内だとそのクラスのインスタンス自身を表す。 - yu-kichiさんの説明でなんとなく分かった - セッターメソッド(`name=`)を呼び出したいときは`self`をつけないとローカル変数の代入とみなされる。 - @yu-kichi - クラスとselfの話やっぱりややこしい。。上手く言語化するのすごいむづかしい。。 - 初めて参加したけど話しやすい雰囲気ができてて参加しやすかったです! - 🙌 - :yatta:      - @yana-gi - インスタンス変数は参照時は`self`や`@`をつけなくても参照できるけど、代入時は`self`や`@`をつけないと代入できない。(ローカル変数と認識される) - クラス構文直下やクラスメソッド内の`self`はクラス名が、インスタンス変数内の`self`はインスタンスが返ってくる - というところまで分かったけどそれ以降はあまり理解できていない…… - @isshi-hasegawa - [class Class \(Ruby 3\.0\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/latest/class/Class.html) - 今日の範囲を踏まえて`class Class`のるりまを読むとチョットワカル - @obregonia1 - selfは何を表しているか混乱してしまうけど、場所をよく見ると理解できそう - @Daichi831 - クラスメソッド、インスタンスメソッドの部分は結構忘れていると感じた - selfが何を指しているか意識しないとな〜 - @hosso - クラス構文直下の`self`、クラスメソッド内の`self`、 インスタンスメソッド内の`self`の違いが分かったけど、使い分けはわからない。 - Rubyの`self`が良く分かっていない状態で、JavaScriptの`this`が出てきたので良く分からない状態のループになっていた。 - @yatsuhashi - クラスはClassクラスのインスタンス - `Foo.calss => Class` ### 振り返り(よかった点・次回に向けての改善点等) - @eatplaynap - 新ルールを共有するの毎回忘れる - 初参加の方が増えて嬉しい - 音読は初参加の方は当てないようにしているけど、それだと話すタイミングとか減っちゃうかな? - 音声チャンネルでマイクオンの人を指名するDiscord botを作りたいと昨日みそさんの話を聞いて思った - @yana-gi - 参加者の配列リストが確かに使いにくかったので毎度書くようになったのはいいルール見直しだなと思った - クラスメソッド何が分からないのか分からない。分からないことを言語化するのって難しい - @isshi-hasegawa - えぬぱくさんと話し込んでて寝不足だったけど、おもったより頭は冴えてた - @hosso - 7章難しいので、有識者が沢山いてくれると助かリます! - @yatsuhashi - 初参加の方いて嬉しい🙌 - 🙌😍🙌 - 🏎 - @Daichi831 - 初参加でしたがとても入りやすかったです〜 - 🙌😆🙌 - 🙌 - 言語化は難しいですね - selfの部分はあやふやなので復習しようと思いました。 - @yu-kichi - yatsuhashiさんお疲れ様です〜タイプめちゃ早い!!入力する人大変そう。。w - @obregonia1 - なんだかんだでクラスも半分ぐらい終わってILL - 初参加でも発言しやすいのは主催者の人柄のおかげかなー - :sorena: - 😸 - :waiwai: - @shirotamaki - クラスに関する内容は、言語化が難しい。 - 初参加の方がいると刺激になる&勉強になる。

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully