私とTimersの半年間 -入社半年間の開発記録とその他-
今まで専門としてきたiOSから離れ、ほぼ未経験の状態でAndroidエンジニアとして株式会社Timersに転職して半年が経ちました。今iOSは個人でちょぼちょぼやってるくらいです。ので、今まで開発してきた機能とか、会社について振り返ってみたいと思います。
開発しているアプリはFammというアプリです。家族間で写真を共有できますし、それを毎月カレンダーやアルバムにして自分や両親、親戚に届けることもできます。
これまで開発を担当したもの
■過去フォトアルバム
一番最初の大きな開発で、過去月のアルバムが注文できる機能です。合わせて、注文履歴画面にも手を入れています。
「AndroidにもFammにも慣れてない人が初っ端取り組むissueではないのでは😇」と思いながら作っていたのは今となってはいい思い出。
一覧表示はRecyclerView、アルバムを左右に動かす部分はViewPagerを使っています。一覧はPagingを使ってなんとかできないかと思ったのですが、「写真を変更して戻ったときに即時更新を云々」とかやろうと思うとわりと厳しそうだったので諦めました。
データ周りの話だと、一部BFFからデータを取ってきたり、写真更新だけでなく注文もできるようにセッションハッシュ云々の実装もしたり、わりといろいろいじくり回しました。
幸いiOSアプリにはすでにこの機能があったので、コードを見たり、デバッグしたりしてなんとかなりました。
■写真フォルダ表示
写真動画アップロード画面で、端末内の写真動画フォルダを選択して絞り込めるようにしました(画面上部のやつ)。
詳しいことは後日何かしら記事を上げようかなぁとは思ってます(いつになるのやら)。実装当初はコンテンツプロバイダが何なのか何もわかってなかったので頭を悩ませてました。あとはRecyclerView in RecycerViewも頭がごっちゃになって大変でした。
■カレンダー立体表現
プリント画面中央のレイアウトを変更しました。特に大変だったのが、左下のカレンダーを中央を起点に折り曲げる表現です。
従来の実装に基づき、写真部分はImageView、カレンダー部分はCanvasとPaintを使って描画しています。手順としては
・カレンダーを右と左2つの長方形に分けて用意する
・サーバから画像を取ってきてImageViewに貼り付ける
・左右それぞれのキャプチャを撮って傾ける
・元々の長方形を消す
ということをやっているのですが、「写真部分とカレンダー部分の全ての描画が終わってからキャプチャを撮らないといけないけど、どうやって終わったことを検知する?」などの問題に悩まされました。ここらへんの話も気が向いたら記事にします。
■Firebase App Distributionでアプリ自動配布
詳しくは会社ブログに書いたので省きますが、開発版アプリをFirebase App DistributionとBitriseを使って自動配布できるようにしました。今も現役で動いてます。
■画像リソースのWebP化
クックパッドのブログ記事を見て「じゃあうちのアプリも」と思い、サクッと対応しました。結果的には↓こんなかんじになりました。
---------------
この他にも新しいカレンダーデザインに対応したり、Androidでもバースデーボードが注文できるようにしたり、細々したissueを潰したりしてます。GitHubを見るとこんなかんじでした。
会社について
せっかくなので会社についても少し話しておきます。
■社員の仲が良い
社内のコミュニケーション施策やみんなの人柄の影響なのか、みんなの仲が良いです。
お昼はランチbotにリアクションするとランダムにチームを組んでくれる仕組みがあるのでよく使ってます。
bot利用者はプロダクトチームが多いのですが他のチームの人もちょいちょい入ってくるので、ランチしながら他チームのいろいろを聞けたりします。ちなみに福利厚生で「同僚とランチに行けば1,000円補助(毎日利用可)」というものがあるので積極的に使ってます。在宅勤務状況下の今は、Zoom上で一緒にランチをしたら同じ補助が受けられます。
また、毎週金曜にやっているTGIFでも他の人と話す機会が得られていいです。毎回誰かが「店長」になって食べ物を選んでくれます(そして総務が発注してくれる)。食べ飲みながらカードゲームやったり、Switchゲームやってたこともあります。
ちなみに私はこの間誕生日を迎え、そして今日は4月の誕生日会なので、祝われてきます(Zoom上で)。
正直な話、入社前は「この会社、仕事外の会話も結構多そうだけど大丈夫かな」(自分がコミュ障&自分一人の時間も結構大事にしたいタイプ / 今までは基本お弁当持参ということもあり、昼休みは食事+自分の作業時間だった)と思ってたんですが、意外と大丈夫です。
■QAチームが心強い
QA専任の人がいて、個別の開発ごと(DevQA)、リリースごと(リリース前QA)にテストしてくれます。「あーそのケースあったねー」というところも細かく指摘していただいて非常に心強く、安心して開発できてます。
QAチームが担当するテストは手動でのテストだけでなく、MagicPodでの自動テストも含みます。どんどんテストケースを作成していて、これも心強いです。
■デザイナーの上流工程?が見れる
デザイナーのアウトプット用のチャンネルがあるのでちょいちょい見ているのですが、カスタマージャーニーマップやデザインパターン出しの様子、他アプリのUI考察などが流れてきて「そういうふうに考えてるんだ」と勉強になります。あと、新機能についてのブレストにも参加したりするので、実装するときに背景がわかってやりやすいとも思ってます。
---------------
それ以外にもいろいろありますが、長くなってきたのでこんなところで。
最後に
半年を振り返ってみるといろいろなことをやって、ちょっとずつ実装できる幅が広がってきたかなと思います。これからもどんどんAndroidアプリ開発の知識を付けていくぞー。
あ、(別に採用のために書いたんじゃないけど)もし弊社に興味が出てきた人がいたら気軽にZoomランチとかZoom会食?しましょう。
共感した、他の人にも知ってもらいたい等々思ったら、ぜひTwitterなどでシェアしてください。