Subscribed unsubscribe Subscribe Subscribe

Islands in the byte stream

Technical notes by a software engineer

Ormaに関する雑談&質問用にgitterのchat roomをつくりました

en: https://gitter.im/Android-Orma/Lobby ja: https://gitter.im/Android-Orma/Ja 背景 GitLab、Slackライクなサービス「Gitter」を買収。有償プラン廃止で何人でも無料で利用可能に。オープンソース化も約束 - Publickey でひさびさにgitterを知って、悪…

カンファレンススタッフ用アプリがあるとよさそう

DroidKaigi 2017お疲れさまでした。スタッフとしては3回目、スピーカーとしては初めての参加でした。 スタッフとしては、受付の誘導、司会、副司会、会場の片付けなどをしました。特に司会はわりと臨機応変に行動しなければならず、部屋ごとにけっこうバラバ…

DroidKaigi 2017で「ORMの選び方」という発表をしました

Ormaの開発の際に他のORMはどういう設計思想なのかを調べたときの知見をもとに、DroidKaigi 2017用に仕上げた発表です。 これ契機にORMについて一家言ある人が増えるといいなと思いながら発表しました。 SQLiteDatabase (SQLiteOpenHelper) を直接つかうかど…

Bit Journeyに転職してKibelaをリリースしました

半年くらいまえにBit Journeyに転職してKibelaを作ってました。AndroidエンジニアからRails + Reactエンジニアへの転向ということになります。 Kibelaはこちら。ようやく本日リリースできました。といっても開発面でいうとこれからが正念場ではあります。 Ki…

Herokuのreview appsでRailsのLetter Opener WebをつかうHack

github.com これのREADMEにもありますが、Letter Opener (-Webも含む)をHerokuで使うにはちょっと注意が必要です。つまり、 Letter Openerはデータを #{Rails.root}/tmp/letter_opener に保存する Herokuはdyno (node) 間でデータのやりとりは出来ない設計 …

Orma v4.2.0 の Relation#upsert() の設計

https://github.com/gfx/Android-Orma Orma v4.2.0 で Relation#upsert() を実装しました。これは、モデルのインスタンスを渡すとその状態に応じて INSERT または UPDATE を実行するというメソッドです。 モデル同士の関連もよしなにしてくれるので、とりあ…

新技術を学ぶ技術と三つの壁とDroidKaigi 2017

こないだの@onkさんのスライドがとても良かったんですよ。 短期間で新技術を学ぶ技術 from Takafumi ONAKA 短時間といいつつ守破離の「離」までいくのに3年かかるといってて、高速道路なんてものはないんだなということがわかりますね。 とはいえ自分自身に…

ObjectBox vs Orma

greenDAOの開発元であるgreenbotが新しいNoSQL ORMのβ版をアナウンスしたようです。 greenrobot.org いわく、マルチスレッドで使いやすく、バイトコード操作のようなマジカルな方法はとらず、マイグレーションを自動で行えてしかも爆速だと。これらの特徴はO…

Rails + React + SSRのもとでレスポンシブにするにあたって現状とっている方法

SSRと絡めようとすると難しくて、いろいろ試行錯誤しました。いまはこういう方向でやろうとしていて、そこそこメンテナンス可能に書けそうだなという手応えがあります。 三行で CSSのメディアクエリのみを使い、Railsでテンプレートエンジンを使うにせよReac…

Ruby extのためのVisual Studio Codeのclang extension用設定を書き出す

Visual Studio Codeの C/C++ Clang extensionのためのいくらかの設定をすると、Ruby extensionを開発するときに補完が効くようになり、開発が楽になります。 C/C++ Clang - Visual Studio Marketplace ところでRuby extensionのCFLAGSなどの設定はわりと難し…

Android SDK 25.2.3から付属のsdkmanager(1)でパッケージのインストールをする

Android SDK 25.2.3にsdkmanagerとういコマンドが新しくく追加されていたようです。 sdkmanager これは、CLIでAndroid SDK packageを管理するためのツールのようです。Gradle Android pluginと同様にlicensesファイルに対応しているので、CIなどで扱いやすい…

Ormaの2016年振り返りと2017年の展望

https://github.com/gfx/Android-Orma 2015年末に開発をはじめたOrmaも、この一年でだいぶバージョンが進んで、年明け時点で v0.20.0だったところが、年末時点でv4.0.2でした。v0.20.0...v4.0.2で21,768 additions and 6,328 deletionsということで、結構書…

