実務経験
学生アルバイト(iOSエンジニア) - 株式会社L is B
学生アルバイトのiOSエンジニアとして、自社アプリの機能実装・保守を担当しています。
- 技術スタック: Swift, UIKit
- 担当領域:
- 既存コードを調査した上での新機能の実装・不具合修正
- Objective-CからSwiftへの移行
- ユニットテストやテスト仕様書の作成
- Git・GitHubを使ったチーム開発
詳細な学び
大規模なプロジェクトへの向き合い方: 10年以上続くプロダクトのコードを読み、既存の設計に沿って機能を実装しています。複数のAPIと内部データベースのキャッシュを組み合わせる機能では、既存の挙動への影響を調べながら設計・実装を進めました。
レガシーコードの扱い方: Objective-CからSwiftへの移行では、型情報のない変数を構造体に置き換える作業も担当しました。影響範囲を調査し、作業を分割しながら移行を進めました。
チーム開発フローの実践: レビューする人が変更の意図を追いやすいよう、コミットの大きさやPRの構成を工夫しています。
git rebase/fixupを使ったコミットの整理も経験しました。タスク見積もりと自己管理: 調査が必要な複雑なタスクで見積もりが甘くなり、最終的に社員の方に作業を引き継いでもらったことがあります。不確実な作業の見積もりと、早い段階での相談が課題だと痛感しました。
インターン(iOSエンジニア) — Ameba
要件・仕様の検討とiOSクライアントの4画面を担当しました。
- 技術スタック: Swift, SwiftUI, UIKit, TCA
- 担当領域:
- AIを使った要件・仕様の文書化
- ステークホルダー、デザイナー、バックエンド、Android担当者との仕様検討
- iOSクライアントの4画面を担当
詳細な学び
ステークホルダーと仕様を詰める 既存のAI活用フローで作った案を基に、ステークホルダーやデザイナーと要件を詰めました。バックエンド・Android担当者とも仕様をすり合わせながら、iOS側の実装を進めました。
AIが生成した文章を仕様書に整える AIの文章には読みづらい箇所があり、関係者が同じ内容を理解できる仕様書に整えるのに苦労しました。この経験から、日本語を整えるSkillを使って推敲することが有効だと学びました。
インターン(iOSエンジニア) — サイボウズ株式会社
インターン生3人で、SwiftUIとTCAを使った開発に取り組みました。バックログから画面仕様を検討し、モブプログラミングで実装しました。
- 技術スタック: Swift, SwiftUI, TCA
- 担当領域:
- 要件とHIGを踏まえた画面仕様の検討
- 3人でのモブプログラミング
詳細な学び
デザインがない状態から仕様を考える 完成したデザインがない項目では、バックログの要件とHIGを参照しながら、UIを3人で議論しました。
チームで設計と実装を進める モブプログラミングを通じてTCAの状態管理を学びました。テストから既存コードを理解する方法や、機能単位でPRを分ける進め方も学びました。
インターン(iOSエンジニア) — ピクシブ株式会社
iPad向けお絵描きアプリ「Pastela」で、iOSクライアントとGoのバックエンドに取り組みました。
- 技術スタック: Swift, SwiftUI, UIKit, TCA, C++, Objective-C++, Go
- 担当領域:
- 複数言語にまたがる既存コードの調査と実装
- Goを使ったバックエンドの実装
詳細な学び
複数の技術を横断して開発する SwiftのiOSクライアント、C++の描画処理、両者をつなぐObjective-C++という既存の構成を調べ、処理のつながりを追いながら実装を進めました。
Goのバックエンドまで担当する iOS側に加え、Goのバックエンドも実装しました。限られた期間で複数の技術を並行して扱う中で、既存の処理を読み解く難しさと、技術を組み合わせて開発する面白さを実感しました。
プロダクト開発の手伝い — 株式会社FeaSion
株式会社FeaSionの社内向けプロダクトで、バックエンドの実装・保守を手伝っています。 Swiftのサーバー向けフレームワーク、Vaporを使い、技術調査から機能実装、テスト、デプロイの自動化まで担当しています。
- 技術スタック: Swift, Vapor, Docker, AWS
- 担当領域:
- Vaporの仕様・実装の調査
- OpenAPI関連など、開発に必要なライブラリの検証
- 機能の実装
- ユニットテストの作成
- デプロイ用Dockerfileの作成・調整
- テストやデプロイを自動実行するワークフローの実装
詳細な学び
ドキュメントで分からない点をソースコードで調べる: 必要な情報がドキュメントや既存の記事だけでは見つからない場合は、Vaporのソースコードを読んで調査しています。調べた内容を実装に反映しながら、開発を進めています。
技術選定: Apple公式のOpenAPI Generatorは、小さな検証用プロジェクトを作って採用を検討しました。必要な機能が揃わなかったため、このプロダクトでは採用を見送りました。
記事の執筆: Vaporをプロダクトに導入する際に調べた内容を、Zennの記事にまとめています。自分の知識を整理し、同じ課題にぶつかる人にも役立ててもらいたいと考えています。
プロダクトの運用経験: デプロイ用のDockerfileを作成・調整し、自動デプロイのワークフローを実装しました。担当プロダクトで使用しており、今後はFeaSionの他のプロダクトでも使える形にする計画です。機能実装に加え、継続して運用するための環境づくりも経験しました。
学生団体としてのプロダクト開発 — トクメモ
「トクメモ」は、徳島大学の教務システムや授業支援システムなどに1つのアプリからアクセスでき、対応するサービスへ自動ログインできるアプリです。利用者は約4,000人です。私も利用者の一人として、引き継いだiOS版の機能追加・不具合修正・リリースに取り組んでいます。
もともと開発していた学内団体「トクメモグループ」の活動停止に伴い、FeaSionへ開発を移管しました。現在はFeaSionが技術面と費用面を支援し、学生が主体となって開発や広告などの運営を続けています。 技術顧問とPMを兼任する企業の方と相談しながら、開発を進めています。
- 技術スタック: Swift, SwiftUI, UIKit
- 担当領域:
- 利用者の声を踏まえた仕様検討、新機能のAPI連携・UI実装・状態管理
- 不具合やクラッシュの調査・修正、大学側の仕様変更への対応、リリース
- エラーログの拡充、ユニットテストの追加・実機での動作確認
- セキュリティ調査と脆弱性の修正
- CI/CDや開発用Skills、引き継ぎ用ドキュメントの整備
- 広告やビラ配りなど、利用者への周知
開発で意識していること・工夫点
利用者の視点から仕様を考える 学生から話を聞いて仕様を検討し、大学のイベントに合わせて新機能のリリース時期を調整しています。API連携からUI・状態管理まで担当する際も、アプリを開いてすぐ大学のサービスにアクセスできる手軽さを保つようにしています。
安定して使える状態を保つ クラッシュレポートを基に原因を調査・修正し、エラーログも拡充して調査しやすくしています。Swift Concurrencyを踏まえた実装の見直しにも取り組み、ユニットテストの追加と実機での確認を続けています。
大学側の仕様変更に対応する 大学側の仕様変更でサービスを利用できなくなった場合は、Web画面の遷移やログイン処理から原因を調べ、1週間以内を目安に修正版をリリースしています。
セキュリティを確認する AIによる調査に加え、自分でも脆弱性がないかを確認しています。実際に見つかった1件の脆弱性を修正しました。
利用状況を技術判断に反映する Google AnalyticsでOS・プラットフォーム別の利用状況を確認しています。iOS 18の利用者が多いため、SwiftUIのWebViewへの移行を見送り、WKWebViewを継続して使っています。Android版の今後の開発・運用方針もデータを踏まえて検討しています。OS更新への対応も自ら調査し、技術顧問兼PMに方針を説明・相談しながら進めています。
