Skip to content

This is template of curriculum vitae. Please use this template when need your curriculum vitae.

License

Notifications You must be signed in to change notification settings

tamappe/Curriculum-Vitae-template

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 

Repository files navigation

職務経歴書

基本情報

key value
Name Yosuke Tamaoki
Twitter @tamapppe
Qiita tamappe
Blog Tamappe Life Log

言語

  • プログラミング言語

    • Objective-C(2013年〜)
    • Swift(2015年〜)
    • Dart/Flutter(2020年〜)
    • Java(2017年〜)
    • Kotlin(2018年〜)
  • 日本語

    • ネイティブ
  • 英語

    • Reading: ビジネス英語/技術英語が読める
    • Writing: ビジネス英語/技術英語が書ける
    • Listening: ディスカッション以外の1on1の英会話ならできる
    • Speaking: かんたんな日常会話ができる

過去の登壇資料

iOSDC 2021

async/awaitの性能をDartとSwiftとの比較で読み解く

iOSDC 2020

SwiftUIとFlutterを比較する

執筆歴

職務経歴

目次

番号 プロジェクト名 期間
No. 8 モバイルSDKの保守運用 2022/4 - 現在
No. 7 オンライン英会話系アプリの開発 / AI活用のスピーキング測定アプリの開発 (レアジョブ) 2019/4 - 2022/3
No. 6 大手医療系メディアのアプリ開発 2018/5 - 2019/3
No. 5 動画配信系アプリの開発 2017/10 - 2018/4
No. 4 マッチング系アプリ開発 2018/1 - 2018/10
No. 3 IoT系iPadアプリの保守と運用開発 2017/4 - 2017/12
No. 2 コンシューマー向け電子書籍のマンガアプリ開発 2016/5 - 2017/1
No. 1 新規事業向け新規アプリ開発 2015/5 - 2016/3

職務経歴書 (No. 8)

期間

2022/4 - 現在(2024/12)

プロジェクト名

モバイルSDKの開発プロジェクト (LINEヤフー)

契約形態

正社員

職務

モバイルアプリケーションエンジニア

使用言語

Swift (iOS)
Kotlin (Android)

  • 常に両方

チーム規模

アサイン当初

全体のチーム: 10名規模

SDKチーム
アプリエンジニア 3名(iOS 1.5名, Android 1.5名)
BEチーム
データエンジニア 6名以上

2024/12

全体のチーム: 15名規模

SDKチーム
アプリエンジニア 5名(iOS 2.5名, Android 2.5名)
BEチーム
データエンジニア 9名以上

開発環境周り

Xcode, Android Studio, Github Enterprise, Slack, fastlane, Screwdriver.cd

チケット管理

Jira

主な業務内容

メインタスクは社内モバイルSDKの保守・運用であり、以下のカテゴリに分類されます。

  1. 通年の業務
  2. 2022年 Android SDK の開発・運用
  3. 2023年 iOS SDK の開発・運用サポート
  4. 2024年 チームビルディングと改善
  5. 通年のOSやライブラリのアップデート作業
1. 通年の業務
  • CI/CDの整備: Snykの見直しを実施し、依存ライブラリのライセンスを全てチェックすることで、配布SDKの品質を保証。SnykをCI/CDに統合することで、不具合やセキュリティ問題がないことを自動チェック可能に。
  • SDK不具合対応: 問い合わせに迅速対応し、意図しない挙動を修正。
  • コードレビュー: チームメンバーが作成したコードの品質を保証し、開発効率を向上。
  • SDKリリース前の検証: 綿密なテストプロセスを確立し、品質リスクを削減。
  • 開発フロー改善: 効率的な開発プロセスを継続的に見直し。
  • コミュニケーション: SDK導入サービスの開発者や共同開発チームと緊密に連携。
2. 2022年 Android SDK の開発・運用
  • 不具合対応: Android SDKにおける想定外の挙動を迅速に修正。
  • コードレビュー: 業務委託メンバーの作業も含めたレビューを通じて品質を向上。
  • 技術サポート: 業務委託メンバーに対して、SwiftからObjective-Cを呼び出す技術的サポートを提供。
3. 2023年 iOS SDK の開発・運用サポート
  • Swift Package Manager導入: CocoapodsやCarthageから移行し、開発環境準備を簡略化。依存関係管理の効率が向上。
  • Deprecated APIの改修: 最新iOS仕様への適応を実現。
  • Objective-Cコードの削除: モダンなコードベースに移行し保守性を改善。
  • Async/Awaitの導入: 非同期処理を効率化。
  • PoC的開発: SDKのデータ取得量を10%増加させ、プロトタイプでの仕様検証を可能に。エンジニアや専属POでないメンバーでもスムーズに仕様策定が可能となり、最適な仕様でのリリースを実現。
