roana0229

あなたを気にしている企業

3年後の目標や野望


継続的にスピード感を思って、チームでプロダクト改善ができる仕組みを作る

事業領域によって、求められるプロダクトの裏側は違ってくる。 そう行った環境の中で、ただプロダクトをユーザーに届けるだけではなく、 能動的な改善が行えるように、ユーザーの行動ログなどの改善に必要な情報も考慮したプロダクト開発を、チームで行えるようにしたい。 また、もしアプリのナレッジが少ない環境でも、目的を実現するための最適な方法を模索・提案しながら、運用を見越した開発のリードをできるようになりたい。

年収評価シート

2022年/2年以上

(現職)マルチデバイスの動画・電子書籍アプリ開発

# 概要 (興味を持っていただき詳細は面談の中で話せればと思い、読み取りやすいように箇条書きで記載しています。) - 仕様を固めることを含め、新規開発開発〜現在(記載時点で3年目)運用保守のAndroid/iOS開発チームリード - 主にはiOSアプリ側の開発をしています。 - マルチデバイスのため、他デバイスとの開発連携 - ユーザ行動分析・データ設計 - PM・デザイナー・マーケターとの連携 # チーム規模 - エンジニア: 6~8人 - アプリ専任PM: 2人 - アプリ専任デザイナー: 2人 - その他デバイスでも同じような構成、デバイス間の情報連携は開発リード+デザイナー+PMが関わるため、20~30人規模 - これに加えて他事業部の人との連携もある # 利用技術 - アプリ開発: KMP + Swift + Kotlin - CI//CD: GitHub Actions + Bitrise - 分析: BigQuery # やってきたこと ## ■新規開発アプリ設計 - VIPERアーキテクチャを採用 - かなりの画面数があったため、開発初期段階で新規画面作成のSoruceryテンプレートを作成 - ViewはHostingViewControllerを利用してSwiftUIで開発 - 開発初期の頃はまだフルSwiftUIで作るには経験・世の中の知見が足りず、プロジェクトを成功させるために、フルSwiftUIは見送り - OS間で共通のビジネスロジックはKMPで開発 - KMPでUseCaseを作成し、iOSからはCombineで利用できるようにrickclephas/KMP-NativeCoroutinesrickclephas/KMP-NativeCoroutinesを利用 - Swift Concurrencyの導入 - 初期はCombineが主流だっため、ベースはCombineになっている - 機能として分離しやすかった動画のダウンロード機能でConcurrencyを導入、その後、新規画面開発で積極的に利用 - 最重要な動画プレイヤーを中心にユニットテストを導入 ## ■行動分析のためのデータ設計・保守 - Web含め、マルチデバイス対応なサービスのため、横断して分析しやすいような情報設計 - 基本はGA4公式の推奨イベントを利用 - 分析情報設計しつつ、実際にBigQueryでクエリを書いています。 - 何かの施策案が出るときに数値を元にしていないことも多く、優先度を裏付ける補足情報としても利用しています。 - 分析情報の期待値を満たしているか検証するために自動でUI操作しログをチェック - iOSだけでなく、Android/iOS両方で利用できるようにするために、Maestroを採用 ## ■チームメンバーの生産性維持・向上 - チームの意識合わせ - 関係者が多く、一次情報が自分含めリーダーへ共有される組織体制のため、その中から必要な情報をメンバーへ共有 - 施策単位でメンバーへリードを移譲することで、メンバーの成長含め、自分がボトルネックにならないように権限移譲 - レビューの属人化傾向にあったため、PR内容を共有+同期的に集まってレビューする取り組み実施 - 自動化 - Four Keysを元に生産性を測るための情報を付与 - QAやリリースに必要なビルド、リリースノートを作成 # 課題に感じている/いたこと - 自分が抜けてもチームが回るようにするためのチーム育成 - できる限り権限移譲しているが、自チームだけでなく他事業部まで関わるため、関係する事柄が多い

2020年/2年以内

(現職)iOSオンラインサロン・ライブ配信アプリ開発

