Tag Archives: Android

サーバーサイドKotlinの知見/KotlinでClova Skill Award挑戦

はじめに

LINE Engineering Blogをご覧の皆さまこんにちは!今日の記事は2名の連名によってお送りします。LINEでゲームプラットフォームを開発しているKagayaと、ライブ配信サービスLINE LIVEのAndroidアプリを開発しているakiraです。こちらはLINE Engineering Blog「夏休みの自由研究 -Summer Homework-」の9日目の記事です。

【協賛情報】DroidKaigi 2018

2018年2月8日(木)〜9日(金)に開催される国内最大のAndroidに関するカンファレンス「DroidKaigi 2018」(会場:ベルサール新宿グランド コンファレンスセンター)にて、LINEはシルバースポンサーを務めさせていただきます。


当日、会場内ではスポンサーブースを出展いたします。LINEやLINE LIVEのAndroidアプリの技術要素をパネルにしてご紹介する予定です。LINEのAndroidエンジニアもブースでお話させて頂く他、プレゼントもご用意してお待ちしております。

LINE Creators Studio開発に使われるKotlinのご紹介

はじめに

こんにちは。LINE Fukuokaの開発チームで働いているFreddie Wangです。LINE Creators Studioという、誰でもオリジナルのスタンプを作ることができるようサポートするスタンプ制作ツールのAndroidアプリ開発を担当しています。LINE Creators Studioで作成したスタンプはLINE Storeで販売することができ、LINEを利用しているすべてのユーザーが購入できます。

今回の記事では、LINE Creators Studioアプリの開発に全面的に採用しているプログラミング言語「Kotlin」についてご紹介します。Kotlinをメイン言語として選んだ理由と主に使っているKotlinの機能を説明します。

Kotlinの利点と主要機能

Google I/O 2017において、GoogleはAndroid Studio 3.0からKotlinを公式にサポートすることを発表しました。LINE Creators Studio開発プロジェクトをキックオフしたのは2016年末でしたが、当時は、短期間でこのプロジェクトをMVP(Minimum Viable Product)プロジェクトに成長させないといけない課題を抱えていました。Kotlin 1.0がリリースされてからかなりの時間が経っていましたが、チームの中にはKotlinを使ってみた経験のあるメンバーがいませんでした。そのため、開発に着手する前にまずKotlinについて調べてみました。その結果、以下のような利点からKotlinを採用することにしました。

Kotlinを選んだ背景

Javaとの互換性は100%

Kotlinの最大の魅力は、KotlinコードとJavaコードを一つのプロジェクト内で共存させることができ、既存のJavaライブラリをすべて使用できるということです。このプロジェクトにはJavaレガシーコードはありませんでしたが、Dagger 2、Retrofit、RxJavaといったJava互換ライブラリを使いたいという希望がありました。

簡潔な構文

Kotlinは問題解決のために設計された言語です。Kotlinの主な目標の一つは、簡潔なコードをJavaより簡単に書けることです。これは、Androidアプリ開発において欠かせない重要な要素です。

依存性の減少

Kotlinは、Guavaのようにサイズの大きいJavaライブラリに取って代わることのできるコンパクトなランタイムライブラリを持っています。大容量のライブラリは、サーバーやデスクトップ環境では大した問題ではありませんが、Androidでは問題を引き起こす可能性があります。Androidアプリを開発する際にはメソッド数が65Kを超えられないという制限があるので、大容量のJavaライブラリの利用は控える必要があります。Kotlinのstdlibライブラリ(バージョン1.1.3-2)はメソッド数が6306個なので、メソッド数による影響はGuavaライブラリより少なくなります。

旧バージョンのAndroid端末をサポート

Kotlin 1.0はJava 6を基準にしているので、バージョン2.3以上のAndroid端末をサポートできます。これもまた、Android開発者にとって重要なポイントです。

Androidで日付表記をお手軽に国際化する

こんにちは、LINEでAndroid clientを開発しているShojiです。何故か一部からはビルド王子と呼ばれています。この記事はLINE Advent Calendar2016の5日目の記事です。

Androidアプリの日付表記の国際化

せっかく頑張ってコードを書いて、テストしたAndroidアプリなら海外含めて沢山の人に使って欲しいですよね?

LINEは海外でも使われているのでUIテキストの翻訳をするのは勿論ですが、アプリの国際化はUIの翻訳に限りません。特にLINEはアプリの性格上日付表示がUI上に多く、このフォーマットを各言語文化にあった形で表示する必要があります。

toLowerCaseの落とし穴とCase Foldingの話

こんにちは。LINEでAndroid Clientを開発しているMasakuniです。

これはLINE Advent Calendar 2016の4日目の記事となります。

LINEのアプリ・サービスは多くの国で使われているため、国際化や多言語化はサービス開発時における重大なテーマの一つです。 今回は、その中でも「大文字・小文字変換」について話をします。

Javaにおける String#toLowerCase() / toUpperCase() の挙動

まずは一つ、問題を出してみましょう。

Q. 以下のJavaテストコードは常にpassすることが保証されているでしょうか?

assertEquals("i", "I".toLowerCase()); 

A. No.

一見単純なテストコードですが、これはJavaの実行環境によっては失敗することがあります。何故かと言うと、 "I".toLowerCase()"I".toLowerCase(Locale.getDefault()) と等価であり、実行環境のデフォルトロケールによって動作が変わるからです。