山本 慎之佑 (Yamamoto Shinnosuke)
2020年11月01日
ソフトウェアエンジニアとして4年ほどの経験があります。
Androidアプリエンジニアとしては、職場にAndroidエンジニアがいない状態からキャリアスタートをし、現在では1プロダクトを専任で要件定義からリリースまでを担当しています。 特異なものでは、Serviceを利用したバックグラウンドでの音楽再生処理、印刷用画像の組版実装、React Nativeでのネイティブブリッジの実装経験があります。 また2019年のDroid Kaigiでは登壇し、Androidアプリエンジニアの文脈でReact Nativeについての発表をしました。
Androidアプリ開発については、社内でも社外でも目に見える成果を出せたので、アプリ開発は一通りできると自信はついてきました。 次の職場では、今までの学んだスキルを向上させつつ、自分の興味があるサービスの開発に関わり、サービスと自身を成長させていきたいと思っています。
期間 | 会社名 |
---|---|
2016年04月 - 2018年04月 | 株式会社オトバンク |
2018年07月 - | 株式会社ノハナ |
期間 | 会社名 |
---|---|
2017年04月 - 2017年12月 | 株式会社コーテッグ |
2018年09月 - 2019年07月 | 株式会社SideWorks |
2019年10月 - | シェアフル株式会社 |
2020年09月 - | 株式会社ventus |
オーディオブックのECサイト「FeBe」の開発・運用に従事した。 学生時代から音声を研究していたこともあり、音声コンテンツに興味があり入社を決めた。 新卒未経験で取り組んだプロジェクトだったため、技術的な難易度は高くなかったが、業務を通じてWeb開発、チーム開発の基礎を習得した。
- Symfony 1.xから2.xへの移行作業
- マーケティングチームの施策案に合わせてトップページや検索結果などのUI改善などを行った。
- ユーザーからの問い合わせがあった際に技術調査や個別対応
- エンジニアブログの更新
使用技術 HTML/CSS、PHP、Symfony2
音源にDRMを入れつつエンコードするバッチサーバの開発・運用に従事した。 開発のほか、社内の制作部署とヒアリング等を行いながら運用方法の策定やドキュメントの作成も行った。
- MQTTを利用した音源エンコードサーバーのリファクタリングや保守
- エンコードする音源を登録する管理画面の実装
- 社内のストレージサーバーのNASへの移行
- LAME MP3 Encoderへのパッチ作成
使用技術 PHP、Silex、LAME MP3 Encoder、SoX
オーディオブックのECサイト「FeBe」で購入した音源を楽しむためのAndroidアプリ「FeBe」の開発・運用に従事した。
社内にアプリエンジニアがいなく、問い合わせが多数来ているという状況だった(自身の入社と入れ替わりで前任者が退職していた)。 アプリ開発は未経験であったが興味があったので、Androidアプリの開発に従事することにした。 手始めに、問い合わせで多く来ていた内容として、「クラッシュが頻発する」「倍速再生時に音飛びが発生する」という内容が多かったため、クラッシュログが取れていなかったのでログ収集サービス導入と音楽再生処理のライブラリのリプレイスを行った。 その後は、得られたクラッシュログから細々としたNPEを潰したり、スリープタイマーの実装を行ったりした。 独学で手探りしつつではあったが、Androidアプリエンジニアとしてひとまず仕事をこなせるようになった。
- Crashlyticsの導入
- スリープタイマーの実装
- CIによるAPKアップロード自動化
- 依存ライブラリ監理をgit modulesでの管理からGladleでの管理に変更
- Build ToolsやSupport Libraryのバージョン更新
- 再生ライブラリをSoundTouch-AndroidからExo Playerへ入れ替え
- NPEでクラッシュしていた箇所の対処
使用技術 Android(Java)、Crashlytics、EventBus、gradle-play-publisher、ExoPlayer、SoundTouch-Android
自社サービス「FeBe」をフルリニューアルがあり、アプリも新装することになった。 社内にいるアプリエンジニアが、Androidエンジニアが2名(自身含む)、iOSエンジニアが1名(Androidと兼任)という状況だったため、画面実装の工数削減を狙い、ReactNativeを採用することになった。 Reactを用いた画面設計とAndroid側へのブリッジ実装を担当した。
使用技術 React Native、TypeScript、Jest、CodePush、Redux、React Navigation、NativeBase、Android(Java)、ExoPlayer、ExoPlayer-MediaSession
フォトブックを販売するサービス「ノハナ」のAndroidアプリ「ノハナ」の開発・運用に従事した。
入社時期にちょうどStoreに上げれるAPKのmin SDK versionが更新されていくようになったタイミングだったので、それまで対応されていなかったRuntime Permissonなどの対応を一通りやることになった。 スキルレベル的には初中級者程度だったと思っていたので、アプリ全体のアーキテクチャ等を把握しつつ、Androidの仕組みに則った実装に書き換えたりするにはちょうどいいレベル感だった。
- Runtime Permissionの対応
- IntentServiceをJobIntentServiceに書き換え
- Notification Channelの実装
- Parse-SDK-Androidの更新
以後、例年のTarget SDK対応作業は自分が対応している
使用技術 Android(Java/Kotlin)、Parse.com
フォトブックを販売するサービス「ノハナ」のAndroidアプリ「ノハナ」の開発・運用に従事した。
ハードカバー版のフォトブックを新規プロダクトとして出すことが決まった。 それに伴い、アプリ上でWYSIWYGな編集画面の実装、編集データから印刷会社への納品のための組版画像の生成処理などの実装を行った。 ただ新規画面を実装するだけでなく、Custom Viewの実装やメモリ管理を意識したり、技術難易度が高いプロジェクトであったが完遂することができた。
- Coroutineの導入
- Material Designを意識したデザインレビュー
- Custom View/Custom Bindingの実装
- 画像の組版処理の実装
- Bitmapのメモリ効率化
- LruCacheを用いたキャッシュの実装
- Don't keep Activity有効時の動作担保
使用技術 Android(Java/Kotlin)、Parse.com
レセプションアプリのAndroidアプリの開発に従事した
不動産系の会社のWebアプリのネイティブアプリ化に伴い、React Native(Expo)を用いたマルチプラットフォームアプリの開発に従事した
人材系のReact Native用いたマルチプラットフォームアプリの開発に従事した
ソーシャルゲームのWebアプリのネイティブアプリ化に伴い、React Native(Expo)を用いたマルチプラットフォームアプリの開発に従事した
Androidエンジニアの文脈でReact Nativeと、そのtoolchainであるExpoを用いたアプリ開発の実際について発表した