はじめまして。情報システム部の比留間です。
アットホームには2018年に新卒で入社し、
コンシューマー向けサービスの開発グループに所属しています。
現在は、「お部屋探しアプリ 作成プロジェクト」で開発リーダーをしており
このプロジェクトでの新しい取組みを、1つご紹介したいと思います。
目次
まずは、開発するに至った経緯です。 1つの機能を実装するにも、2つのソースコードを変更しなければならないため せっかくの自社開発なのに などの問題を、そろそろ解決したいという思いが社内で募っており 上記以外にもUIが古い、保守開発を外部委託しており社内に分かるメンバーがいないこともプロジェクト発足に至った一因です。 本題に入る前に「Webアプリ」「ネイティブアプリ 」という単語について簡単に説明します。 どちらも、スマートフォンから利用できるアプリケーションです。 身近なところで例えると、今皆さんが見ているこのブログは「Webアプリ」に分類され さて、ここからが本題で「2つのソース」問題をどう解決するかというお話です。 今のお部屋探しアプリはネイティブアプリですが、 ハイブリッドアプリは、一言で表すと ネイティブアプリとWebアプリのメリット/デメリットはどんなものがあるか、 よく言われているのはこれらかと思います。 ハイブリッドアプリのデメリットはアットホームが作ろうとしているお部屋探しアプリには影響のないものでしたので、 これでめでたく2つのソースがある問題は撲滅されることでしょう。 ハイブリッドアプリをどうやって実現しているの?というところですが ハイブリッドアプリを開発する上で必要な知識は、勉強コストが高いと言われているAngular、そしてフロントエンドではよくある非同期処理や状態管理、それに加えてCordova…。 ゴリゴリなフロントエンド開発のため、毎日たくさんのコードを書き、あれやこれやと頭を悩ませています。 本プロジェクトの開発チームの体制は、開発リーダー(自分)、開発メンバーに2年目の社員が3人、外部企業の方が数人という構成で、社内で一番若手のチームです。 今回のプロジェクトでは内製化も1つの目標としており、社員で開発・保守を行える技術を身につけることもプロジェクトに期待されています。 未経験や少し独学で経験があるくらいの学生からアットホームに入社し、社内研修を経てどれだけ現場でできるのか。多くの新しい技術の情報をインプットしてアウトプットするのは容易なことではありませんが、日々メンバーで頭を悩ませながらも着々と進んでいます。 現在プロジェクト発足から約半年がたちましたが、半年前と比べると、比べ物にならないくらい知識が身に付いたなと実感しています。 今回初めて開発者ブログを書きましたが、目的は
アットホームでは『若手でこんなプロジェクトをやっているよ』 私自身、入社時はエンジニアに必要な知識・経験は0からのスタートでしたが 新卒入社でエンジニアになりたい。という方がよく気にされてる「未経験で大丈夫?」「研修のみで現場に配属されて本当に大丈夫?」という不安には、大丈夫です!と私は答えられます^ ^ 新しい技術ということで、メンバー一同試行錯誤を繰り返す日々ですが、 アプリがリリースされた際には、皆さまの端末にインストールして使っていただけますと幸いです。 最後まで読んでいただき、ありがとうございました。アプリを開発するに至った経緯
現在、お部屋探しアプリは、iOS版・Android版の2種類を配信していますが
それぞれを別の言語(iOS版:Swift・Android版:Java)で作っています。
単純計算で、開発工数が2倍…誰も幸せになりません。
今回のプロジェクトで、解決に動くことになりました。問題解決
スマートフォンアプリって?
Webアプリ
ネイティブアプリ
※スマートフォンアプリの1分類
開発言語
HTML5,CSS,JSなど
ios:swift,objective-Cなど
android:JAVAなど
どこから使えるか
ブラウザからの検索
AppStore(ios)やGooglaPlayStore(Android)
インストール
不要
必要
端末自体が持つ機能
(カメラ、通知など)ほぼ使えない
使える
アプリストアからインストールしているものの中に「ネイティブアプリ」という分類があります。問題の解決方法
結論から言うと、1つのソースで開発することを実現します。
プロジェクトで開発しているアプリはハイブリッドアプリと呼ばれるものに変えました。
ネイティブアプリとWebアプリの良いところを組み合わせたアプリ
と言えます。
ハイブリッドアプリはネイティブアプリとWebアプリの特徴のうちなにが実現できるかを表に起こしてみました。
Webアプリ
ネイティブアプリ
ハイブリッドアプリ
メリット
開発言語がOS毎に限定されない。
=作成したアプリがさまざまなOSの端末で動作する。デバイス固有の機能が使える。
デバイス固有の機能が使える。
さまざまなOSの端末で利用できる。
開発言語がOSごとに限定されない。
デメリット
デバイス固有の機能が使えない。
開発言語がOSごとに分かれている。
=作成したアプリの動作するOSが限られてしまう。デバイス固有の機能の使用に制限がある。
ネイティブアプリと比較すると多少動作が遅くなる。
こうしてみると三者三様であることが分かります。
「2つのソース」問題を解決すべく、ハイブリッドアプリを選択しました。
本プロジェクトではCordova+Angular(TypeScript)で実現します。
技術的な詳しい話については、他のプロジェクトメンバーに寄稿してもらいますので、
そちらもお読みいただければ嬉しいです。プロジェクト発足から約半年を経ての感想
最後に
『そしてそのプロジェクトが止まることなく動いているよ』ということを発信することでした。
手厚い研修・自社開発だからこそのサポートがある環境ということもあり
今こうやってプロジェクトで働けていることを日々実感しています。
アットホームのコンシューマー向けメインサービスであるお部屋探しアプリを、より多くのエンドユーザーの方に使っていただける良いものにしていきたいという思いで、日々開発を進めています。