4. 2024年 チームビルディングと改善
  • スキル向上支援: 開発メンバーの成長を促進。
  • アジャイル開発導入: ウォーターフォール型からスプリント形式へ移行し、開発中の不具合や想定外の問題を改修してからリリースできる体制を構築。不具合件数を大幅に削減。
  • ドキュメント整備: リリース作業や継続的開発を支える文書を整備。
5. 通年のOSやライブラリのアップデート作業
  • OSアップデート対応: 毎年のiOSおよびAndroidのOSバージョンアップに対応。

  • iOS 18とAndroid 15への対応:

    • iOSではSwift Package Managerの下限OSサポートの調整を実施。
    • AndroidではtargetSDKVersionやCompileSDKVersionの更新を行い、対応範囲を最新化。
    • 工夫: 他の社内ライブラリとの依存関係で発生する可能性のある問題を事前調査。アプリ内DBのアップデート時クラッシュ防止、ライブラリの難読化対応も考慮。
  • Android SDKのKTSサポート: GroovyだけでなくKTSも対応するよう導入手順書を更新。エンジニアからのフィードバックを基に、より柔軟なSDK導入が可能に。


職務経歴書 (No. 7)

期間

2019/4 - 2022/3

プロジェクト名

オンライン英会話系アプリの開発 / AI活用のスピーキング測定アプリの開発 (レアジョブ)

契約形態

正社員

職務

モバイルアプリケーションエンジニア

使用言語

Swift(iOS + UIKit)
Kotlin(Android)
Dart(Flutter).

チーム規模

全体のチーム: 30名規模

アプリチーム
アプリエンジニア 2名
サーバーサイドエンジニア 10名以上

開発環境周り

Xcode12.3, Android Studio, Github, Redmine, Slack + チャットワーク

チケット管理

Redmine, Jira

主な業務内容

メインタスクはレアジョブアプリの保守・運用になります。
タスクの内容をカテゴリー分けすると次のようになります。

  1. iOSアプリのメンテナンス
  2. 新規機能開発
  3. 技術的負債の返済
  4. OSやライブラリのアップデート作業
  5. Flutterでのスピーキング測定アプリのフルスクラッチ開発

順を追って説明します。

1. iOSアプリのメンテナンス

それぞれ会社の会社のテックブログに投稿しています。 結果的には Swift 3.2 から Swift 5.3まで担当しました。

2. 新規機能開発

保守・運用をしながら同時に新規機能を開発していきました。
SkyWayを使ったリアルタイムなオンライン英会話サービスを提供していますので、SkyWayの仕様を把握しながら機能を開発して行く必要があります。

3. 技術的負債の返済

レアジョブアプリは外部ライブラリを多数利用しています。 また、年々iOSがメジャーアップデートしていきますので開発中のコンポーネントのAPIが古くなっていきます。 そのため、こういった古くなったAPIをアップデートするかなければ別のものにリプレイスする必要がありました。 そういった経験を記事にまとめています。

5. Flutterでのスピーキング測定アプリのフルスクラッチ開発

新規事業のスピーキング測定用のアプリをゼロからフルスクラッチで開発しました。
使用した技術は Flutter + MVVM (Riverpod) でのクロスプラットフォームです。
リード兼、メインエンジニアとして開発、リリースしました。
ゼロからリリースまで3ヶ月、そこから6ヶ月間メンテナンス。

このアプリにおける技術選定の話は会社のテックブログでまとめています。

開発で苦労した点.

  1. 最初はプロトタイプ的に開発し、正式のデザインのない状態での開発スタートで進めましたが途中からデザインが入りました。iOSスマホ用/iOSタブレット用/Androidスマホ用のフォントの調整でだいぶ苦労しました。大きなフォントサイズで当てはめるとスマホでレイアウトが収まらず、小さなフォントサイズで当てはめるとタブレットで小さく表示されてしまうなどしてデザイナーの要求通りのUIの実現が大変でした。
  2. メインコンテンツに関係する機能が、音声の「再生」「録音」部分でこの部分がライブラリ依存になるためライブラリ側でクラッシュする問題が発生するなどが起きてしまいました。
  3. 画面遷移がとても厳しく、端末がバッググラウンド復帰した時にトップ画面に戻る遷移を調整したりすることがあるのですが、その戻す遷移が思った通りに実現できないなどの問題がありました。

