LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

スマホアプリエンジニアがWeb始めました

2021年9月からマッハバイトに業務委託として参画している草間と申します。
iOSエンジニアとして参画し、今ではAndroid・Web側も担当するようになり楽しく業務しています。

今回は上半期も終わりが見えてきたのでこの半年の振り返りをしつつスマホアプリエンジニアとしてWeb開発で感じたことを話します。

Webを始めたのはなぜか

私草間個人の話ですが、2012年からITエンジニア特にiOSエンジニアをはじめました。
今年で大体12年目を迎えるところまでなんとかやっていけています。
数年前からAndroidアプリの開発も携わりはじめ、もっとやれる範囲を増やしたいと強く思うようになりました。
そのような思いがある中でリブセンスに参画することになり、参画当初からそれとなく「Web側もやれるようになりたいんですよね」や「やりたいです」などを定期的に言い続けていたと記憶しています。
このように言っていたら、ちょうどスマホアプリの施策でAPIの改修が必要となり、やってみたいならやりますかといってもらえたのが、Web側をがっつり触るきっかけになりました。
言い続けるとチャンスがもらえるものだと個人的に感じました。

行ったこと

上半期は次のことをやっていました。

  • マッハバイトアプリのSwiftUI化
  • マッハバイトのSEO施策

SwiftUI化についてはこちらこちらに記事を公開しています。
SEO施策はURLの変更や不要なページの404化などを対応していました。

Web開発で感じたこと

SEO施策で感じたこと

SEO施策を通して特に感じたことはスマホアプリよりユーザーが近いように感じました。
多分にリリースまでの時間差がその感覚を強くしていると考えています。
スマホアプリのリリースは、次の流れで行われます。

  1. App Store ConnectやGoogle Play Consoleなどにアプリをアップロードする
  2. 各プラットフォーム事業者(AppleやGoogle)の審査を受ける
  3. 問題がなければアプリがそれぞれのストアで公開できる

マッハバイトでは、リリースルールに従い実装者が本番環境にリリースする流れを採用しています。
大きな違いとして、他社の審査があるかないかというところでしょうか。
この違いでスマホアプリのリリースでは、一時的に手離れした感覚になっていたことに気づきました。
この感覚が、Webではユーザーが近いように感じさせたのかもしれないです。

開発環境で感じたこと

マッハバイトでは、スマホアプリが開発に利用しているサーバーの環境はステージング環境です。
個人的な経験でも多くの場合サーバーはステージング環境を参照してスマホアプリの開発を行っていました。
Web開発でローカル環境に開発環境を建てることが新鮮に感じました。
なかなか環境を起ち上げられないところなど苦労しました。
開発環境のあれこれはここでは割愛します。

本番環境で感じたこと

スマホアプリでは、世の中には古いバージョンのアプリを使っているユーザーさんも存在しています。
そのために、古いアプリを最新の状態するため強制アップデートの仕組みなどを実装することが多くありますが、それでも複数世代を超えてアップデートする場合を考慮する必要があったりなど苦労するポイントがあると思います。
マッハバイトのWeb開発では、本番環境にいくつものバージョンが存在することがないのでアプリのようなアップデートに関する問題は少ないと感じていましたし、問題はほぼなかったです。
ただし、SEO施策をリリースした後にBotのクローリングに困らされるとは思ってもいませんでした。
Botのクローリング話は別話なので割愛しますが、この件でスマホアプリとは違った苦労があることを痛感しました。

言語で感じたこと

iOSアプリではSwift、AndroidアプリではKotlinを採用して言います。
マッハバイトのWeb側はRuby on Railsを採用しています。
個人的な感覚ですが、SwiftとKotlinは似ている傾向と考えています。
そのためか、Rubyを書き始めたときは違和感が半端なかったです。
例えば

if xxxx {
    yyyy
}

みたいにSwiftで書くif文をRubyで書くときに

if xxxx
    yyyy
end

end や do ってなんだよぉと心で言っていました。

Rubyを書いてこれはいいと思ったのが unless です。
例えば

if !isEmpty() {
    ....
}

とSwiftで書くところを

unless isEmpty()
    ...
end

と書けるのは直感的にわかりやすいなと感じました。
RailsとiOS、Androidのフレームワークとしての違いも感じつつもうまく言語化できるまでRailsを理解できていないです。
今後理解が深まり違いを語れるくらいに成長したらまた記事として投稿してみたいと思っています。

最後に

スマホアプリエンジニアとしてWeb側もやってみて

  1. ユーザーとの距離感の感じ方の違い
  2. リリース手順の違い
  3. リリース後の苦労はなんだかんだそれぞれある
  4. 開発環境の違い

これらを感じました。
Webからスマホへ、スマホからWebへ挑戦したいと思っている人がもっとやってみたいと思えるようなことが書けていたら幸いです。