Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MobileTechConference-1016

Tatsumi0000
October 16, 2020

 MobileTechConference-1016

10月16日に開催されたGMOペパボ主催のモバイルテックカンファレンスの発表資料です。
https://pepabo.connpass.com/event/190760/
タイトルは、「新卒エンジニアが配属3ヶ月でやってきたこと」です。

スライド内のリンク
GitHub:https://github.com/tatsumi0000/
ペパボ新卒エンジニア研修 2020 Vol.1:https://tech.pepabo.com/2020/08/31/newcomer_training_vol1/
ペパボ新卒エンジニア研修 2020 Vol.2:https://tech.pepabo.com/2020/09/08/newcomer_training_vol2/
ペパボ新卒エンジニア研修 2020 Vol.3:https://tech.pepabo.com/2020/09/14/newcomer_training_vol3/
swift初心者がiOS13対応でメインスレッド以外でUI更新をしてクラッシュさせてしまった話:https://qiita.com/rymiyamoto/items/7ace750172b84a2ff809
MainThread Checker in XCode:https://medium.com/@trivediniki94/main-thread-checker-in-xcode-8b9f3f8ce10
ReactorKit/ReactorKit:https://github.com/ReactorKit/ReactorKit
ReactorKit(Flux + Reactive Programming)を学ぶ1 入門編:https://qiita.com/yusuga/items/e793963ff51ee493497a
GMOペパボ株式会社採用サイト:https://recruit.pepabo.com/

Tatsumi0000

October 16, 2020
Tweet

More Decks by Tatsumi0000

Other Decks in Programming

Transcript

  1. 3 • 音楽鑑賞 ◦ 最近はSpotify Premiumに入って業務中は永遠と音楽鑑賞 • ゲーム ◦ Switchが当選してからは、Switchばかり

    • モバイル(Android、iOS)開発が好き ◦ 趣味で触るのは、フロント(Vue.js)が多い • 詳細 ◦ GitHub:Tatsumi0000 ◦ Findy、LAPRAS 3 自己紹介
  2. 4 • EC事業部 カラーミーショップグループ サービス基盤チーム ◦ 名前にカラーミーと入っているが、EC事業部に関することなら何でもする チーム ◦ 鋭意製作中のiOSアプリチームに参加

    ▪ 鋭意製作中のiOSアプリのことをプロジェクトXと呼ぶ • 入社してから ◦ 4〜7月まで新卒研修 ◦ 5〜7月がエンジニア研修 ▪ 5月:GTB ▪ 6〜7月:Rails、フロントエンド、セキュリティ、機械学習、 読書会など… • ペパボ新卒エンジニア研修 2020 Vol.1 • ペパボ新卒エンジニア研修 2020 Vol.2 • ペパボ新卒エンジニア研修 2020 Vol.3 4 自己紹介
  3. 9 • プロジェクトXチーム ◦ 4名で活動 ◦ ディレクター1名、iOSエンジニア2名、メンター1名 ◦ 基本的にプロジェクトXの実装は自分1人で行い、実装や開発の進め方で 分からなかった場合に質問や実装をチームの方にお願い

    ◦ PRのレビューはもう1名のiOSエンジニアの方にお願い ◦ メンターは新卒である自分の相談事にのってくれる方 • 毎日オンラインで昼会を行い、進捗やこれからの開発方針の共有 • 実装や開発方針で悩んだらSlackやGHESのissueやPRを使って質問 ◦ 基本的にSlackで質問 9 プロジェクトXの開発体制
  4. 10 • 目標設定 ◦ 最速でストア公開 • 最新のXcodeでビルド出来るようにエラーを潰す ◦ ライブラリアップデートによる使うメソッド名の変更 •

    UIの更新をメインスレッドに変更 • Swift5に対応 ◦ テストが書かれていない箇所のユニットテストを書いた ◦ プロジェクトXで使われているReactorKitの使い方をテストで書きながら覚 えていく 10 配属されてきてからやってきたこと
  5. 11 • iOS13対応からUIの更新はメインスレッドでしなければならない*1 ◦ クラッシュするまで気づきにくい… ◦ Main Thread Checkerを有効にすることで検知しやすく •

    Main Thread Checkerとは ◦ メインスレッドで呼ぶべき処理を実行時にチェック*2 11 UIの更新をメインスレッドに変更 *1 swift初心者がiOS13対応でメインスレッド以外で UI更新をしてクラッシュさせてしまった話 https://qiita.com/rymiyamoto/items/7ace750172b84a2ff809 *2 MainThread Checker in XCode https://medium.com/@trivediniki94/main-thread-checker-in-xcode-8b9f3f8ce10
  6. 15 • ReactorKitとは単方向ストリームのアーキテクチャを構築するためのSwiftアプリ ケーションのためのフレームワーク*1 ◦ FluxとReactive Programmingの組み合わせ*2 ◦ RxSwift、RxCocoaが使われている 15

    ReactorKit *1 ReactorKit/ReactorKit https://github.com/ReactorKit/ReactorKit *2 ReactorKit(Flux + Reactive Programming)を学ぶ1 入門編 https://qiita.com/yusuga/items/e793963ff51ee493497a
  7. 16 • Action ◦ ユーザの操作 • State ◦ Viewの状態 •

    Reactor ◦ ビジネスロジック • View ◦ データを表示 16 ReactorKit
  8. 18 • ReactorKitの勉強方法 ◦ 既存のコードでテストコードが書かれていない箇所を探し、テストを書いた り、解説記事やReactorKitリポジトリのサンプルを読む ▪ Reactive Programmingの知識が全く無いので、かなり詰まりながら テストを書いたり新機能を追加

    ◦ 実装したい機能と似ているコードを探して一行ずつ何をしているか コメントを書いて処理の流れを追う ▪ コメントを書いても内部の処理が理解できないときは、 printや debug()関数を挟んでデバッグ 18 ReactorKit
  9. 19 • 実装サンプル ◦ 初回起動時にお知らせのポップアップを出す • 出てくる人 ◦ HomeTableViewController.swift ▪

    UIを担当 ◦ HomeTableViewReactor.swift ▪ Actionや、Mutation、Stateを担当 19 ReactorKit
  10. 28 28 コメントの追加 • extensionを使って機能を追加されていた ◦ Quick Help inspectorが出てこない ◦

    出てくるようにコメントを追加 ▪ 関数の行で ⌘ + ⌥ + / でテンプレートを追加
  11. 30 30 ドキュメント • PRのテンプレートを作成 ◦ 新規でテンプレートを作成 • リリース作業などが以前と少し変わったのでドキュメントの更新 ◦

    Firebase App Distributionでの配布方法を追記 • 自分の考えをスクラップボックスに活動ログとしてメモ ◦ Xcodeの操作やSwiftで分からないことや、悩みをメモ • Slackで質問したら関連するissue/PRにメモ
  12. 31 31 直近の作業 • Xcode12・iOS14・iPad対応 ◦ iPadに対応していたが、一部レイアウトが崩れていたので修正 ◦ Xcode12から今まで通りのCarthageの使い方ではだめだったので、 他のモバイルチームの方に教えてもらってスクリプトを導入

    • LicensePlistの導入 ◦ 使用しているライブラリのライセンスなどの詳細を自動生成 ▪ Run Scriptに追加 • コードフォーマッタの導入 ◦ 元々SwiftLintを使ってはいたが、フォーマッタとしては使っていない ▪ commit時に差分のあるファイルだけフォーマット