LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog

Blog


LINE Developer Meetup in Fukuoka #18 参加レポート

LINE FukuokaでLINE Creators StudioのiOS開発を担当しているha1fです。

7/19に福岡オフィスで行いました LINE Developer Meetup in Fukuoka #18 の参加レポートをお送りします。

LINE Creators Studio Android with Kotlin / Dave

入社二年目で、現在はLINE Creators StudioのAndroid開発を担当しているDaveさんのセッションです。 Creators StudioのAndroid版の開発では、Kotlin, Anko, RxBindingといったモダンな言語・フレームワークを利用しています。これらのメリット、採用した理由について、実際のコードを交えながらお話されていました。

Line Creators Studio Android With Kotlin from LINE Corporation

Kotlin

当時は社内でもKotlinを使ったサービスはあまりなかったそうなのですが、 Javaと100%互換であるため、万が一の時にはJavaで開発できることもあって採用を決めたそうです。 実際使ってみると、nullチェックの安全性や、コード量の少なさがメリットになったとのことです。

Anko

Ankoはコードでレイアウトを行うことのできるライブラリです。 DSLのため学習コストが高い点や、data-bindingをサポートしていない点をデメリットとしてあげつつも、

  • Custom Layoutを作りやすい
  • business logicとUIを分離しやすい
  • xml parsingがない分高速

というメリットがあり、特にbusiness logicとの分離について強調されていました。詳しくはスライドをご参照ください。

Firebase Test Lab

Creators StudioはAndroid 4.1からサポートしているため、端末依存・OS依存のバグが発生しやすい一方で、多くの端末でテストを行うのは難しいです。そこで、多種多様な端末、OSで自動的にテストを行ってくれるFirebase Test Labを採用したそうです。

ただし、すべての画面についてテストコードを書くのは作業が多すぎる上、画面変更に伴ってテストも変更が必要でメンテナンスコストが多くかかってしまうため、優先順位を決めることが重要な点についても言及されていました。 具体的にはお金に関わる画面や、バグの発生しやすい, 状態によってUIが変わる画面などです。

RxSwiftをチームに導入する話 / ukitaka

Creators StudioではRxSwiftを採用しています。それにあたって、学習コストの高さから苦労も多かったようです。内容にはあまり触れずに、チームに導入するにあたってどういうメリット・デメリットがあったのか、なにを考えればよいのかについて話されていました。

RxSwiftを“チーム開発に”導入する話 from LINE Corporation

RxSwiftを何故導入したか

RxSwiftのメリットとして、GCD, delegate, Future / Promiseといった他の非同期処理や、KVO, observer, bondといったMVVMの手法と比較しながら、

  • 非同期の抽象化
  • UIとのバインディング

を統一的に扱える点を挙げられていました。
その他、repository, validation, 画面遷移など、実際に導入してよかった具体例も含めて詳しく書かれていますので、スライドをご参照ください。

どう導入したか(チームに)

RxSwiftは通常のコーディングとパラダイムも違うため学習コストが高く、メンバーに納得してもらうのが難しかったそうです。 それでも実際にやってよかったこと、やればよかったことを話されていました。

やってよかったこととして、「できるメンバーがまず書いてみて参考にしてもらい、レビュー, ペアプロ」を挙げていて、これは自分もアサインされてからかなり助けられたので、覚えるべきことの多いRxSwiftにとってかなり良い方法だったように感じています。

最後に、RxSwiftは便利で楽に書ける反面、チームへの導入は大変で、更に正しく使わないとメモリリークなどの可能性が高いので、よく考える必要があることを強調されていました。 また、可読性も特に上がらなかったようです。

アプリで簡単にスタンプを販売するためのAPI開発 / adam

Creators StudioアプリのサーバーサイドAPIについて、adamさんのセッションでした。Creators Studioアプリは新規開発とはいえ、LINE Creators Marketのシステムは従来からあり、審査・統計などの仕組みも複雑なため、作り変えることはなく従来からのperlサーバーにAPIを追加したそうです。

実際の仕様を交えて、JSONを返すRESTfulなAPIの実装と、amon2, plack, prmd等を使った開発・テストについて紹介されていました。

アプリで簡単にスタンプを販売するためのAPI開発 from LINE Corporation

RESTful API

実際のコードと、200, 400, 422といった適切なHTTPステータスコードの実例の紹介をされていました。 詳しくはスライドをご参照ください。

OAuth(認証)

Creators Studioのアプリでは認証にOAuth2の仕組みを利用しています。

LINE認証はアプリ経由で行うとパスワードの入力の手間などを省けますが、それが正しいことをLINE本体のサーバーに問い合わせる必要があります。そのフローについて、図を用いてわかりやすく紹介されています。

JSON Schema

prmdを使って、YAMLで記述されたJSON Schemaの定義ファイルから、マークダウン形式のドキュメントを自動で生成していたそうです。 ただ、JSON Schemaを定義する欠点はコードを更新すると同時にスキーマも更新しなきゃいけないことで、どちらか一方のみを更新してしまう可能性があります。 そこで、JSV::validator を用いることで、APIが仕様どおりかテストして一貫性を保証していたそう。便利ですね!

懇親会

セッション後は、ビール片手に寿司、ピザも出る懇親会でした。参加者も社員も飲み食いしながら、終了の時間までかなり盛り上がっていました。 学生もかなり多かったように思います。自分は新卒で入ったのですが、同期はみんな東京に行ってしまったので、興味持ってくれていたら嬉しいです。

LINE Fukuokaでは、開発エンジニアの募集を行っております。