ライブラリのバージョニングのしかた

セマンティックバージョニングは守るとして、だいたいこんなポリシーでやってます。 0.0.1 - proof of concept 0.1.0 - とりあえずリリースしてプロダクションに組み込んでみる 1.0.0 - プロダクションに組み込んだ 2.0.0 - セマンティックバージョニングに…

Suffix ArrayをRustで実装した

suffix arrayを一番簡単なアルゴリズムで実装する - アルゴリズム学習(その6) - $shibayu36->blog; を読んで、ちょうど自分も何らかの形で全文検索を一部実装してみようと思っていたのでRustで真似してみました。 Rustを選んだ理由は、以下の理由からです。 …

MBP2016が故障したので返品してMBP2015を注文した

本日のまとめ: MBP2016が故障したので返品手続きをしてMBP2015を注文した。さようならUSB Type C。こんにちはMagsafe2 & HDMI。— FUJI Goro (@__gfx__) December 10, 2016 Macbook Pro 2016 13インチ タッチバー付きモデルを先月購入しましたが、3週間ほど経…

babel-nodeでたてるnode serverをguard-processで管理するときはkexec npm packageが必須

Babel CLIには babel-node というコマンドが付属していて、これはES2015+のスクリプトをそのまま実行できるという便利ツールです。 babel-nodeは大変便利なのですが、guardのpluginであるguard-processとは相性がわるく、babel-nodeで立ち上げたnode server…

Orma v4.0.0 - RxJava2 & SQLBrite-like query observables

GitHub - gfx/Android-Orma: A type-safe ORM for Android as a wrapper of SQLiteDatabase v3.0.0からまだ一ヶ月くらいしかたってませんが、Ormaがv4.0.0となりました。 目玉機能は RxJava 2.x 対応で、これが後方互換性を維持したまま行うのが難しかったた…

vscodeの AlanWalk/markdown-toc extensionで目次の自動生成すると捗るぞ

先日のNode学園祭で standard-readme という規格が紹介されていました。 これを眺めていたら、ミニマムでも目次(ToC)は必要ですよということでした。たしかにToCは読むほうからすると便利なんですよね。 一方でToCのメンテナンスは人間のやる仕事じゃない…

Flowtypeの`flow suggest`がすごい!

flow(1)のコマンドラインオプションを眺めていたら、 suggest というサブコマンドがありました*1。 これは、JavaScriptファイルを引数にとって、そのスクリプトにflowtype annotationを付けるパッチを生成するコマンドのようです。 たとえばこういうスクリプ…

flowtypeのmagic typeは直接使うものじゃないよ

実践投入してわかったflowtypeのメリデメ // Speaker Deck で「Magic typeがドキュメントされてない(のに便利)」という説明がありましたが、それはmagic typeを直接使う想定ではないプライベートAPIからドキュメントに載せてないというだけだと思われます…

OrmaのRxJava2対応プラン

三行まとめ Orma v3.x で RxJava2 対応をいれます。RxJava 1.xのメソッドはこれまでどおり使えて、後方互換製は保ちます Orma v4.x で RxJava2 対応を主とします。RxJava 1.x対応は続けますが、"asObservable1" とリネームさされ、またそれらメソッドはdepre…

DroidKaigi 2017のトーク募集は11/1まで!

droidkaigi.github.io 私もひとつ「Android ORMの選び方」というトークを応募しました。ここ1年ほどOrmaの開発をしているので、その知見を活かしてなるべく公平なORMの比較検討をしたいと思っています。 他に個人的に興味があるのはこんな感じの話題です。誰…

AndroidのCIはlintOptions.textReportを有効にしておくと捗る

ThreeTenABPの差分(v1.0.3...v1.0.4)を見ていて気づいたんですが、Android Lintの結果をテキスト形式で標準出力に出すことができるんですね。マニュアル にも書いてありますが、今日初めて知りました。 lintOptions { textReport true textOutput 'stdout' }…

Orma v3.0.0をリリースしました

Orma v3.0.0をリリースしました*1。 実にv2.6.0から100コミット以上、v2.0.0から8ヶ月後のリリースとなります。 CHANGELOG このバージョンは、内部的には大きく変えたものの、インターフェイス的にはそれほどv2.6.0と変わりありません。v2.6.0で警告なしに動…

Orma v3.0.0-rc2 と内部設計の見直し

