roana0229

3年後の目標や野望


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

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

年収評価シート

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

2014年/2年以上

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

2014年頃から現在(2024年)も個人で運用しているアプリです。Android/iOSともにリリースしています。 https://apps.apple.com/jp/app/%E3%82%B3%E3%83%9F%E3%83%9E%E3%83%83%E3%83%97/id775148131 https://play.google.com/store/apps/details?id=com.app.cmap ## クライアントアプリの変遷 自分が参加するイベントで使いやすいアプリがなく、紙を利用している人も多かったため、自分で開発しました。コミックマーケットだけでなく、会場の中で複数の参加グループがあるイベントなど同じ形式のイベントでも対応できるようなものです。 個人で管理していくため、アプリのコンセプトである「自分の行きたいスペースをマップ上で把握できる」ために必要な機能を最低限実装した状態でリリースを行い、そこから大きく機能を変えることなく、現在も細かな改善を続けています。 初期は、Objective-C(Swiftが出てきて移行),Javaと両OSネイティブ開発で開発していました。この時にSwiftのバージョンアップ移行なども対応していました。 運用していく中で、両OSネイティブで開発をしていくのが厳しくなり、ReactNative(ExpoKit)にリプレースしました。 両OSでViewは少し違うも同じ機能を持たせていたため、機能的には大きく変えず、今後継続的に課金で収益を建てられるように仕様を整え、運用しています。 ReactNativeを選択したのは、純粋にクロスプラットフォームに興味があり、OTA配信での臨機応変な対応がしやすいからでしたが 実際には導入してみると、ReactNativeにはOS間での動作が違う難しさ、OTA配信は決してリリースが簡易になるわけではないということを実感しました。それでも、今まで触ったことのなかったTypeScriptの知識を付けつつ、イベント日に合わせた修正も各ストアに依存しにくくOTA配信により対応しやすくなり、良い状態になりました。 そこから2年ほどReactNativeで運用していると、普段触らない技術のキャッチアップやReactNative自体のアップデートについていくことが難しくなり、2023年末に普段から扱っている技術に近いKMP + Compose Multiplatform へフルリプレイスしました。 機能が小さいプロダクトで、ユーザが一定数いるからこそ1つのプロダクトに対して、色々な方向性で技術を試すことができています。 ## クライアントアプリで利用するデータ アプリ内でマップを提供する際に、GoogleSpreadSheetsを元データにしていて、APIとしてその情報が利用しやすいため、バックエンドはGoogleAppsScriptを利用してAPIを提供しています。 GoogleSpreadSheetsを使っている用途としては、アプリ内で利用する画像がエクセルのような格子状になっている座標情報が必要で、GoogleSpreadSheetsを元にJSONデータを生成しています。 そのJSONを元にクライアントアプリとは別でSwiftを使い画像を生成しています。 必要なデータは RemoteConfig + GoogleAppsScript をサーバとして、クライアントで情報を利用できるようにしています。 ## 備考 またストアのレビューも基本的には各イベント前にすべて対応し、フィードバックの声を聞きつつアプリを維持していける程度に取り入れ、各ストアで高い評価を維持し続けています。 実際に利用していた方がtogetterまとめを作られていたりしました。今はUIも変わっていますがアプリ自体の雰囲気も伝わるかと思います。 https://togetter.com/li/1255852

2018年/2年以内

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

## チームでの動き方に関して 既存でWebで提供しているサービスのiOSアプリを作るため、ワイヤーフレームを作成するタイミングからプロジェクトに参加しました。 関わる領域はプロダクトのフェーズによって変えていて、新規開発だったため「どういうアプリにするか」を決めるところから参加しています。エンジニア・デザイナー・ディレクター含め4人ほど。 基本的にはWebの体験をベースにしつつ、整理してアプリに適したUIにし、ワイヤーフレームが完成したところで、デザインと並行して開発を進めました。 ネイティブアプリは会社としてノウハウが少なく、デザイナーもiOSアプリは初だったため、HIGの共有や実際にどういう風にレイアウトを組むのかイメージを掴んでもらうための勉強会などを行い、アプリの特徴を掴めるように進めました。 この間にアプリの設計の大枠を練り、必ず作るであろう画面をサンプルとして作り、社内の他のアプリエンジニアのレビューを経て、設計を固めました。 開発中は「仕様を叶えることが難しいと思ったときの代替案」や「デザイナーが提案するデザインの叶えたいことをそのまま叶えられるか、本質を変えないまま工数を減らして作れる方法があるか」などを意識していました。 開発が進みアプリの主軸ができてきたところで、エンジニア以外も実機で触れる環境を作り、フィードバックをできるようにしました。 最終的に、初期リリースとしては十二分と思える状態で予定通りのリリースをし、引き続き開発を行っています。 このフェーズになると開発を重視しながら、施策は要件を詰めるタイミングから参加するようにしています。 また改善していくために、社内の分析基盤を利用してKPIをウォッチできるようにRedashのダッシュボードを作ったり、施策を詰めるためのSQLを使った数値分析を行っています。 ## 開発に関して 前提として、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 GitHub Projectsでのタスク管理を管理しつつ、GitHub Releasesにリリースログを残し、開発以外のことに時間をかからないようにして、エンジニア1人での週1リリースサイクルを回していました。

2016年/2年以内

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

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

アピール項目


アウトプット

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

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

- Compose Multiplatform for iOS(現状α版の状態から積極的に利用していきたい)

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

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

キャラクター

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

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

やりたい事

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

基本プロフィール

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

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

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

  • {{error}}
SIGN UPSIGN IN


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