職務経歴書 (No. 6)

期間

2018/5 - 2019/3

プロジェクト名

大手医療メディアのアプリ開発

契約形態

業務委託

担当

iOS / Android

使用言語

OS 言語
iOS Swift, Objective-C
Android Java8, Kotlin
サーバーサイド Seasar2によるJava8

チーム規模

全体のチーム: 20名規模

アプリチーム
アプリエンジニア 5名
サーバーサイドエンジニア 5名

開発環境周り

Xcode10.1, Android Studio, GitLabCI, Slack + チャットワーク

チケット管理

Confluence, Jira, GitLab

主な業務内容

メインタスクはアプリの保守・運用でした。
タスクの内容をカテゴリー分けすると次のようになります。  

  1. Objective-CのSwift化
  2. Androidアプリの新規機能開発
  3. iOSアプリの新規機能開発
  4. モデルクラスのユニットテストの導入
  5. 技術的負債の解消
1. Objective-CのSwift化

一部、アサイン当時一部にObjective-Cコードが残っていました。Swift: Objective-C = 80: 20。
残っていたObjective-CのクラスをすべてSwift化対応する業務を行いました。 当時一番難しい移行作業だったことが、ビットフラグの対応でした。

4. モデルクラスのユニットテストの導入

Alamofireで通信を行われていました。また、JSONのパースをSwiftyJSONで対応されていました。
このモデルクラスにCodableへ書き換えるためにデグレが発生してはいけないので、モデルクラスにユニットテストを導入してリプレイス前後でテストが成功することでデグレが起きることなくCodableへの書き換え作業を完了させました。
実際のコードのサンプル例はQiitaに記事として残しています。

SwiftのAlamofire+CodableでAPIクライアントの作成からUnitTestまでを実装する

本当はモック化させるところまで行えばベストですが、リソースが足りませんでしたので最小限の対応に留めました。 また、一部のクラスでAPI通信にAFNetworkingで行っているところがありましたので、Alamofireに置き換える作業も行いました。

5. 技術的負債の解消

一部にUIWebViewのUIKitコンポーネントが残っていましたので、WKWebViewへのリプレイス作業をしました。 この頃はStoryboardからWKWebViewが使えない頃でしたので、コードでWKWebViewを生成して表示させるといった工夫をしていました。 またアプリ側でJavaScriptを実行したり、ユーザーエージェントを取得する必要があるなど、同期処理から非同期処理に書き換えるといった工夫をしなければなりませんでした。


職務経歴書 (No. 5)

期間

2017/10 - 2018/4

プロジェクト名

動画配信アプリの開発

契約形態

業務委託

担当

iOS

使用言語

OS 言語
iOS Objective-C
Android Java
サーバーサイド Ruby

チーム規模

全体のチーム: 6名規模

アプリチーム
アプリエンジニア 4名 (iOS 2名, Android 2名)
サーバーサイドエンジニア 関連会社が担当

主な業務内容

動画配信アプリの設計から開発を担当致しました。決められた仕様に従ってリリースまで担当します。 開発はiOSについてはObjective-C、AndroidはJavaでの開発でした。 できる限り既存の機能が変わらないようにコンバートするため、テストを行ってバグが起きないように努力しました。


職務経歴書 (No. 4)

期間

2018/1 - 2018/10

プロジェクト名

マッチング系アプリ開発

契約形態

業務委託

担当

iOS

使用言語

OS 言語
iOS Objective-C, Swift 3.2

チーム規模

全体のチーム: 30名規模

アプリチーム
アプリエンジニア 10名 (iOS 4名, Android 3名)
サーバーサイドエンジニア 10名ほど

開発環境周り

Xcode 9, Github Enterprise

主な業務内容

iOSの追加機能開発とSwift化をメインに担当しました。 既存のソースコードの80%がObjective-Cでチーム全体の合意でSwift化を進めたいという希望でしたのでひたすらSwiftへの書き換え作業を行いました。 特に難しいと感じた部分がUtil系のクラスのSwift化でした。 Util系のクラスは色々なクラスから呼び出しがされている傾向が高いためここのSwift化が失敗すると色々な箇所でデグレが発生してしまいます。 こちらのソースコードはまだUITestを導入していなかったフェーズのため手作業でUIのテストをする必要があり多大な時間を費やしました。 この経験からUITestとUnitTestの重要性を感じ始めてテストに関するノウハウを自主的に調べる習慣を身に着けるようになりました。

タスクの内容をカテゴリー分けすると次のようになります。  

  1. Objective-CのSwift化
  2. iOSアプリの新規機能開発
