swiftを勉強してrubyの コードが変化した3つの事
TRANSCRIPT
![Page 1: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/1.jpg)
@kkkyouhei
swift ruby
![Page 2: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/2.jpg)
swiftを勉強してRubyのコードが変化した3つの事
![Page 3: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/3.jpg)
1つ目
![Page 4: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/4.jpg)
Structを使うようになった
![Page 5: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/5.jpg)
メソッドの戻り値としてhashを受け取る例
![Page 6: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/6.jpg)
before
![Page 7: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/7.jpg)
![Page 8: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/8.jpg)
after
![Page 9: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/9.jpg)
![Page 10: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/10.jpg)
メリット
![Page 11: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/11.jpg)
hashは無い要素にアクセスするとnil
structは例外が発生
![Page 12: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/12.jpg)
戻り値に変更があった場合に呼び出し元のコードを修正漏れが合っても見つけやすい
![Page 13: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/13.jpg)
2つ目
![Page 14: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/14.jpg)
メソッドの引数にブロックを活用するようになった
![Page 15: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/15.jpg)
外部APIを実行する例
![Page 16: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/16.jpg)
before
![Page 17: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/17.jpg)
![Page 18: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/18.jpg)
after
![Page 19: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/19.jpg)
![Page 20: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/20.jpg)
メリット
![Page 21: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/21.jpg)
メソッドの戻り値が配列やハッシュだとコード上からは
読み取りにくい
![Page 22: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/22.jpg)
ブロックの引数を単純な値にすることで理解しやすい
![Page 23: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/23.jpg)
3つ目
![Page 24: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/24.jpg)
抽象クラスabstract class
![Page 25: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/25.jpg)
HTMLをパースしてデータを取り出す例
![Page 26: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/26.jpg)
before
![Page 27: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/27.jpg)
![Page 28: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/28.jpg)
×クロールするドメイン分
![Page 29: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/29.jpg)
after
![Page 30: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/30.jpg)
![Page 31: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/31.jpg)
共通処理は抽象クラスに残す
![Page 32: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/32.jpg)
![Page 33: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/33.jpg)
具体的な処理は実装クラスに移動
![Page 34: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/34.jpg)
メリット
![Page 35: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/35.jpg)
DRY
![Page 36: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/36.jpg)
ただし呼び出し元のクラスによってテンプレートメソッドの挙動を変えるような事があれば意味がなくなる
![Page 37: Swiftを勉強してrubyの コードが変化した3つの事](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5a64771d7f8b9afc4d8b46e5/html5/thumbnails/37.jpg)
おわり