# 概要 - 2年ほどアップデートされていなかったReactNativeプロジェクトの運用判断 - 運用継続のためのSwift移行、新規機能開発 - ライブ配信アプリの運用保守 # 利用技術 - アプリ開発: Swift + React Native - CI//CD: Bitrise - 分析: BigQuery # やってきたこと ## オンラインサロンアプリのReactNative -> Swift移行 - Appleからのリジェクトにより開発が止まっていたReact Nativeプロジェクトを運用再開 - ビジネス的にモバイルアプリが必要と判断されていて、どのように運用するかを検討 - ReactNativeができるエンジニアの採用が難しく、今後の運用を考えるとSwiftへ移行するのが良いと判断 - Swift移行の計画立て - フルリプレイスは長期間要するため、部分的な移行を計画を立て、エンジニア以外にも共有し、採用 - 部分的な移行のためReactNative自体のバージョンも最新に追従 ## ライブアプリの運用保守 - ライブ配信が安定していない状況だったため、どのような問題が起こっているかの状況把握 - 今までは問題が起こったベースでAWS MediaLiveに出力されていた動画データをみて調査していた - アプリ内でネットワークや送信された動画情報がどうなっていたか分からない状況だったため、まずはアプリで起こっていることを把握できるようにデータの送信し、そのデータをLookerで可視化 - 結果として、単純なネットワーク問題、特定の動作による不具合などが事実ベースで判断できるような状態を実現 - CI/CDが準備されておらず、手動での運用だったため、最低限の自動化 # 課題に感じている/いたこと - Swift移行するにあたって、QAやテストを行い品質の維持をする必要があるが、テストはなくQA項目も明確にはなかったため作成したが、それを実施すること自体に時間もかかってしまっている

2014年/2年以上

(個人開発)コミックマーケットなどイベント用のマップアプリ「コミマップ」の開発・運用

# 概要 - 2014年頃から現在(2024年)も個人で運用しているアプリ [iOS](https://apps.apple.com/jp/app/%E3%82%B3%E3%83%9F%E3%83%9E%E3%83%83%E3%83%97/id775148131) / [Android](https://play.google.com/store/apps/details?id=com.app.cmap) - 自分が参加するイベントで使いやすいアプリがなく、紙を利用している人も多かったため、自分で開発 - 機能が小さいプロダクトで、ユーザが一定数いるからこそ1つのプロダクトに対して、色々な方向性で技術を試すことができている - ストアのレビューも基本的には各イベント前にすべて対応し、フィードバックの声を聞きつつアプリを維持していける程度に取り入れ、各ストアで高い評価を維持 - 実際に利用していた方がtogetterまとめを作られてくださっていました。今はUIも多少変わっていますがアプリ自体の雰囲気も伝わると思います。 https://togetter.com/li/1255852 # 利用技術 - Objective-C, Java -> ReactNative (with ExpoKit) -> KMP + Compose Multiplatform - Google Apps Script # やってきたこと ## クライアントアプリの変遷 - 個人で管理していくため、アプリのコンセプトである「自分の行きたいスペースをマップ上で把握できる」ために必要な機能を最低限実装した状態でリリース - リリース初期は後述するデータ管理を仕組み化せず、まず需要を確認するためかなり愚直に作成しました。 - そこから大きく機能を変えることなく、現在も細かな改善を継続しています。 - 社会人になってから継続してメンテナンスをしてくには収益化する必要があると考え、フリーミアム形式での課金を導入 - 同じくメンテナンスを継続するために、当時クロスプラットフォームとして有力なReactNativeへ移行、このタイミングで初めてTypeScriptを本格的に触りました。 - 他にもOTAなどの機能が魅力だったため、ReactNativeを採用しました。 - 仕事で主に使っていた技術はSwift/Kotlinであったこと、当時のReacNativeの進化スピードも早く変更量が多かったこともあり、キャッチアップが難しくなってしまっていたため、2023年末に普段から扱っている技術に近いKMP + Compose Multiplatform へフルリプレイス ## クライアントアプリで利用するデータ管理・生成 - アプリとして主な機能は、入力した識別子を元に会場マップ上の座標を特定する機能であり、画像生成と座標情報を一括管理するために、GoogleSpreadSheetsを利用 - Swiftで画像生成+座標json生成するスクリプトを作っていて、アプリにはそれらのデータを埋め込み、ネットワークなしでの利用を可能にしています。(コミックマーケットの会場ではネットワーク回線が遅いことが多いため) - 他に必要な情報はFirebase RemoteConfigで管理をしています。

