サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
sys1yagi.hatenablog.com
ユビーAI問診は、Ubieが提供する医療機関向けのプロダクトです。患者さんに対して問診を実施し、医師向けのカルテを作成します。現在は大きく分けて、タブレットとスマートフォンの2つの利用方法があります。 タブレット用、スマートフォン用の画面 これらはどちらもWebアプリケーションとして実装していて、フロントエンドはReact/TypeScriptで書いています。 問診のプロセスは画面遷移が多い ユビーAI問診は紙の問診票で書くような定型的な質問だけでなく、来院した目的に合わせて様々な質問を行います。 例えば「頭が痛い」といった症状を入力した場合、発症時期や部位、痛みの程度、持続時間、経過、頻度などを掘り下げて、更にそれらの回答内容から疑われる疾患に関連する質問を重ねていきます。あるいは「足をひねった」など外傷に関する場合は、スポーツをしていたかや事故かといった状況を聴取したりします。問診の長
Ubie Advent Calendar 2019の9日目です。 チームコラボレーションツールっていっぱいありますよね。 UbieではSlackやメール、Notion、Google Hangouts、Jira、Figma、Github、HERP、Salesforceなどのほかに「Miro」というチームコラボレーションサービスを使っています。 Miroってなに Miroはオンラインのホワイトボードプラットフォームです。 もともとRealtime Boardっていうサービスでしたが、最近(といっても2019年の序盤)Miroって名前になったようです。 miro.com Miroは、 ほぼ無限の2次元空間に リアルタイムで同時に複数人で 図を書く ことができます。 図を作る際にテンプレートを選べますが、最初に配置されているアイテムが異なるだけで操作は同じです。 Miroのテンプレート Ubieで
Youtube Android Dev Summit '19のセッション! www.youtube.com Android Studio 4.0 とJetpack Composeのセットアップ Jetnewsというサンプルアプリを試したり、新規プロジェクトでJetpack Composeで始めたり、 既存のプロジェクトにJetpack Composeど導入する方法について書いてある。 developer.android.com Jetpack Compose チュートリアル Jetpack Composeの基本の解説。Composable functionsやレイアウト、スタイル、Themeなどの説明。 developer.android.com Codelab ↑のドキュメントがCodelabになった感じ。わかりやすい。 codelabs.developers.google.com Sa
Kotlin Fest 2019楽しかったです。 今回は「Kotlinコルーチンを理解しよう 2019」を話してきました。 資料作りの様子、各セクションを作る時になに考えてたか、反省点などまとめます。 前回と今回でロゴの形がちょっと変わってる 資料 コルーチンとはなにか、から実際使ってどうテストするかまでを45分でまとめるのはなかなか難しかったですが、一応網羅的にやれたか!?とは思っています。作る時はヒイヒイ言っててなにも考えてなかったけど改めてみると、これから触っていく場合に最初に読むものとして結構いいかもしれんと思うなどしました。 speakerdeck.com コルーチンとはなにか、なにがうれしいのか 概念については自分のなかではある程度理解できてたものの、対象コルーチンや非対称コルーチンについて曖昧だったので改めて調べた。 新雑誌「n月刊ラムダノート」の『「コルーチン」とは何だった
今年もKotlin Festが開かれますね。もうセッションの応募はされたでしょうか? トラック数が増えたので今年はさらにいろんなジャンルが聞けるのではないかとワクワクしています。Kotlin/JSとかKotlin/Native, MPPが特に気になります。 kotlin.connpass.com とりあえず4つほど応募しました。応募内容は次のとおりです。 他の方々の応募状況も見てみたいっす 言語機能 Kotlin コルーチンを 理解しよう 2019 概要 Kotlin コルーチンは2017年3月にexperimentalな機能としてKotlin 1.1とともに登場しました。 その後2018年10月に正式版の1.0.0がリリースされるまでに、様々な変更がありました。 特に2018年9月に加えられた並行性の構造化に関する変更は、それ以前のコルーチンのコードが利用できなくなるなど、とても影響が大
AndroidアプリでロギングするといえばPureeかなと思います。 かなり安定しているしいい感じに動く。 ただコードベースがJavaなので、たま〜に不具合でた時などに追っかけるのが結構たいへんだったり、 Gsonに依存しているので、別のJsonライブラリ使ってる場合ちょっとな〜ってなったりすることがあります。 かねてから何らかの形で書き直しできないかな〜と思いつつ時間が取れなかったんですが、 コルーチンベースでpureeやってみっか— 八木 (@sys1yagi) 2019年5月17日 ということでついに手を出してみたところ、結構スッと出来上がったのでリリースします。 LocoはLog Coroutineの略です。 https://github.com/sys1yagi/loco 構造 Locoは次のような構造を持ちます。 Smasher: ログをシリアライズする // ここだけ料理つな
※こちらは古いので FlowのchannelFlowを使ってRxBindingを置き換える - visible true を参照ください。 Kotlin Coroutine 1.2.xでFlowというコールドストリームをサポートするクラスや関数群が登場しました。 Flow - kotlinx-coroutines-core 次のような感じでめっちゃRxJavaっぽい雰囲気ですが動作の仕組みはコルーチンでやってる感じです。 val f = flowOf(1, 2, 3) // Flowを固定値で作る .map { it * 2 } .flowOn(Dispatchers.IO) // 実行コンテキストを設定できる runBlocking { f.collect { // この呼出しで初めて値が送出され始める println(it) } } Channelはホットストリームなので取扱いが難しい
Google Play App Dojoで話してきました。Google Play App Dojoは非公開イベントなので全体的な内容は言えないんですが、どの発表もおもしろい & 濃いので、もし参加のチャンスがあったらぜひ行ったほうがいいな〜と思いました。 Androidと非同期処理 とCoroutine1.0.0 資料はコチラ 話した事 詳細は資料を見て下さい。 その他リンクなど Android Suspenders Android Dev Summit '18のコルーチンのセッションです。資料読んだあと見るとわかりが深まると思います。Androidと非同期処理 とCoroutine1.0.0 では触れられなかったところ(Android APIをコルーチン化する、複数回値を返却するケースなどなど)が結構あるのでぜひ見て下さい。 www.youtube.com 資料内でリンクしてるやつ Re
Structured concurrency – Roman Elizarov – Mediumでは、Kotlin coroutine 0.26.0でCoroutineScopeを導入した経緯などが書かれているんですが、タイトルのStructured concurrencyってのが結局なんなのか本文中にはあんまり出てこないんですよね。 んで、CoroutineScopeの動作の理解に精一杯で、coroutineScope関数がなんなのか、どういう時に使うべきなのかよくわからないし、ましてやsupervisorScope関数なんて言われた日には意味が不明なわけです。 とりあえずlaunch関数内でasync関数呼び出したら駄目なんだな〜ふ〜んなんで? Notes on structured concurrency, or: Go statement considered harmfulを頑張
Roomに2.1.0-alpha03からsuspend関数(コルーチン)のサポートが入りましたね。ちょっと気になったのでいくらか触ってみました。 Architecture Components Release Notes | Android Developers 何ができるようになるのか DAOでsuspend関数を宣言できるようになりました。具体的には次です。 @Dao interface UserDao { @Insert suspend fun insert(user: User) @Query("SELECT * FROM user") suspend fun getAllUsers(): List<User> @Delete suspend fun delete(user: User) } CoroutineScopeのなかでこれらの関数を呼ぶとノンブロッキングで各種操作がで
日進月歩。夏に話した頃とは大きく変わってしまったKotlinコルーチン。 Kotlin Fest 2018でコルーチンの話をしてきた - visible true ↑はコルーチンの概念と実現の仕組みを中心に置いたので、その辺はまぁ変わってないんで問題ないんですが、後半の実際にコルーチンを使う場面に関してはすでにdeprecatedっていうか、そのまま書いても動かないくらい変化してしまいました。 ということでざっくりメモ 0.25.xから1.0.0までの主要な変化 基本的にはリリースノートと関連するissueの議論を読めば大体わかります。 https://github.com/Kotlin/kotlinx.coroutines/releases [0.26.0] CoroutineScopeを導入し既存の書き方がdeprecatedに 9/12にリリース。kotlin festから2週間やん
adventar.org タイトルですでに完結していますが。 アルコール飲むと寝る前にプログラミングできない 年齢の所為もあるんでしょうけど、夕飯時にアルコール飲んじゃうと風呂上がって、さ〜てプログラム書こうかってなっても酔っ払っているのでついつい漫画読んだり映画見たりゲームしたりしてゴロゴロしてあーまぁアルコール入れたしもう寝るか〜みたいになってプログラミングせずに寝がちなんですよね。 じゃあ飲まなければいいのでは?という事なんですが、しかし、アルコールっておいしいですよね。ビールだとサントリー ザ・プレミアム・モルツ 〈香る〉エールとか好きなんですよ。なので飲みたいは飲みたい。でもプログラミングもしたい。 ノンアルコールビールを飲むと酔った気がするけど実際は酔ってない 当たり前なんですがノンアルコールビールはビールの味わいやのどごしがありながらもノンアルコールなので酔わないんですよ。と
kotlin.connpass.comでコルーチンに関する話をしてきました。 Kotlin コルーチンを理解しよう スライドはコチラ。音声や動画が無くても大体読めばわかる内容になっていると思います。 流れ 6月末にひつじさんからお手紙がとどく 直前の技術書典4でKotlinのコルーチンを使う前に自前で実装してみるという話を書いていたこともあり、 その辺をベースにした話の組み立てでできそうな気がするということでシュッと受けた。 結果的にめちゃくちゃ大変でしたが最終形はなんとかまとまったので良かったです。 調べたことや登壇時は触れられなかったことなど 話のベースは頭の中にあったものの、コルーチンの概念そのものが一体どういうものなのかあまり深く理解していなかったこともあり、その辺の調査もしなきゃな〜と手を動かし始めるとそのままどツボへ真っ逆さま。今回話の流れや時間的に触れられなかったことなんかを
Stetho便利ですよね〜。 最近Stethoを置き換えるfacebook/Sonarというライブラリが登場しました。 メトリクスツールのSonarとかDAWのCakewalk SONARとかとかぶってて名前紛らわしいっすね〜 facebook/Sonarでできること StethoはAndroid向けのライブラリであったのに対し、SonarはAndroidとiOSの両方の環境をサポートしています。 また独立したElectronアプリを提供していて、Chrome Dev Toolsをポチポチする必要がなくなりました。やったね。 SonarにはBuilt-inのプラグインがいくつかあります。とりあえず現状あるやつを紹介しときます。 Logcat Logs · Sonar SonarのElectronアプリを起動するととりあえずLogcatが見れます。アプリ側で特に対応とか入れなくても適当につな
nativechainとは nativechainはブロックチェーンの基本的な概念を200行のjavascriptで実装したものです。 https://github.com/lhartikk/naivechain nativechainは次の実装および制約を持っています ノードをコントロールするHttpインタフェース Websocketを使ったP2Pノード データ(ブロックチェーン)を永続化していない Proof of WorkやProof of Stakeはない。無条件でチェーンにブロックを追加できる Kotlinで実装する ブロックチェーンの基本的な概念を学ぶには実装するのが手っ取り早いよね〜という事でnativechainを写経してもいいんだけど、どうせならKotlinで書いてみたいよね〜という事でKotlinで実装しました。 GitHub - sys1yagi/nativechai
Kotlin 1.2.0出ましたね。 主に新しい言語機能についてざっくり感想を述べます。 via What's New in Kotlin 1.2 言語機能 アノテーション上でArrayリテラルをサポート 今までは次のようにarrayOfって書いていたけど、 @Singleton @Component( modules = arrayOf( AppModule::class, DataModule::class, ... ) ) interface AppComponent : AndroidInjector<HogeApplication> { 次のように書けるようになる。 @Singleton @Component( modules = [ AppModule::class, DataModule::class, ... ] ) interface AppComponent : And
献本頂きました。ありがとうございます。 Kotlin in Actionとは Kotlin in ActionはJetBrains社でKotlinの開発に参加しているDmitry Jemerov氏とSvetlana Isakova氏がJava開発者向けに書いたKotlin1.0の解説書です。 Kotlinが生まれた経緯、Kotlinの言語機能に関する網羅的な解説、高度な利用法の解説がどっさり400Pくらいに渡って書かれています。 原著が2017年2月発売なので、ちょうどKotlin 1.1がリリースされる直前です。ですのでKotlin 1.1以降に関する内容は含まれていません。 1.0と1.1や1.2はそこまで差分はないので、本書で十分Kotlinを学べると思います。 Kotlin in Actionのここがいい 本書のいいところはKotlinのリード設計者のAndrey Breslav氏
Android Architecture ComponentsのViewModelとHolderFragmentとActivity-Fragment間通信と。 - visible trueを書いたあと、 ああ、ViewModelでActivity-Fragment間通信するやつ、FragmentDialogでやるとよかったのか— 八木 (@sys1yagi) August 23, 2017 ということで試したら行けました。 Source https://github.com/sys1yagi/aac-viewmodel-with/tree/master/fragment-dialog MainViewModel コールバック的な値をLiveDataで定義する。今回はUnitにしてるけどなんでもよさそう。 class MainViewModel : ViewModel() { val dia
Android Architecture ComponentsのViewModel周りの実装を読んでいくとふーんってなったのでActivity-Fragment間通信やれそうだしやってみたらいけたなーそりゃそうだねみたいな話 Android Architecture ComponentsのViewModelとViewModelProviders Android Architecture ComponentsのViewModelは次のような抽象クラスである。なーんにもない。 public abstract class ViewModel { @SuppressWarnings("WeakerAccess") protected void onCleared() { } } もう一つApplicationを安全に保持したAndroidViewModelがある。 public class And
peaks.cc Android アプリ設計パターン入門 ある日 こんなこと書きます 個人的な思想としてアーキテクチャはチームのためにあると思っています。なのでそういう感じの章を書きます。章の紹介文を引用しておきます。 アーキテクチャはチームのために存在しています。チームとは人です。すなわち人がプロダクトを正しく作るためにアーキテクチャは存在しています。人を支えないアーキテクチャは意味がありません。Androidが出た当初は、限られたリソースの中でうまく動作させるために、組み込みアプリケーションの方法論が重要でした。 時代は進み、いまやAndroid端末のスペックは一昔前のPCと遜色がありません。提供する機能は複雑化し、画面も増加し、品質の要求は上がり、開発規模が増大して関係者も増えました。今こそアーキテクチャの出番がやってきたというわけです。 本章では中長期的にチームでAndroidアプ
Clean Architectureを雰囲気でしか理解していなかったんだけど、なんでだろうな〜って考えるとあの図とか説明文がややこしいからだな〜と思った。 抽象的なやつはええねん、具体をくれ具体を〜、と思ったので、Android-CleanArchitectureのサンプルコードをコンポーネント図のようなものにおこした。 Android-CleanArchitecture Sample Code 実際にサンプルのソースを眺めると、レイヤの接続のための実装やAndroid固有(NavigatorなどIntentを処理するようなやつ)の実装などが混ざっていて、概念図とソースだけでは結構分かりづらい。しかもFragmentでActivityをキャストして使ってたり、UserCaseのコールバックをPresenterのインナークラスのObserverでやってたり、DataSourceは呼び出し毎に
Add AOT gzip content-encoding support for main build files. 2016/12/30 https://github.com/vercel/next.js/commit/29c226771ce8b5b26632c8e7753e69f7407933b4 AOTってなんだ?と思って引っかかった。 Ahead of Timeの略で、実行前に処理をするという意味のようでした。 差分を見ると、build時にassetsをgzipにするほか、main.js、common.jsをレンダリングのタイミングでAcceptヘッダを見てgzipにしています。 Prevent prefetcher from making identical requests. 2017/01/05 https://github.com/vercel/next.js/commi
Rx Ja Night Vol.2 - connpassで「 Androidの非同期処理をKotlinコルーチンで行う」という話をしてきました。 スライドで使っているコードは次のリポジトリに置いています。 github.com 今回取り扱った非同期処理の範囲 スライドやリポジトリのREADME.mdに大体書いているのですがコチラにも載せときます。 詳細な説明はスライドやリポジトリを参照してください。 次の非同期処理をコルーチンで実現します。 単発の実行 直列の実行 並列の実行 + エラーハンドリング キャンセル 環境 すべてKotlinが提供する標準の機能を用います。 implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-4" implementation "org.jetbrains.kotlinx:kotlinx-c
RecyclerViewなどでViewDataBindingを使う時に次のように書くのめんどくさくて。 class ViewHolder(val binding:ListItemCommentBinding) : RecyclerView.ViewHolder(binding.root) override fun onCreateViewHolder(parent: ViewGroup, type: Int) = ViewHolder(ListItemCommentBinding .inflate(LayoutInflater.from(parent.context), parent, false)) こういう感じにViewGroupに関数生やすと、 ViewExtensions.kt inline fun <reified T : ViewDataBinding> ViewGroup.i
AndroidでDataBinding周りミスるとめっちゃエラー出て辛いですね。辛いのでDataBindingのエラーを抽出するスクリプトを書きました。スクリプトはかなり雑なので適宜いい感じにしてください。 extract_data_binding_error.rb #! /bin/sh exec ruby -S -x "$0" "$@" #! ruby state = 0 while str = STDIN.gets break if str.chomp == "exit" case state when 0 state = 1 if str.match(/.*Found data binding errors.*/) when 1 state = 2 if str.match(/.*e: .*/) next if state == 2 print str end end gradleの
mastodon4jをリリースしました。Kotlinで書かれていて、Javaからでも使えるように今後チューニングしていきます。現在の最新は0.0.3です。 最初はDroiDonの副産物としてmastodon4jを実装していて、まぁだれか出すだろうと思っていたけど1週間経っても出てこないので自分で出すことにしました。 公式ドキュメントのAvailable librariesに載せてもらえてやっぴー。 github.com mastodon4j github.com 0.0.1 mastodon4jでmastodonのAPI documentにかかれているデータ、メソッドをすべて実装 mastodon4j-rxで一部のメソッドを実装 0.0.2 Release v0.0.2 · sys1yagi/mastodon4j · GitHub ユーザ名/パスワードで認証する Apps#postUser
Kotlin 1.1でいくつか標準ライブラリに追加された関数があるのでちら見しながら感想を述べます。 Kotlin 1.1: What’s coming in the standard library | Kotlin Blog T.also() let(), apply(), with(), run()に新たな仲間が。 @kotlin.internal.InlineOnly @SinceKotlin("1.1") public inline fun <T> T.also(block: (T) -> Unit): T { block(this); return this } 内容としてはlet()の型1つ版って感じです。let()は引数と戻り値の型が別の定義になっていたのでラムダ式の末尾に戻り値を書かないといけませんでした。also()では引数が戻り値になるのでそうした対応が不要になります
DroidKaigi 2017 3/9 15:10~ Room4で発表しました。 発表の内容 KotlinはJavaという話です。 感想 それなりに練習したけどわりと噛んだりつっかえたりしたのでもっと練習が必要だな〜と感じた。内容については前日までかなり色々迷って紆余曲折あったけど結果的に、Kotlinにそこまで詳しくない層に対してKotlinはそんなに難しくないということが伝えられる内容になったんじゃないかなと思う。 KPT K 今回は前回ほど準備で焦らなかったのでよかった。テーマ設定がわりと明確だったのが良かったんだと思う 前日のパーティで励ましあえてよかった。不安すぎて「こういうこと話そうと思ってるんですよね〜」とか話しかけまくって「おーおもしろそうですね」みたいな反応を収集して気持ちを落ち着けてた。次回は主に励ます側に回りたい。 直前はナーバスになったけど生活サイクルに乱れはそこま
はじめに これはAndroid Advent Calendar 2016の20日目のエントリです。 本エントリではAndroidアプリケーションのビルド体験を改善するリモートビルドサービス Cyborg Build を紹介します。 背景 以前AndroidアプリケーションをGoogle Compute Engineのインスタンスでビルドする - visible true でクラウド上にインスタンスを作ってAndroidアプリケーションのビルドを代行させる方法について書きました。エントリでは低スペックなインスタンスでの試用でしたが、その後いくつかのインスタンスを試しGCEではn1-highcpu-8(vCPU x 8、メモリ 7.2 GB)くらいのスペックがパフォーマンスとコストのバランスが良いとわかりました*1。 パフォーマンスとコストのバランスが良いと言ってもn1-highcpu-8は一
次のページ
このページを最初にブックマークしてみませんか?
『visible true』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く