1. Objective-CのSwift化

当時はSwift 3.2の頃でした。比率は Objective-C: Swift = 8: 2。
Objective-Cが残っていると採用面で不利になることが多い理由によりSwift化を推進するプロジェクトを担当することになりました。
当時一番Swift化移行が難航した箇所はビットフラグを使っているクラスでした。
MVCモデルのため、各画面ごとのModel、ViewをSwift化してから、最後にViewControllerのSwift化を行うといった手順を踏みました。

2. iOSアプリの新規機能開発

他のメンバーのリソースが足りない新規機能についても担当しました。
デザイナーからSketchファイルを頂き、その仕様に基づいてデザイナーと連携しながら開発を進めました。


職務経歴書 (No. 3)

期間

2017/4 - 2017/12

プロジェクト名

IoT系iPadアプリの保守と運用開発

契約形態

業務委託

職務

iOSアプリケーションエンジニア

業務内容

業務系iPadアプリの保守と運用開発プロジェクト

プロジェクトの概要

業務内容: 既存のiOSアプリの追加機能の開発

使用言語:

iOSはObjective-C

開発環境周り

Xcode8

チケット管理

github Enterprise, Confluence, JIRA, チャットワーク

主な業務内容

B向けのiPadアプリの追加機能開発のプロジェクトでした。 Bluetoothを使ってプリンターと連携できる機能を搭載しているアプリで私がジョインした時にはプリンタのSDKバージョンが古くなっていたため新バージョンSDKへの書き換え作業を担当しました。 当時はまだObjective-CのコードであったためSwiftとのブリッジが大変手間がかかりました。 このプロジェクトで辛かったことは旧バージョンのSDKの既存クレームでWiFiの接続が悪かったのですが、SDK提供メーカーから新SDKに書き換えたらその性能が上がるという噂がありました。 ですが、実際は期待していたほどの改善が見られませんでした。そこで新SDKへの書き換えからさらにいかにしてWiFi接続不良を改善させるタスクが入ってきたことが非常に大変でした。 大変だったのですが、新SDKのドキュメントを丁寧に確認するとWiFi接続用の新しい関数がこっそり試しにそれを使ってみると仕様をなんとか満たす成果が得られたのでギリギリタスクを完了させることができました。

このプロジェクトを通して得られた知見としてはドキュメントを隅々まで見る習慣をつけることが大切なのだということを体験しました。


職務経歴書 (No. 2)

期間

2016/5 - 2017/1

プロジェクト名

コンシューマー向け電子書籍のマンガアプリ開発

契約形態

業務委託

職務

iOSアプリケーションエンジニア

業務内容

コンシューマー向け電子書籍のマンガアプリの開発プロジェクト

プロジェクトの概要

業務内容: 新規事業のiOSアプリの新規開発

使用言語:

Objective-C

開発環境周り

Xcode

チケット管理

Redmine, Subversion

主な業務内容

電子書籍アプリの設計から開発、結合テストまでを担当致しました。 開発はObjective-Cでゼロから開発しました。 電子書籍のデータはC++で書かれている外部ライブラリを使用するためアプリに組み込みました。

特に難しいと感じた部分はマンガの画像ファイルをC++のライブラリから取得してネイティブ側に反映させるためObjective-CとC++の連携が非常に大変でした。 そのライブラリを利用してバイナリデータとしてダウンロードしたファイルを 画像に変換して画面に表示させました。

また、画像データのダウンロードの時には暗号化されているためそこでセキュリティについて学ぶきっかけになりました。 このアプリではソーシャルログイン機能が必要でしたのでFacebookとTwitterのSDKを利用して ソーシャルログインの機能を実装しました。


職務経歴書 (No. 1)

期間

2015/5 - 2016/3

プロジェクト名

新規事業向け新規アプリ開発

契約形態

正社員

職務

iOSアプリケーションエンジニア

業務内容

iOSアプリ開発 新規事業のiOSアプリ開発

担当業務

 ・企画・デザイン以外の全ての工程を担当  ・一人1アプリで初回リリースまで全て一人で担当

コメント

ディレクターから上がってくるチケットに基づいてアプリを機能を設計・実装しテストまで行っていました。 詳細仕様書を元にデザイナーと連携しながら一つずつ機能を開発します。アジャイル開発で開発 ニュースアプリ、放置系ゲームアプリ、カメラアプリ、メモリの解放アプリなどを制作いたしました。

About

This is template of curriculum vitae. Please use this template when need your curriculum vitae.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published