2018年/2年以内

(1社目)iOSアルバイト求人アプリ新規開発・運用

# 概要 - 既存でWebで提供しているサービスのiOSアプリを作るため、ワイヤーフレームを作成するタイミングからプロジェクトに参加 # チーム規模 - エンジニア2人 - デザイナー1人 - ディレクター1人 # 利用技術 - Swift # やってきたこと ## チームでの動き方に関して - 基本的にはWebの体験をベースにしつつ、整理してアプリに適したUIにし、ワイヤーフレームが完成したところで、デザインと並行して開発 - ワイヤーフレーム完成前はアプリの技術的なベースのところを詰めていました。 - ネイティブアプリは会社としてノウハウが少なく、デザイナーもiOSアプリは初だったため、HIGの共有や実際にどういう風にレイアウトを組むのかイメージを掴んでもらうための勉強会などを行い、アプリの特徴を掴めるように進行 - 開発中は「仕様を叶えることが難しいと思ったときの代替案」や「デザイナーが提案するデザインの叶えたいことをそのまま叶えられるか、本質を変えないまま工数を減らして作れる方法があるか」などを意識して進行 - 開発が進みアプリの主軸ができてきたところで、エンジニア以外も実機で触れる環境を作り、フィードバックを出しやすいようにしていました。 - 最終的に、初期リリースとしては十二分と思える状態で予定通りのリリース - 初期リリース後は、社内の分析基盤を利用してKPIをウォッチできるようにRedashのダッシュボードを作ったり、施策を詰めるためのSQLを使った数値分析を行いながら、施策の要件を詰めていくタイミングから参加 - GitHub Projectsでのタスク管理を管理しつつ、GitHub Releasesにリリースログを残し、開発以外の人も管理コストを減らす+エンジニアも開発以外の管理に時間をかからないようにして、エンジニア1人での週1リリースサイクルを回していた ## 開発に関して - 前提として、APIやデザインも並行して進んでいき、両OSを見越した開発をしておく必要があり、以前に既存プロダクトの改善を回していた際に、差分が大きくなりがちでレビューコストが高くなっていたため、同じ問題を抱えないようにするため以下を意識し設計 - アプリの設計はMVVM + Clean Architecture構成 - View <-> ViewModel間はRxSwiftを使ったデータバインディング(Androidは公式で機構が用意されているため) - APIにはSwagger(現在はopenapi-generator)を利用し、yamlからAPIクライアントを自動生成(Androidでも同じ定義から生成できるようにするため) - 2ステップ以上離れた画面では、EventBusをラップして利用し、乱用されないために記述できる箇所を制限した仕組みにして画面間同期 - ViewModelのテストを書くことで画面の正しい状態を保持 - これによって、APIやデザインを順次適応していく際の差分がハッキリと別れ、低いレビューコストで進めていくことができました。 - 他にも、社内での配布やリリースサイクルを自動化するためにFastlaneを整備し、人力運用コストを下げる - 弊社のネイティブアプリでは初のCI導入で、CIに関しての細かい内容は[こちらのブログ](https://made.livesense.co.jp/entry/2019/05/31/070000)に記述しています。

2016年/2年以内

(1社目)Android転職アプリ改善開発・運用、設計リプレース