Orma v3.0.0-rc2をリリースしました。CHANGESはこちら: Android-Orma/CHANGELOG.md at master · gfx/Android-Orma · GitHub 三行まとめ あるモデルが複数の同じ型のモデルをdirect associationで持てるようになりました 内部的に非常に大きな変更を行ったの…

npm scripts 内では zshの**が使えないのでmochaの場合はそのまま渡すこと

npmのpackage.jsonに以下のように書いていたら、明らかに実行されるファイルが少なくてどうしたものかと思っていました。 "scripts": { "test": "mocha --opts spec/client/support/default.opts spec/client/**/*.spec.js" } 理由は詳細には調べてませんが…

Orma v3.0.0-rc1 for Android Studio v2.2 / Android Gradle Plugin v2.2

Orma v2.x は Android Gradle Plugin v2.2 と同時に使えないという問題がありまして、このたびこれを修正した v3.0.0-rc1 を出しました。RCとはいうものの、中身はdeprecated methodsを消したくらいであまり変えていないので、安定性は v2.6.0 と大差ないは…

#write_code_every_day の試みから1年たってどうだったか

そういえば write_code_every_day 活動をやろうと思い立ったのがちょうど1年くらい前だったなと思いだしたので振り返りです。 この話をしたのは Rebuild: 120: Swiftonomics (gfx) だったかな? で、GitHubの草の現状です(ログアウトしてpublic contributio…

最近はどういうaltJsが使われているのか

Twitterでアンケートとりました。偏りはあると思いますが、採用判断の参考にどうぞ。 おおむね6割がJavaScript (or Babel)、2割がTypeScript、1割がCoffeeScript、Flowはだいぶ少ない、という感じでしょうか。 最近のJavaScript系言語がいくつかありますが、…

dts-gen(1) でJavaScripファイルからdtsを生成する

2016-09-12のJS: Polymer 2.0 Preview、Service Worker入門、JSから型定義ファイルの生成 - JSer.info で gen-flow-files と dts-gen を知ったのでちょっとだけ使ってみました。 gen-flow-files (as of flow v0.32.0) Release v0.32.0 · facebook/flow · Git…

2016年9月現在だとReactアプリのTypeScript採用は時期尚早(※追記あり)

TypeScript化の調査 2016年9月現在(React v15.3.1, TypeScript 2.0-rc)の話です。 いま開発しているウェブアプリのフロントエンドをTypeScript化しようと思ってちょっと調べてみたんですが、今やるのはいくらTypeScript推進派でもちょっと厳しいなと。 Typ…

CircleCIの"Auto-cancel redundant builds"を有効にするとPRごとの冗長なCIをキャンセルできる

2016/7/27 にこんなアップデートがあったようです。 Changelog - We've added the option to auto-cancel redundant builds. Read more, and how to enable it, here: https://t.co/MTjOV7ttkF— CircleCI (@circleci) July 26, 2016 Project Settings → Adva…

PlantUML Web APIをSpark Framework + Kotlinなウェブアプリにしてみた

PlantUML を使うとき、 java -jar plantuml.jar だとほんの小さなダイアグラムの生成にも数秒かかってしまいます。ローカルではそれでいいかもしれませんが、ウェブアプリに組み込むのはちょっとイマイチですよね。 PlantUMLはJava製ツールなのでJavaのウェ…

TypeScript 2.0+NodeJSツールを開発するときのプロジェクト構成

npm dependenciesを更新してGitHub Compare Viewのリンク付きでPRするツールを定期実行する - Islands in the byte stream このci-npm-updateはTypeScript 2.0 (beta) で書いたので、TypeScript+NodeJSツールを開発するときのプロジェクト構成の一例としてざ…

npm dependenciesを更新してGitHub Compare Viewのリンク付きでPRするツールを定期実行する

タイトルに要素を詰め込みすぎましたが、要は CircleCIを使ってbundle updateを定期実行する - Qiita の npm update 版です。web appのJavaScriptライブラリ管理にnpmを使うとき、依存関係のアップデートを継続的に行うためのツールです。 https://github.co…

ExcelからtextareaにコピペするとHTMLのtableに変換するスニペット

ユースケース Excelから社内ブログやWikiに表をコピペしたい 実装 とりあえず paste イベントをうけて処理するのでそのようにする。今回はCodeMirrorで制御されているtextareaなので、CodeMirrorを使ってないない場合は適宜読み替えてください。 ClipboardDa…

公開用DockerイメージにAndroid SDKを含めるのはライセンス違反という話

Android Software Development Kit License Agreementにこういう項目があります。 3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, yo…

Makefileを自己文書化するハックを注入するスクリプト: inject-make-help

Re: Makefileを自己文書化する make2help | おそらくはそれさえも平凡な日々 この主のコマンドのインストールを強制するのめんどうだし、自己文書化hackを注入&管理するコマンドのほうがうれしそう。 / “Makefileを自己文書化する `make2help` | おそらくは…

git branch の結果を時間順にソート: git branch --sort=-authordate

id:kazuho さんと「gitのbranchを消すべきか否か」という話をしていて、ぼくの「ローカルにせよリモートにせよbranchが増えすぎると目的のブランチを見つけられない」という意見に対して次のエントリを教えてもらったのでした。 git branch の結果を時間順に…

はてなブログでRust対応のアップデートをしてほしい!

お題「シンタックス・ハイライト機能で対応してほしい言語」 Rust のシンタックス・ハイライトは対応されているようですが、この日記を書いた時点だと、extern, match, where などがハイライトされていなくて、対応バージョンが古いような気がします。シンタ…

github.comのアカウントは仕事用と私用で分ける方がいいの?

一行まとめ:分ける理由・分けない理由両方あるのでどちらにすべきということはない 会社で github.com (not GHE) を採用するにあたって、アカウントについてガイドラインを制定すべきなのかどうか悩んでいます*1。とりあえず現状把握のためにアンケートを取…

Android Instant Apps FAQをざっと眺めた

Google I/O 2016で発表されたアプリをインストールしなくても使える "Android Instant Apps" ですが、技術が不明ということで様々な憶測を呼んでいます。 developer.android.com これについては、すでにFAQがあっていくつかの疑問には答えられていました。 h…

GlideのバックエンドをOkHttp3にしてカスタムインスタンスを与える

github.com GlideのバックエンドをOkHttp3にするには、 okhttp3-integration を使います。 dependencies { compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar' } これだけで、GlideのバックエンドHTTPクライアントがOkHttp3になります。 し…

JRubyをライブラリとして使う(Android編)

三行まとめ JRuby 1.7.24 (Ruby 1.9.3相当) はAndroidから普通に使える JRuby 9.1.0.0 (Ruby 2.3相当) はOracle JDK固有のクラスを使っていてAndroidでは使えない JRuby on Androidに興味のある開発チームはいるようなので、しばらくすると使えるようにはな…

Kotlin Coroutines の様子を眺める

先日、JetBrainsのブログでKotlinにコルーチンが導入されるという発表がありました。 以下のリポジトリで先行事例の調査や仕様の検討が行われています。 https://github.com/Kotlin/kotlin-coroutines 先行事例の調査は以下のissueです。 https://github.com…

ViewPagerを使った読書画面の基本的な実装

電子書籍関係者で勉強会をやったので資料を公開します*1。 speakerdeck.com 追記: Fragmentの状態の復帰はFragment#onViewStateRestred(Bundle)) でできるのではという指摘をいただきました。試したところ想定通り動いたのでコードの方は修正済みです。 デモ…

Android N preview-2 でJava8 Streamが実装された!

Android N preview-2 がきましたね。 Android N Developer Preview 2, out today! | Android Developers Blog AOSPにはまだtagがきていませんが、masterブランチをみるとStream APIが実装されています。 追記: android-n-preview-2 tagがきてました android-…

Google Maps Android APIでsetMyLocation()を正しく設定する

AndroidアプリでGoogle Mapをライブラリとして使うGoogle Maps Android APIというのがGoogle Play servicesにあるのですが、こいつの setMyLocation() まわりがここ1年でずいぶん変わりました。 Android 6.0 / Google Play services 8.4.0現在、これを正しく…

Hugoの @DebugLog アノテーションが @TargetApi を無効化するようにみえる件

Hugo便利ですね!ただtraceするだけのログを吐いたりメソッドの実行時間を測定するためにコードを書かなくてよくなるのでだいぶ使い勝手がいいデバッグ用ライブラリだと思います。 さて、Hugoを併用しているプロジェクトで@TargetApi をつけているのにlintが…

Android Orma v2.4.0でtype adapterを一つのクラスに集約できるようにした

Orma v2.4.0をリリースしました。差分は大きいですが、アノテーションプロセッサのリファクタがほとんどです。 Ormaのtype adapterは static type adapters というやつで、コンパイル時にtype adapterの検索と呼び出しの埋め込みを行うので動的に処理するも…