LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログです。

年度末なので今期のお仕事を振り返ってみた 第一部(4月~7月)

モバイルアプリエンジニアの山下です。最近はショットを追加したスターバックスラテのにハマってます。味の物足りなさやミルクが口に残るが解消されて丁度いいことに気づきました☕️

さて、皆さん年度末はどうお過ごしでしょうか?プロジェクトが大詰めだったり、評価や目標関連のことで忙しい時期ですね。私も非常に忙しい毎日を送っていて、珍しく今月の残業が15時間を超えそうです。

ブログをゆっくり書く時間も取れないので、ざっくりと今期の振り返りをしようと思います。

※ この記事の内容はあくまでも"私の"お仕事と取り組み方となります

4月

エンジニアチームと個人の目標計画

全社の目標を達成するためにエンジニアができることは何かをチームで議論し、サービスの成長や精度などいくつかの視点からバランス良く項目を設けて目標を設定しました。私個人の目標は、それらの項目に対応するモバイルアプリの目標とチームをサポートする目標で設定しました。

iOS v2.6 リリース

このリリースでは、今までマイページ画面に含まれていた「保存した条件画面」と「お気に入り画面」をタブバーに移設しました。これにより自分が保存した情報を1タップでアクセスできるようになりました!

Before After
f:id:shymst:20190327005346p:plain:w300 f:id:shymst:20190327005403p:plain:w300

モバイル管理画面

PUSH通知の配信や強制アップデート等のシステムパラメータは、長い間スプレッドシート&SQL直インサートで運用されていました。そのため、企画メンバーから度々エンジニアへ依頼がきていたので、モバイルアプリ専用の管理画面を用意してブラウザからPUSH通知の配信や情報の閲覧をできるようにしました。このおかげで依頼も無くなり、自分たちも配信テストがしやすくなったので良い取り組みでした。

しかし、この管理画面も現状はリソースが全く割けていなく、機能追加と改善のIssueがたんまりと溜まっています😓 これを日常的にメンテナンスできるくらいのリソースがほしいですが、なかなか人が足りていない状態です。

この月に公開した記事

techblog.lclco.com

techblog.lclco.com

5月

iOS v2.7 リリース

閲覧した予約サイトの履歴が見られる「閲覧履歴画面」を追加しました。これまでは前に見たバス便情報がどれかわからなくなることあったかと思いますが、この機能によりその心配は無くなりました!

f:id:shymst:20190327005541p:plain:w300

この機能、新規に画面が追加されていたり、履歴を保存するという振る舞いから作業が重そうな雰囲気を漂わせていますが、機能自体の実装期間は1日程度で終わりました。しかし、UIの実装でとても時間が掛かりました。。

というのも、この画面で使用しているUI要素は検索結果の便情報を表示しているデザインとと同じデザインなのですが、元となる検索結果のUI実装がかなり解読しづらいものとなっており、リファクタと細分化した上で使い回すよりも新規に実装して、逆に差し替えた方が早く解決すると判断しました。そんなこんなで、この時期はコードレイアウトにもハマっていて完全コードベースでの実装を始めたのですが、検索結果は一番最初に実装された画面で、当時のデザインカンプが今のデザインとはほとんど違うものでした😥

後から訊いた話によると、弊社としてアプリを提供するのもこのプロダクトが初めてだったため、エンジニアもデザイナーも標準UIをベースに手探りで仕様を詰めたそうです。そして、その過程で諸々の理由からカンプ通りにはならなかった要素がいくつか存在していました。

カンプが無い状態でxibとソースコードを元にリプレースを進めたのですが、至る所で微妙なデザインの違いが発生してデザイナーと度々の調整が入りました。(ちなみに、企画メンバーとデザイナーも既存の表示のばらつきは気になっていたとのことで、リプレースは理解と応援と便乗をしていただけました!)

こうして、協力もいただきながら綺麗に実装することができました。ビルドするまでUIを確認できないというデメリットを嫌というほど感じたコードレイアウトは、その後の実装では封印しました。※ 私が未熟だっただけでうまく利用する方法はたくさんあると思います