# 概要 - 新卒で入った際に初めて参加したプロジェクト # チーム規模 - エンジニア4人(うち、未経験2人) - ディレクター1人 - デザイナー1人 # 利用技術 - Android (Java) # やってきたこと ## チームでの動き方に関して - 施策のベースはディレクターが考え、それに対してチーム全員で意見を出し合いながらブラッシュアップしていく形で進行 - 施策の要件がある程度固まったら、ミニマムで動くものを作って共有したり、デザインも並行で進む中でこちらから少ない工数で開発できるデザイン案を提案し、イメージのすり合わせこまめにを行う ## 開発に関して - 大学時代からAndroid/iOSの開発を行っていたため、基本的な技術はあり、既存プロジェクトを理解すること、改善することを主としていた - 既存プロジェクトのコードは、現状のプロダクトの開発状況には合っていない設計(MVC)になっていたり、初期の設計意図が伝わらないままコードが積み重なっている状況 - 複雑に複数の機能が依存してしまっていたため、品質を保ったまま開発スピードを維持していくことが難しい状態になっており、設計リプレイスをする方針で進行しました。 - アプリの行動フェーズをいくつかに分割すると、「求人を探す」「応募する」「応募後のやり取りをする」フェーズに別けられ、今後改善を回す中で効果やスピードを求めるであろう「応募する」フェーズの設計をリプレースすることに決め、改善後の設計を考えメンバーからフィードバックを受けた上でリプレースを進行 - 既存コードはModel層を担うクラスがDBモデル以外には明確に別れておらず、Viewから直接DBの変更や非同期通信処理を呼び出したコールバック処理たちが無造作に行われていました。 - 各層の役割を意識する、ユーザのアクションから行われる処理の流れを追いやすくするため、改善後はMVP+Clean Architecture構成で、DataBindingと非同期通信にはRxJavaを採用しました。(このときはまだAndroid公式がDataBindingをサポートしていませんでした。) - 当時RxJavaは非同期通信で利用されていたAsyncTaskの置き換えポジションとして使われていた印象が大きかったのですが、個人的には処理フローを宣言した上でそのフローに沿ってデータが流れる事自体に大きな恩恵があると思い採用をしました。 - リプレイスのための技術導入にあたって学習コストが必要になるが、リプレースの基準となるPRをメンバー全員がレビューし、認識をすり合わせた上で各メンバーもリプレース開発を進行 - 最終的には全体の設計を改善しつつ、施策も止めずに開発を進めました。 - また、Rails製のAPIもチームでメンテナンスしていて、必要に応じて機能の追加や修正をする程度の開発を行っていた。

マネージメント能力

自身以外アプリ開発が初めてのエンジニア・デザイナー・ディレクターで構成されたモバイルアプリ開発チーム
- デザイナーはアプリに適したUIやユーザの行動設計などの、iOSアプリに関するナレッジを貯め、新規開発からグロースまで行えるようにする - エンジニアは1人でもアプリを作れるよう育成する
# 時期 2018〜2020年頃 # 前提 - 自分含めた4人の少数チーム - 自分以外がiOSアプリの開発が初めて # 内容 まずは少人数のチームなので、進捗・タスク管理にかかる手間を軽くするため、GitHub Projectsを利用しました。当時はまだ機能が少なかったツールですが、開発に近い場所で管理できるように、チームへ運用方法の共有をし、エンジニア以外のタスクも管理する形で進めました。 iOSが初めてのエンジニアは、GUIでのレイアウト設計に時間がかかってしまうことが多いため、そこを重点的に教えつつ、アプリの設計MVVM(RxSwift) + Clean Architectureをコードベースで教えました。また、その学習フェーズに合わせたタスクを振るようにしていました。 iOSが初めてのデザイナーは、Apple Human Interface Guidelinesの内容やワイヤーフレームからデザインに落とし込む際に、どういうコンポーネントが標準であるのか、カスタムする際どの程度であれば作りやすいのかなどを共有しながら、デザインを詰めていきました。 また、施策に対してどういう風に実現すれば、より工数を低くしながら目的を達成できるのかなど、ディレクターとも連携し、アプリの全体像を作っていきました。

