サイバーエージェントの3days iOSハンズオンに参加してきた

 

 

こんにちは。sansai(@sansai_dev)です。

今回株式会社サイバーエージェントの3daysインターンシップに参加してきたので、そのことについて書いていきたいと思います。

どんなインターン

今回参加したインターンは「無視できない!設計が学べる3days iOSハンズオン」です。

www.cyberagent.co.jp

期間: 2022/09/16 〜 2022/09/18

開催場所:サイバーエージェントのオフィス(アベマタワーズ)

内容:iOSアプリ開発における良い設計を学ぶ

お前、iOSやってたっけ?

知っている人もいるかもしれませんが、実は私はiOSエンジニアではなく、普段はReactやNext.jsを書くWebフロントエンドエンジニアです。そんな私がなぜiOSインターンに参加したのでしょうか。

理由としては大きく分けて2つあります。

というのが今回参加した大きな理由です。

まず1つ目ですが、私は元々、iOSエンジニアを目指していました。というのも高専に入学してからまず勉強したのがSwiftでした。ですが周りにWebエンジニアが多いことやiOS開発の難しさに足が止まってしまい、Web中心に勉強することが多くなりました。色々な会社のサマーインターンの選考を受ける中で、もっと他の職種も見てみようというような機運が高まり、ちょうど見つけたのがこのインターンでした。

2つ目ですが、このインターンがオフィスで開催されるのが個人的には大きなメリットでした。CAのオフィスを見ることができる・現場の雰囲気を味わえるというのがとても興味がありました。

なにしたの?

今回のインターンでは音楽アプリのソースコードリファクタリングするという内容でした。渡されるソースコードはメンターの皆様がわざと悪い風に書いてくださったもので、それを私たち学生が良い設計に書き換えていく。というのを3日間で行いました。

良い設計/悪い設計とは?

ダメな設計

  • 関心・責務が意識されていない
    • ViewController に全ての情報を含めている
      • 大量のロジック(function)・状態 (state)
    • ディレクトリ構成もめちゃくちゃ
  • テストしづらい (運用する際に副作用に気づくことができない)
    • DIされていない
  • アクセス修飾子がめちゃくちゃ
    • 全て public / internal で公開されている

良い設計

  • 責務がしっかりと分離されている (関心の分離)
    • View層 と ロジック層 がしっかりと分離されている
    • ディレクトリの構成もしっかりとできている
  • テストしやすい (機能追加・仕様変更の際に副作用に気付きやすくなる)
    • MockでDIしやすいように作れているか
  • アクセス修飾子もしっかり意識できている
    • internal で公開するものと private で閉じるものがしっかりと意識できている

今回のインターンでのメインは「設計」なのでとにかく設計についてたくさん教えていただきました。自分は今まできちんと設計について考えたことがなかったので、上記のことを意識するようにしながら3日間頑張りました。

成果

メイン画面にMVVMというアーキテクチャを適用しました。この記事に詳しく書いたので、よかったら覗いていいね押しといてください()

zenn.dev

懇親会が楽しすぎた

インターンの成果発表会が終わった後、みんなでご飯を食べに行ったのですが、そこでもたくさんお話を聞けてすごく楽しかったです。僕は二次会にも参加したのですが、そこでもサイバーエージェントという会社の良さについて熱く語ってくださって、本当に魅力的な会社だなと思えました。ちなみに僕はまだ18歳なのでひたすら柚ジンジャーとコーラを飲んでました。何杯飲んだか分かりません。

感想

正直、普段 Webばかりしているので今回のiOSインターンでは置いてかれることばかり心配していてとても不安な気持ちで参加していました。ですが、メンターの方も他の参加者もすごく優しくて基礎の基礎から質問してもとても分かりやすく解説してくださり、初学者の自分でもなんとか完走することができました。今回成果物としてよくできたとは言えませんでしたが、悪いコードを見てなぜこれが悪い設計なのかを説明できる。良い設計に実際に書き換えることができる。という当初の目標は達成できました。Webから飛び込んできた私を受け入れてくださった運営の方々には本当に感謝しかないです。サイバーエージェントという会社、そしてそこに所属するエンジニアの方々の人柄の良さ、技術力の高さ、視座の高さにはとても驚かされました。自分ももっともっと頑張らないといけないなと思えたインターンでした。本当にありがとうございました。

 

株式会社オプティムのサマーインターンに参加してきました。

こんにちは。sansai(@sansai_dev)です。

今回参加してきた株式会社オプティム様のサマーインターンについて書こうと思います。

オプティムってどういう会社?

www.optim.co.jp

「ネットを空気に変える」をコンセプトとして掲げ、農業や医療といった業界にITを取り入れる新しい挑戦をしている会社です。すごいよね。私自身米農家なので色々と農業に思うトコがあるわけなんですが、こんなことできたらいいのになあ...をまさに体現している会社さんです。(すごい)

オフィス

浜松町にある汐留ビルディングの18階にあります。めちゃくちゃ駅近でアクセス良すぎてびっくり。デカイビル。

 

インターン何したの?

今回、インターンの期間は2週間、前半1週間がリモートワーク、後半1週間がオフィスでの勤務でした。今回私はPTSという農業系のサービスに携わらせて頂きました。

www.optim.co.jp

今回私はフロントエンドエンジニアとしてこのチームに加わり、VueとTypeScriptを用いてサービスの改善に携わりました。

社長さん

インターンの中で代表取締役の菅谷社長とお話しする機会がありました。(中々ないよね。)農業や製造、建築といったITが入り切っていない業界に挑戦するきっかけや、会社に対する思い、これからのITについてなどを伺いました。すごく技術に対して嬉しそうに話す方で、生粋のエンジニアなんだなあという感じでした。アツい人でした。

 

感想

これまで実務としてコーディングをしたことはなかったのでとても貴重な体験になりました。実際のプロダクトチームに入りMTGなどにも参加させて頂き、仕事としての進捗管理、プロダクト開発に携わることができてよかったです。Vueは初めて触ったんですが、メンターとしてついてくださった社員さんがライフサイクルなども詳しく解説してくださり、カンゼンニリカイシタという感じです。このインターンを通じて、仕事というモノについての解像度はすごく高くなったかなと思います。お世話になりました。

 

 

 

 

 

初めまして

はじめまして、 @sansai_devと申します。 今回はてなブログを開設しました。

お前誰?

私ですか?私は三重県高専4年生のさんさい(18)です。 普段はWebフロントエンドを主に触っています。大絶賛就活中でございます。選考通らない辛いぴえん

なぜ開設したのか

理由は幾つかあるんですが、一番の理由としてはちゃんとしたアウトプットの場が欲しいというのが一番の理由です。 Webエンジニアだろ?!自分で実装しろよ!!!

...はい、あります。自作のブログ。

blog.sansai.dev

あるんですが、ちょーっと物足りない。そこを満足いくまで手直しするのがProなのですが、エネルギーを使うのでまた今度やることにしました。 使えるものは使わせて頂きます。

何投稿するの?

雑多に投稿していきます。参加したイベントの話であったりポエムであったり、色々書こうと思います。

最後に

初心者なので何か気に触るようなことがあれば遠慮なく言っていただけると嬉しいです。 どうぞよろしくお願いいたします。

おしまい。