見出し画像

SwiftとDartでやる「良いコード/悪いコードで学ぶ設計入門」の輪読会-4章編- に参加してみて

- 輪読会に関して

2年ぶりかな?
オフラインの勉強会に参加しました!


輪読対象の「良いコード/悪いコードで学ぶ設計入門」という本は、少し前からTwitterなどSNSで話題となっており、気になっていた本でした。

ただ、きっかけがないと本を読まない自分….
この勉強会は良いきっかけだと思い参加してみることに!
(完全に他力本願)

ちなみに途中の4章からなのは、なぜなのかわかりません笑
(3章の勉強会は以前からあった模様)


- 勉強会の振り返り

輪読会の内容自体は、エンジニアとして必要なベーシックな知識を勉強する感じです。ある程度の知識がある方にとっては、良い復習になるかと思います。

今回の4章では、可変(ミュータブル)不変(イミュータブル)を扱っており、Swift でいうところの Class と Struct を用して説明することできます。ここでは、値型参照型の違いを理解している必要があるので、初学者には少しだけ難易度は上がっているように感じました。

ただ、本の内容とは別途で Swift と Dart でそれぞれサンプルコードを用意してくれていたので、モバイルエンジニアにとって理解しやすい内容になっています。


- 面白いと感じたこと

Swift と Dart の言語仕様の違いを知れたのがよかったです。

Swift では以下のように関数の引数を直接操作しようとすると

Swiftのコード例

以下のようなエラーが出て実行できません

Swift コードのエラー

Swift では String や Int といったプロパティを引数とした場合、値型で渡されイミュータブルなものとなります。
(※クラスを引数とした場合は参照型となるが今回は触れないでおきます。)

これを Dart で書くとこのようになります。

Swiftのコードを Dart にした場合の例

こちらは無事に`Hello world`が表示されます。

Dart ではデフォルトで引数がミュータブルになっているのです。ただ、Swift と同じく値型なので、元の text 値は`Hello`のまま変わっていません。

ここで面白いのが、引数に`final`をつけることで、Swiftと同じくイミュータブルになります。

final を付与した場合の例

つまり、Swift と同様にエラーが出て実行できません

Dart コードのエラー

Dart では`final`をつけるかつけないかで、不可変を選べるという柔軟性があるのは面白いポイントだなと思いました。

逆にSwift では `inout` をつけることで参照型にもできますが、Dart はできません。Swift と Dart で細かい言語仕様の差があるのです。こういった差を知れたのは面白かったです。


- 勉強会後の交流

終わってからは8割?くらいのメンバーで、近くのカフェでワイワイしてました!

同じテーブルで話したメンバーは、開発経験が1〜2年の方が多く、これからのモバイル開発を牽引してくれそうなやる気に満ち溢れた方々ばかりで、圧倒されました!
(すごく老害ムーブをかましてしまった気がして反省している…)

せっかくの出会いなので、この繋がりを大切にしたいなと思います!また、次回も開催されるようなので、参加できたらまたレポートを書こうかと思います!


貯金します!