マルチデバイス(Android/iOS/AndroidTV/FireTV/Web/ゲーム)対応のモバイルアプリチーム
# 初期リリースまで - マルチデバイスを考慮して要件整理し、作るものを明確にする - 要件から仕様を明確にし、各デバイスで意図しない機能の差分がないようにする - タスク管理・運用を行い、進捗を管理できるようにする - モバイルアプリの設計・ベースの開発を行い、チームで並列して開発をできるようにする # 初期リリース後の運用フェーズ - 初期リリース時点で後に回した機能の追加要否の整理をする - 追加開発に必要なタスクの整理をする - 不具合や問い合わせの対応をし、アプリを改善する - 安定したリリースサイクルを回せる状態にする # グロースフェーズ - データ分析・設計する - 施策の優先度を適切に把握し、開発チームメンバーが進行しやすいようにする - 他デバイスとも連携した施策内容を検討する
# 時期 2022年〜現在 # 前提 - 既存アプリの動画プレイヤーアプリのフルリプレイスも兼ねた、新規アプリとしての開発 - 既に稼働していたチームへのリーダーポジションでの参加(開発自体は1,2ヶ月ほど既に進んでいた) - 参加当時、リリース目標だけ決まっていて、内容は殆ど固まっていない状態 - クライアント・バックエンド含め、殆どが新規開発 - iOSアプリ開発メンバーだけで7人前後、他の各デバイスチームも少なくて4人前後のチーム規模 # 内容 既に稼働していたチームへの参加だったため、元々リーダーポジションとして動いていた方とまずは現状の状態の認識や、チームメンバーの個性・働き方など、チームへ馴染むことを意識しました。 他チームとのやりとりに関しては、モバイルアプリチームのリードとして、現状のリリース目標を基準とした仕様調整をして行きました。 タスク管理に関しては、擬似スクラムな状態で進んでいて、形自体は大きくは変えず、 チームの1スプリントの生産性の可視化、開発予定タスクの工数可視化を行いました。 具体的には、日々決まっていく内容をタスク化しながら、概算見積もりをリーダーがつけ、それに対して実際にかかった工数を記録し、メンバー個人の生産性が分かるようにしました。 また、長期的に見れば属人化は避けるべきだと思いながらも、リリースまでの時間が短かったため、 大きく区切った機能単位で属人性をあえて持たせるようなタスクの割り振りをして進行して行きました。 これによって進みやすい/にくい機能も見えてくるようになり、それが仕様・技術力など何が問題なのかを整理を行なって行きました。 iOSアプリ開発に関しては、主には技術力的に足りていないチームだったため、既に少し開発が進んでいた基盤部分の改善から進めました。 - CI/CD環境の構築 - 新規画面を作るためのテンプレート準備 - 開発メンバーによってブレない設計 - 速度を求めるため、ある程度属人化した状態での機能開発の進行整理 - KMPをiOSで利用しやすくするための開発(当時はKMPオブジェクトがスレッドセーフではありませんでした) - 進みの悪い機能開発のヘルプ - QAチームとの連携 - etc... リリースの終盤では、チーム内外での温度感のズレもありましたが、 メンバーにチーム全体としての具体的な生産性の期待値をベースに認識を合わせ、 愚直ではあるがモチベーションの低下に気をつけながら、無理のない範囲の残業でカバーする形で解決をしました。 最終的には色々な要因により、リリース時期は予定遅れましたが、ファーストリリースとしては耐えられる品質でリリースをできました。 リリース後に関しては、ビジネス的に致命的な不具合が長期間残ることもなく、大小不具合の優先度を決めながら、週一でのリリースを行い、3,4ヶ月ほどでユーザに影響が大きい不具合は解消することができました。

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
あり
Zenn アカウント
未入力です
Speaker Deck アカウント
あり
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
あり

今後、身につけなければいけないと思っている技術は何ですか?

- マルチプラットフォーム系の技術(React Native, KMP, Compose Multiplatformを経験してはいるが、会社規模のアプリで長期間のプロダクト導入はできていないため)

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

- ディレクターやデザイナーなど、エンジニア以外も同じチームで動き、その中で意思決定ができる環境 - エンジニアも分析を積極的に行い、プロダクト改善が行える環境 - エンジニアからもプロジェクトの進行や施策に関して話し合うことのできる環境

キャラクター

直近で一番やりたいこと
サービスを作りたい
好きなスタイル
好きな規模
水とプログラミングどっちが大事?
自信を持って人より秀でていると言える点
分析力 / 調整力 / 問題解決力
スキルのタイプ
得意なフェーズ
会社を選ぶ一番の基準
プライベートとの両立
やりたくない分野
SI / ゲーム
その他の特徴
使用言語にはこだわらない / レガシーな環境を改善できる
その他のやりたいこと・やりたくないこと

会社の規模は問わないが、必要な権限がチームにあり、状況に応じて柔軟に動ける環境で働きたい

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で30代前半
好きな Text Editor
Xcode, Android Studio, Visual Studio Code
希望勤務地
東京都 / リモート勤務
集まる必要性がない場合は基本リモートが許可される環境が必要
希望年収
960万円
転職ドラフトに参加して
企業から指名を受け取ろう!
会員登録をして転職ドラフトに参加すると、参加企業から年収付きの指名を受け取ることができるようになります。
会員登録する
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
SIGN UPSIGN IN


転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?