その他にもこのリリースでは以下の機能も追加しました。

  • 会員登録不要の予約サイトの絞り込みに対応
  • 弱電波・オフライン時のアラートを追加
  • 幅料金の注釈を追加

この月に公開した記事

techblog.lclco.com

techblog.lclco.com

6月

Android v1.6 リリース

このリリースでは、iOSに追随して

  • 会員登録不要の予約サイトの絞り込みに対応
  • 幅料金の注釈を追加
  • 最安値カレンダーに前次月の料金を表示
Before After
f:id:shymst:20190327005642p:plain:w300 f:id:shymst:20190327005652p:plain:w300

また、targetSdkVersion をAPIレベル 26以上にする対応を行いました。

Google Developers Japan: 今後の Google Play でのアプリのセキュリティおよびパフォーマンスの改善について
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html

AndroidはiOSと異なり、最低のサポートAPIレベル(バージョン)に加え、最新のサポートAPIレベルの定義が必要です。これまでは最新のサポートAPIレベルを提供されている最新のレベルに追随していなくてもリリースできていましたが、2018年11月から規定のAPIレベルに追随していないとリリースができないようになりました。

その他、お手伝い

  • バス比較なび
    • Ruby on Rails 5 バージョンアップ対応
  • 勤怠情報のチャット通知

この月に公開した記事

techblog.lclco.com

techblog.lclco.com

7月

iOSのローカルデータ操作のリファクタリング

前回、閲覧履歴機能を実装した際にローカルデータを操作するクラスの設計と呼び出し方法を見直しました。そこでこれを機にViewやController、○○Managerにも実装されていたコードを排除するリファクタリングを行いました。これにより、綺麗な設計に少し近づきました(道は遠い)

iOS開発環境の整備

これまで利用していたSwiftLintに加え、SwiftFormatとxcprojectlintも採用しました。 情報が古くなっているかも知れませんが、詳細は以下の記事をご覧ください。

techblog.lclco.com

techblog.lclco.com

これにより、一人での開発でも細かいヒューマンエラーやコーディングスタイルのズレを機械的に無くすことができました。こういう仕組みをしっかり用意することと、その時間を確保できる環境であることは大事ですね。

iOSテスト環境用機能「秘密のアクション」に機能を追加

以下の記事でも紹介しました「秘密のアクション」に新しく機能を追加しました。

techblog.lclco.com

  • ユーザ固有の情報を表示
  • ログのトースト表示
  • クラッシュレポート送信テスト

企画メンバーから問い合わせがあったり、開発中に何回も発生するような操作はなるべくアプリから1タップでできるようにしています。例えば、PUSH通知をテストするための固有の情報が知りたいという要望や操作履歴がない状態に戻したい場合の操作などです。これらを用意しておくことで開発が捗ります!

その他、お手伝い

  • モバイルアプリ
    • PUSH通知配信処理の改修とエラーハンドリング
    • インターンの開始
      • 隔週で1on1
  • バスとりっぷ
    • 管理画面の改修
  • バス比較なび
    • Varnish キャッシュヒット率の向上

この月に公開した記事

techblog.lclco.com

techblog.lclco.com

おわりに

意外と長くなってしまったので3部構成で続けようと思います!

最初の4ヶ月は毎月リリースと他プロジェクトのお手伝いが順調にできていますね! やはり、何回か登場していたように開発基盤を整えることが一番大切だと思っていて、その時間をしっかりと確保できる状態だからこそ一人でも定期的なリリースができています! 残りの8ヶ月もこのペースを維持していてほしいですね。

ここまでお付き合いいただいた方、ありがとうございます。
8月からの第2部も近日公開予定する予定です。よろしくお願いします!

LCLではプロダクトのことや開発の仕方まであらゆる場面で楽しく効率的に仕事を進めたいメンバーを募集しています!このブログを読んで興味を持っていただけた方は、是非一度お話を聞きにいらしてください。

www.lclco.com