Furyu
[フリュー公式]

Tech Blog

フリュー株式会社の技術ブログです

2019年02月15日

furusin

GDG京都様と共催でミートアップを開催しました!

こんにちは。ピクトリンク事業部の古川です。

先日のブログで、GDG京都(Google Developers Groups)様との共催でGDG ミートアップ in 京都を開催することを宣言しておりましたが、ついに実現しましたのでご報告致します!

 

GDG ミートアップ in 京都

今回も合計で30名以上の方にご参加頂きました!

特色としては、海外からGDE(Google Developer Experts)が2名参加されることもあり、セッションのほとんどが英語となりました!

GDEの2名以外にもGDG NZ(ニュージーランド)の方も来られており、とても国色豊かなイベントとなりました。

GDG NZの方とGDEのうちの1名は、直前に東京で開催されていた日本最大級のAndroidイベント「DroidKaigi」にも参加されていたそうです。

(ちなみに私も参加していました。弊社はDroidKaigiのスポンサーでもあります!)

 

GDEであるEnrique Lopez Mañas さんの発表「 Kotlin/Native for Multiplatform development」

IMG_20190210_135625

 

GDEであるiñaki Villar さんの発表「 Diving in the WorkManager API」

IMG_20190210_142212991

英語のセッションということもあり、皆さんいつも以上に真剣に(必死に?)話を聞かれているなぁ、というのが印象的でした!

また、GDG京都のメンバーの兼高さんも英語で発表してくださりました!

IMG_20190210_153921186

Pin-point rebuildable and non-rebuild custom widget from cch-robo

僭越ながら、私も発表させて頂きました!

IMG_20190210_160011292

Build your first wear app from furusin

 

本来は私の発表が最後の予定だったのですが、懇親会のケータリングが届くまで時間が余ってしまいましたので、GDG四国、GDG京都のメンバーより発表を頂きました!

IMG_20190210_163719

 

MVIMG_20190210_164002

 

懇親会の様子

hoge

今回はたくさんの方が懇親会に関するツイートをあげてくださりました!嬉しい!

 

最後に

私たち京都Devかふぇとしては、イベントの共催は初の試みとなりました。

初の共催だし、英語ばっかりだしどうなることやら……と不安はありましたが、参加者の皆様にはとても楽しんで頂けたようで、

運営一同嬉しく思っております!

 

今後は色々なコミュニティと共催等を進め、技術コミュニティの活性化や発展により一層貢献したいと考えています。

ご参加頂いた皆様、ありがとうございました!


2019年02月5日

furusin

フリューにてGDG ミートアップ in 京都を共催します!

こんにちは。ピクトリンク事業部の古川です。

 

この度、GDG京都さん(Google Developers Groups)との共催でGDG ミートアップ in 京都を開催することとなりました!🎉

このイベントには、海外からGDE(Google Developer Experts)が2名来日して登壇してくださります。

京都でGDEが2名も揃って登壇されるのは今回のイベントが初めてとのことです!

非常に貴重な機会ですので、是非お越しください!

イベント詳細

イベント名

GDG ミートアップ in 京都

日時

2019/02/10(日) 13:10 〜 18:30

場所

弊社フリュー会議室 (京都銀行 京都駅前支店 6階)

詳しい行き方はこちらを御覧ください。

 

概要

下記2名のGDEがそれぞれ得意分野に関して登壇してくださります。

Enrique Lopez Mañasさん

登壇タイトル:Kotlin/Native for Multiplatform development

AndroidとKotlinのエキスパートで、2013年からGDEとして活動されています。

iñaki Villarさん

登壇タイトル:Diving in the WorkManager API

こちらもAndroidとKotlinのエキスパートです。

GDGバルセロナやGDGマジョルカ、GDGダブリンにて活動するなど、他方にて活動されています。

 

その他登壇者

GDG京都 兼高さん

登壇タイトル:Flutterに関する話題 (仮)

スマートフォンアプリ開発にて最近ホットなFlutterに関してお話頂きます。

兼高さんはGDG京都のメンバーではありますが、全国の勉強会にも幅広く参加/登壇されており、

Androidも初期バージョンの頃から携わられています。

 

フリュー株式会社 古川

登壇タイトル:Build your first Wear App

非力ながら、私も登壇させていただきます!

技術情報があまり豊富ではないAndroid Wear(Wear OS by Google)のアプリをどうやって作るのかをご説明します。

 

イベントの最後には懇親会もご用意しております!

GDEの方と直接会話できる機会はなかなかありません。

会話は英語になってしまうかもしれませんが、ぜひ勇気を出してお話してみてください!

きっと…きっと誰かが助けてくれます!

下記写真は以前の懇親会でご用意した食事の写真です。しっかりお楽しみいただけるかと思います!

IMG_20180914_200603

 

最後に

今後も、このように色々なイベントとの共催も進めていきたいと思っております!

ぜひお声がけくださいませ〜


2018年12月13日

Gradle Kotlin DSLやってみた

こんばんはこんにちは、フリューのジョンです。
この記事はフリューAdvent Calendar 2018の12/13分となります。

2018/12/15 JJUG CCC 2018 Fall にて 既存アプリケーションでKotlinを導入してみた というタイトルで登壇します。
そのKotlinつながりでGradle Kotlin DSLについて書こうと思います。

Kotlin DSLとは

