【イベントレポート】【 Android祭り 】Android開発のここが好き!Androidへの「愛」を語る会
皆さまこんにちは!
株式会社Globeeの広報担当あくつ(@akutsu22_globee)です。
今回のnoteでは、10月27日(木)に実施されましたテックイベント「abceed Tech Night」第6弾についてレポートさせていただきます。
そもそも「abceed Tech Night」とは?
「abceed Tech Night」はテック業界の第一線で活躍される企業様をお招きし、開発秘話や実践事例を交えながらイベントをお送りするコミュニティとなります。開催6回目となる今回は、弊社を含めて合計5社でイベントを実施させていただきました!
登壇企業
・AI英語教材「abceed」を運営する株式会社Globee
・タクシーアプリ「GO」を運営する株式会社Mobility Technologies
・デジタルコネクトプラットフォームの企画・設計・開発を行う株式会社ビットキー
・「レアジョブ英会話」「PROGOS」を運営するEdTechカンパニー、株式会社レアジョブテクノロジーズ
・家計簿・資産管理アプリ「マネーフォワードME」、クラウド会計ソフト「マネーフォワードクラウド」等の運営を行う株式会社マネーフォワード
登壇者のご紹介
LT 1: 守安 淳志(@RigG_log) / 株式会社Globee Androidエンジニア
まずLTのトップバッターは弊社Androidエンジニアの守安が担当しました!
発表テーマ:
ソーシャルログインの話
以下、守安のLTを一部抜粋いたします。
====
会社紹介
260万人が利用する AI英語教材 abceed を運営しています。abceedは「学習量×学習効率を最大化する」というミッションに基づき作られたAI英語教材です。600タイトル以上の人気英語教材の中から、一人ひとりの英語力を上げるのに最適な単語や問題をAIがレコメンドすることで、従来では不可能なレベルに学習効率を高めます。2021年8月には、登録ユーザー数200万人を突破し、2021年12月にはアプリストア(AppStore/Google Play Store)の教育アプリ売上げランキングにおいても1位を獲得しております。
本日は、abceedのソーシャルログインについてお話しさせていただければと思っております。
ソーシャルログインとは
GoogleやApple、LINE、Twitter、FacebookなどのSNSアカウントで他のサービスを利用する仕組みの事を指します。実装側からの視点で申し上げますと、OAuth2.0やOpenIDConnectに基づいたトークンベースの認証で、サインインする仕組みです。
解決したい課題
解決したい課題がそもそもあり、ソーシャルログインの話が出ました。具体的な課題として①アカウント登録率の向上②メールアドレスやパスワード登録を行うハードルが高い③プラットフォーム間(web、iOS、Android)での利用を促進したい④Googleアカウントでログインしたいetc.などの様々な課題が浮かび上がりました。
Google、Appleアカウントに加えて2021年最も利用されたのがLINEアカウントでのログインだった為、今回はLINEでの対応を試みることにしました。
Sign In with LINE
SDKを経由してIDトークンを取得するんですが、2パターンあり、LINE SDKの組み込みのログインボタンを使う方法と、自分でログインアクティブティを開始する方法があります。今回、SDKの組み込みのログインボタンを使う方法はnonceが反映されなかった為、ログインアクティビティを開始する方法で実装しました。まだリリースはされていませんが、リリース後に課題が解決されること期待しております。
< 株式会社Globeeの採用情報はこちら >
LT 2: 山本 晃平(@farundorl) / 株式会社Mobility Technologies Androidエンジニア
続いて株式会社Mobility Technologies Androidエンジニアの山本さんに発表いただきました。
発表テーマはこちら:
私の好きなModifier関数
以下、山本さんのLTを一部抜粋いたします。
====
会社紹介
「移動で人を幸せに。」という壮大なミッションを掲げ、タクシーアプリ『GO』や次世代AIドラレコサービス『DRIVE CHART』を始めとしたモビリティ産業をアップデートするITサービスの提供を行っています。
モビリティから、技術を前へ、産業を前へ、ライフスタイルを前へと進める。
Shapeの話
「UIの統一感を出すために角丸で揃えたい」ということに対して、ブランドとしての統一感を表現するために、何種類かのViewの形を揃えるというのがよくあるユースケースかと思います。Android Viewの実装方法ではいくつかパターンがあり、例えば、①Material Design 2,3のThemeに定義したShapeを設定する②角丸半径を設定できるCard Viewの使用③角丸半径、背景色、枠線色をもつShape Drowableを定義して背景に設定するなどです。
Shapeの好きなポイント
Shapeの好きなポイントとして、よく長いXMLになってしまうShape Drawableの定義が不要になることが1番嬉しいポイントになります。状態によって、背景色などが変わる場合もShapeのみ設定することが可能となります。その他、ShapeをもとにComposeの切り抜き、背景表示、影表示ができる点も好きなポイントです。
Insetsの話
「アプリを全画面に表示したい」場合に使用します。
具体的には、最上部に通知を表示するStatus Barと最下部に操作UIを表示するNavigation Barにアプリのコンテンツを描画します。
Android Viewの実装方法は、Status BarとNavigation Barを表示領域とするために全画面表示フラグと透明化を設定します。
その次に、余白(fitsSystemWindows,padding,layout_margin)それぞれを適切に使用する必要があります。また、Jetpack Composeの実装方法の大枠は同じになりますが、異なる点としては、余白(contentPadding,padding)の2つに変わる点かと思います。
Insetsの好きなポイント
Insetsの好きなポイントは、とても複雑だった余白計算がシンプルになる点と、Activityのフラグ設定を除くと全画面表示の実装がJetpack Composeで完結する点もなかなか素敵なポイントだと思います。
< 株式会社Mobility Technologies様の採用情報はこちら >
LT 3: 菊地 英太 / 株式会社ビットキー テックリード
続いて株式会社ビットキー テックリードの菊地さんに発表いただきました。
発表テーマはこちら:
常設アプリ運用で遭遇した珍トラブル
以下、菊池さんのLTを一部抜粋いたします。
====
会社紹介
テクノロジーの力で、あらゆるものを安全で便利で気持ちよく「つなげる」。「Connect」が、わたしたちの事業ミッションです。「Home(暮らし)」「Workspace(働く)」「Experience(心が動く、非日常の体験)」の3つの事業領域において、独自開発のデジタルコネクトプラットフォームを通して、あらゆることがコネクトした体験を生み出すべくプロダクト・サービス開発、価値提供を進めています。そのサービスの1つに「Room Support」というサービスがございます。このサービスは会議室の予約、延長、リマインド、入室などが行えるアプリケーションです。部屋の入り口に置くことで、予約をした人が入室できたり、その場で予約することも可能となっております。弊社はスマートロックも開発しておりますので、スマートロックがついている会議室においては、入室時にスマートロックの解錠も行うことが可能です。オフィス、コワーキングスペース、ワークブースなど様々なケースでご利用いただいております。
今回は、この「Room Support」というサービス開発をした際のお話をさせていただきます。
運用する中で発生したトラブル
運用初期に、ワークブースに置いてあった弊社のタブレットからYouTubeを起動されていたというトラブルが発生しました。
このトラブル対応として、「YouTubeを消してしまえば?」という意見もありましたが、それだと根本的な解決にはならない為、他の解決方法を模索しました。ただ、当時はオフシェア開発アプリだった為、あまりコードはいじりたくないと考えていました。
対応候補
Screen Pinningのようなものを使用し、アプリ自体を画面に固定することはできるかなと考えました。ただ、このScreen Pinning自体を使うと解除の仕方を知っている人だと解除が可能であったり、当時使っていたHUAWEIの端末だと、設定が見つからず諦めました。また、Launcherアプリ化することも考えましたが、既存のアプリに対する修正はあまりしたくなかった為、こちらも諦めました。
対応内容
実際には別アプリからプロセスを管理するといった対応を取りました。
Device Ownerという権限があり、これを使用することによって多くの制御ができるようになります。今回のような特定のアプリをデフォルトアプリとして指定したり、アプリのアンインストール制御、アプリケーションHistoryの参照ができたりします。
Device Ownerのアプリ実装をした感想としては、とにかくなんでもできると感じました。簡単にアプリの固定や画面制御が可能であったり、UIが皆無なので、実装量もコンパクトです。ただ、デメリットとしてはDevice Ownerの情報が少なく、ドキュメントがあまりない点はデメリットでした。あとはdeprecationリスクなどもありました。メリットデメリットを語りましたが、MDMなどを入れた方が本当は楽だと思います。しかし、Device Ownerを個人で遊ぶ分には相当楽しいと思いますので、遊べる人は個人で遊んで見るのもおすすめです!
< 株式会社ビットキー様の採用情報はこちら >
LT 4:杉山 裕紀 / 株式会社レアジョブテクノロジーズ Androidエンジニア
続いて株式会社レアジョブテクノロジーズ Androidエンジニアの杉山さんに発表いただきました。
発表テーマはこちら:
AppSync を使ってみる
以下、杉山さんのLTを一部抜粋いたします。
====
会社紹介
「マナビ、アップデート」をミッションに掲げ、高品質かつ先進的なプロダクト開発に集中するべく、2022年4月1日より事業を開始しました。レアジョブグループでは、「世界中の人々が、それぞれの能力を発揮し、活躍できる世の中の実現」を目指しています。創業当初から提供しているオンライン英会話だけでなく、AI英語スピーキングテスト「PROGOS」や、グローバルリーダー育成事業、さらには資格学習と、英語以外にも子どもから大人の幅広い学習者を対象に、多様な“学び“に関連するサービスを展開中。データとテクノロジーで失敗しない学習を提供していきます。
本日は、AppSyncを弊社が開発で利用した際のお話をさせていただきます。
App Sync、Dybamo DBとは
App Syncとは、ウェブおよびモバイルアプリケーションの構築を簡素化するサーバーレスGraphQL APIサービスです。AWS App Sync GraphQL APIとは、API から安全にデータをクリエまたは更新するための単一エンドポイントを提供することで、アプリケーションを簡素化できるものです。今回、弊社がApp Syncを利用して開発をした理由は、アプリチームで施策を生み出し、リリースまで行う際に、比較的容易にAPI化できるサービスを探していた為、App Syncを選択しました。
Dybamo DBとは、ハイパフォーマンスなアプリケーションをあらゆる規模で実行するために設計された、フルマネージドでサーバーレスのKey-value NoSQLデータベースです。
今回弊社が利用した理由は、過去に利用経験があり、AppSyncと同じAWSサービスの1つでもある為、連携面も重視して選択しました。
弊社アプリでApp Syncを使っているポイント
レアジョブ英会話サービスでは、ソロトレーニングという機能をリリースしておりまして、そちらの中でApp Syncを利用しております。こちらの機能のカテゴリ情報、トピック情報、学習内容などをDynamoDBのテーブルに入れており、必要に応じて情報を取り出しております。また、学習トピックの理解度をAPIのミューテーションを使い保存しております。
App Syncを利用することによるメリット・デメリット
メリットの1つ目は、プロジェクトのスケジュール管理を行いやすくなったということです。自チームでAPI作成・運用保守を行うとで、他チームに依頼すると発生しがちだった待ち時間が回避できる点などはよかったです。また、柔軟性があがる点、ナレッジが溜まるなどのメリットがありました。
デメリットは、コストがかかるの1点かなと思います。しかし、弊社は非常に小規模のチームで開発を行なっている為、チームの規模感やタスクを落とすスピードなどでマッチするしないかで、デメリットの大きさは変わってくるかと思います。
< 株式会社レアジョブテクノロジーズ様の採用情報はこちら >
LT 5:小林 慶弘(@nyafunta9858) / 株式会社マネーフォワード Androidエンジニア
続いて株式会社マネーフォワード Androidエンジニアの小林さんに発表いただきました。
発表テーマはこちら:
コルーチン - Androidと非同期処理
以下、小林さんのLTを一部抜粋いたします。
====
会社紹介
家計簿アプリシェアNo.1のお金の見える化サービス『マネーフォワード ME』を中心に、お客様にお金の課題に対する「気付き」や「学び」、「解決策」を提供する、個人のお金の課題解決チームとなることを目標し、サービス展開をしております。私たちは「お金と前向きに向き合い、可能性を広げることができる」サービスを提供することにより、ユーザーの人生を飛躍的に豊かにすることで、より良い社会創りに貢献していきたいと考えております。
コルーチンとは
Androidで利用できる並行実行のデザインパターンの1つで、非同期実行するコードを簡略化できるようになっております。Androidではメインスレッドをブロックせずに、時間のかかる処理を実行するということはパフォーマンスをする上で非常に大事なポイントとなっております。Kotlinのコルーチンを使用することによって、シンプルに無駄のないコードで記述することができます。
コルーチンの推しポイント①:ライフサイクルの考慮が簡単
一昔前ですと、非同期処理やスレッド処理を書く際には、Threadなどを使用しておりました。また、当時はライフサイクルコンポーネントなどもなかった為、Threadなどを使用する際にはライフサイクルのイベントですとか、Configuration Changesなどを意識しながらメインスレッドやワーカースレッドのそれぞれを管理しつつ、適切にキャンセル、非同期処理が終わった後のUIへの反映をする必要がありました。キャンセル処理を忘れてしまって、アプリをバックグラウンドに遷移させてしまい、クラッシュしたという方も多いのではないでしょうか。しかし、コルーチンが登場してからは非常にシンプルな形へと改善されてきたと感じております。コルーチンはライフサイクルに合わせて自動的にキャンセルされる為、従来よりも非常にシンプルにコードを書くことができるようになりました。
コルーチンの推しポイント②:簡潔な記述ができる
通信した結果を使って、新しくUIを更新するなどの処理をした際に、ThreadやAsyncTaskを使って書くとどうしても複雑になってしまい、コールバック地獄になってしまうなどの経験をしたことがありました。しかし、コルーチンを使うと、同期処理のような書き味で記述ができる為、非常に見通しよくすることができます。先日のDroidKaigiの中でも、コールバック地獄への可読性改善のアプローチとして、コルーチンへの置き換えを採用していたという事例があったのも、記憶に新しいところかなと思います。
< 株式会社マネーフォワード様の採用情報はこちら >
以上が、今回のイベントの大きな流れと内容です。
最後に皆様からいただいた質問に回答して、今回も無事にイベント終了しました👏
今後も #abceed Tech Night の開催を予定しております!是非、皆様ご参加お待ちしております。
♦︎ カジュアル面談
現在株式会社Globeeでは「エンジニア職種」を中心に採用活動を積極的に行なっております。
弊社が「教育」にかける思いや「ものづくり」の考え方について、弊社代表の幾嶋より、
お話が出来ればと思いますので、皆様お気軽にご応募下さい。
♦︎ 採用情報
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?