CA Tech Dojo ~Swift~ が最高すぎた話! <体験談>

##  はじめに
こんにちは! 
iOSエンジニアになることを目指して、Swiftの勉強しておりますそこら辺の大学2年生です！

今から2ヶ月も前の話になってしまいますが、CyberAgentさんが開催したCA Tech Dojoに参加してきました！
なぜ今になって記事を書いているのかと思っている方も少なくないでしょう🧐
それはまぁ...忙しかったからとでも言っておきましょう笑
(すっかり忘れたとか、ドラクエにハマってたとかは口が裂けても言えないよ🫢)
何気なくいつものようにTwitterを見ていたら、dojoで出会った友達がとても詳細に書かれた素敵な記事を書いていて、めちゃくちゃ感動して触発された(笑)ので、いろんなことを振り返りながら記事を書いていこうと思います！
また、今回CA Tech DojoのSwift編は初めての開催だったらしく、もしかしたら今後も行う可能性があるので、少しでも興味ある方々にCA Tech Dojoの魅力ちょっとでも伝わればと思います！
※技術的な話は[こちらの記事](https://qiita.com/kanta_Swift/items/c893cf402dd520a019c5)で触れておりますので、もしよろしければ見て欲しいです！

## インターンの内容
#### 期間 ・ 場所
2/16~3/1の約2週間でAbema Towersで行われました！ 
あんなに高いビルで開発をしたの初めてでなんか嬉しかったですw
#### どんなことをするの？
本インターンのテーマとして「1人でアプリを開発して、リリースできるようになる」というのが決められていました。
そのため、課題アプリとして「QRコードからTwitterとGithubのアカウントを交換できる」というアプリの開発に取り組みました。
参考までに実際に自分が作ったアプリの写真を一部載っけます！

| ログイン画面 | ホーム画面 | 交換画面 | タップ時|
|--------|-------|-------|-------|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/2a5a57a0-1cfa-dcc8-4a07-8938d5d66cc5.jpeg" width="150">|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/3e228b7c-9870-7681-69bc-1ea1b2d4a4e1.jpeg" width="150"> | <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/cdd11007-7da6-b060-60ad-59fa1cc3e91a.jpeg" width="150"> | <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/b527ddb7-a70f-11e6-a0cd-2ed43e1a28b9.jpeg" width="150"> |



#### 自分の技術スタック
##### アーキテクチャ
MVVM(を意識しました)
##### 主に使った技術
- Realm -> 友達追加用のデータベース
- UserDefault -> 自分用のデータベース
- Snapkit -> レイアウト
- Combine&CombineCocoa



#### どのように開発をするのか
本インターンのテーマとしてあるように基本的には一人で作ります。
とはいっても、開発途中に分からないことや少し手が止まってしまうことは誰しもがあるでしょう🫤
そういった時には、メンターさんや本インターンで出会った仲間が教えてくれます✨
事前に最低限の要件が与えられており、その要件に満たすように作るというものでした！
一方で、アプリ内のデザインや追加機能に関しては自由に進めることができるので、一見同じようなアプリに見えても一人一人が違うアプリを作り上げていました！

## 印象に残ったこと！
本インターンに参加中に特に印象に残ったことを3つ抜粋して残していきたいと思います！
※全部は多すぎて書ききれないよ🫢🙅‍♂️

### ご飯
なんといってもご飯ですね!!
お昼のお時間にメンターさんに美味しいお店に連れてってもらって昼食をとりました！
めちゃくちゃ美味しかったです✨
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/c78608c0-90f4-bb1b-70d1-95243ca8a908.jpeg" width="500">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/e9e4b81f-9eb7-bf5b-8b0f-87513a7c0afb.jpeg" width="300"> 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/13fc9667-9789-a895-7e99-974563b61d14.jpeg" width="300">

「ご飯が美味しかった」ということだけではないですよ！笑
そこでインターンメンバーといろんな話をして仲が深まっていったり、メンターさんから興味深いお話を聞かせていただいたりなど、本当に有意義な時間を過ごすことができました。

### いろんな方々との出会い
ちょっとうざい言い方ですね笑
一番インターンに参加して良かった部分と言えるかもしれません。
自分は身近にSwiftの勉強している人はあまりおらず、残念ながら孤独で勉強しております😭
しかし本インターンに参加して自分と同じSwiftを勉強してる人の話を聞くことで刺激を受けたり、一緒にコードを見あったりすることで新しい技術を知れたり、自分が知っている技術を伝えたりなどすることで大きく成長をすることができたと思います！これは自分一人で勉強しているだけではなかなか経験することのできないものだったと思います！またメンターさんに実際にコードを見てもらい、プロのアドバイスをいただくことでより良いコードに仕上がったこともとても印象的です✨
実際にPRを投げて、コードレビューをもらっている人もいました！（自分もお願いすれば良かった笑）

![ios_dojo_member.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119753/9e2d68b5-f5e8-4b2a-8f0e-89f969b27799.jpeg)

### 開発での苦労
自分は本インターンの2、3週間ほど前からアーキテクチャを取り入れた開発の勉強をし始めていました。実際にはMVVMを取り入れて開発をしたのですが、今回のような本格的なアプリで使用したのははじめてで、ましてやCombineについてもサンプルコードを何度か見たことがある程度で、実際に取り入れて実装するにはかなり苦戦をしました。結果としては最終的に所々、責務をしっかりと分けられていなかったりや共通化できそうな部分がたくさん出てきたりなど課題もたくさん出てきてしまったのですが、アプリ自体をしっかりと完成させることはできたので本当に良かったです。
またこの期間ほどいろんな技術記事を見まくったりして勉強した期間は未だありません笑
新たなことに挑戦し苦労した故に、いろんなことを学び大きく成長することができました！

### どうでもいい話
UIKitを用いた開発とSwiftUIを用いた開発、またそのどちらも使って開発を行うなど様々なやり方があると思いますが、当時自分はSwiftUIを全く触れたことがなく、UIKitを使って開発を行いました。インターン生の中には自分とは逆で、UIKitを触ったことがなくSwiftUIを用いて開発をしている人をいました。自分はそれをきっかけにインターン終了後、SwiftUIの学習に取り組んでいるのですが、本記事を書くにあたって久しぶりにUIKitで書かれたコードを見たのですが、思考が停止してしまい理解するのに大変苦しみました。どちらもできるようになりたいので踏ん張っていきたいと思います🔥

## 終わりに
少し長くなりましたが、ここまで読んでくれてありがとうございます🙏
自分がプログラミングの勉強を始めて以来、短期間でこんなにも成長できたはメンターの皆さん、インターンで出会った友達がいてこそだったなと今でも強く感じております。
自分が目標としているiOSエンジニアになるために、これからも日々学習に取り組んでいきたいと思います。
改めまして、本インターンをサポートしていただいた社員さん方含め、本インターンに参加したインターン生の方々、本当にありがとうございました！！

最高の2週間でした！！！

## インターンで出会った友達の記事
https://www.kantacky.com/ca-tech-dojo-swift-2023/