さてさてGradleのところを調べていると最近Kotlinという単語を見るようになりました。
どうやら Groovyではなく KotlinのDSLで書こうということらしいです。
個人的に触って感じているメリットとしては、「アプリケーションがKotlinならそのままKotlinでタスクなどを記述できる」という点でしょうか。
既存の書き方より優れている点は今のところは思い当たらないです。

Gradleプロジェクトを作成しよう

Gradle Initializrを使ってみましょう。 せっかくだからKotlinプロジェクトを選択します。

スクリーンショット 2018-12-12 11.40.30

downloadできたzipファイルを解凍して、IntelliJで開いてApp.ktにあるmain関数を実行してみましょう。

スクリーンショット 2018-12-12 13.42.30

Hello Worldとコンソールにでましたね。とりあえず、Gradleプロジェクトとしてアプリケーションが作成できていそうです。

Gradleタスクを書いてみよう

以下のようにbuild.gradle.ktsにタスクを追加してみましょう

// build.gradle.kts
tasks {
task("helloWorld") {
doLast { println("hello kotlin dsl world") }
}
}

動かしてみましょう。

$ ./gradlew helloWorld

以上です。hello kotlin dsl worldと表示されましたか?

まとめ

1.0になって間もなく、IntelliJで開いてもエラーと表示されているなど、使っていると壁にぶつかるところは多いと思います。
なので、本当に頑張る場合は、公式のサンプルを見比べながらタスクを作成してみてください。

Kotlin DSLガイド
Kotlin DSLサンプル


2018年09月3日

furusin

AndroidでKotlin Coroutinesを使ってみる

こんにちは。ピクトリンク事業部の古川です。

Androidでは従来ReactiveXが主流ですが、最近話題になっているCoroutinesを使った非同期処理の実装について解説します。

Coroutinesとは?

よく誤解されますが、CoroutinesとReactiveXは全くの別物です。

ReactiveXは非同期処理をストリームで実施するためのものですが、

Coroutinesは、「特定のスレッドに束縛されない、中断可能な計算処理インスタンス」です。

「特例のスレッドに束縛されない」ため、Androidでは非同期処理に用いられることが多いです。

そのためReactiveXとの比較で語られることが多いですが、性質が異なることを意識しておいてください。

Kotlinの公式ドキュメントに

「Coroutines simplify asynchronous programming by putting the complications into libraries.」(コルーチンは非同期処理をシンプルに書けるようにする)

と書いているのも誤解を呼ぶ要因の一つかと思います…

 

Kotlin Coroutinesを導入する

利用するにはbuild.gradleに情報を追加します。

また、Experimentalですので、その情報も追加します。

使い方

今回はサンプルとして、GitHubのAPIをRetrofitでコールしたレスポンスを画面に表示するアプリを作ってみます。

事前準備

RetforitでAPIを叩くために、InterfaceとModelを準備します。

実際に使ってみる

次に、このAPIを叩くメソッドを用意します。今回はViewModelに実装します。

fetchUserメソッドの1行目が最も重要な部分です。

まず返却値の型としてUserをDeferredで返します。ReactiveXだとSingle<User>になると思います。

async(CommonPool)はコルーチン内をスレッドプールで実行する、という理解でいいと思います(こちらを参考に)

後は通常通り、userを返却してあげているだけです。

それでは、このメソッドを呼び出してみます。

単純に「処理開始時にダイアログを表示し、終わったら画面に反映して閉じるだけ」の処理をしています。

launch(UI)は「UIスレッドで実行してね」という意味になります。

ここで .await() を呼んでいますが、これは「この処理が終わるまで続きの処理は awaitする(待つ)」という意味です。

最後に、画面に表示するXMLと画面イメージです。

activity-MainActivity-08302018161310

まとめ

非常に簡単ではありますが、以上でCoroutinesを試してみることができました。

完全にReactiveXをCoroutinesに置き換えることはまだまだ難しいとは思いますが、ReactiveXよりも考えることが比較的少なく、実装も容易ですので

今後はCoroutinesも選択肢のひとつになっていくと思います。

 


2018年08月29日

furusin

Kotlin ExtensionsのParcelizeアノテーションでdata classをスッキリさせる

こんにちは。ピクトリンク事業部の古川です。

今回はKotlinの便利機能である @Parcelize アノテーションについて解説します。

公式ドキュメントはこちらです。

ちなみにこの内容は、2018/08/25に行われたKotlin Fest 2018のセッション(start from Convert to Kotlin by 望月美帆さん)によって少し解説されたものです。

Parcelable とは

Parcelableは、例えばAndroidだとActivity間のデータ通信の際、一時的にデータを保存したい場合に利用します。

Kotlinでは、 バージョン1.1.4からExperimentalとして追加されました。

使い方

利用するにはkotlin-android-extensionsが必要ですので、build.gradleに追加しましょう。

また、Experimentalですので、その情報も追加します。

このアノテーションを利用しなかった場合は次のようになります。

このクラスに次のように @Parcelize アノテーションを追加すると、とてもシンプルになります。

関数すら無くなりました。

もちろん、何か独自のロジックを入れたい場合は追加することも可能です。

ちなみに

このUser.ktクラスをKotlinでなくJavaで書くと、次のようになります。

Javaだと膨大な量ですが、Kotlinだとたったの1行で完結しました!

Kotlin最高!

Kotlinかわいい!