サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
hydrakecat.hatenablog.jp
chrome-skk v0.1.10を公開しました。インストール方法などはREADMEを参照ください。 もともとjmukさんがhttps://github.com/jmuk/chrome-skkとして公開していたレポジトリをフォークさせてもらいました。本当はChrome Web Storeに公開したかったのですが、Manifest V3に移行する必要があり、service worker化に関するバグが意外と時間がかかりそうだったので、先にzip形式で公開することにしました。 SKKはもう10年近く愛用しているIMEで、1年前に私用のノートパソコンをPixelbookにしたことがきっかけでChromeOS用のSKKの需要が自分の中で高まりました。幸い、上記のjmukさんのレポジトリを見つけたので、適当に変更して手元で快適に使っていたのですが、せっかくなので公開した次第です。 どれくらいChr
さいきん『浮動小数点数小話』という同人誌を読んでFMA (Fused Multiply-Add)の二段階丸め誤差(double rounding error)について色々と知る機会があったのでまとめておく。ついでにFMAに関するOpenJDKのバグっぽい挙動を見つけたのでそれも併せて記しておく。 FMA (Fused Multiply-Add)とは FMAは以下のような演算のことを呼ぶ。 この演算自体は行列の乗算やベクトルの内積の計算でよく現れるものであるが、通常の浮動小数点数の乗算と加算を別々に行うと誤差が出るので一度の演算で正確な値を算出したいときに用いる。たとえばC言語(C99)では fma、fmaf、fmalという3つの関数が導入されているらしい。 FMAの実装における二段階丸め誤差 FMAはターゲットとなるCPUのアーキテクチャがFMA命令をサポートしていればその命令を直接呼び出
これはなに 自分がここ2年ほど趣味として競技プログラミングをやった経緯と感想です。いわゆるプログラマの定年と呼ばれる35歳を過ぎてから始めたのですが、思ったよりも楽しめました。自分のようなシニアと呼ばれるプログラマが競プロに興味を持ってくれたらいいなと思って書きました。 競技プログラミング(競プロ)とは 競技プログラミング(以後、競プロ)は、プログラミングをして順位を競うコンテストです。コンテストはたいていオンラインで毎週のように開かれており、誰でも参加できます。形式としては、与えられた時間内にいくつかの問題を解くコードを提出して、その正解数と提出までにかかった時間を競うというものです。たいていは、コードの実行時間および使用メモリに制限があり、その制限内で実行できるコードを書く必要があります。またコードが正解かどうかは出題者が用意したテストケースをパスするかどうかで判定されます。 多くのコ
TL;DR 11月中旬にmixiを退職してGoogleに転職しました 引き続きAndroidアプリを作っています mixiのみてねチームもとてもいいところなので、興味がある人はぜひ 11月の中旬からGoogleでソフトウェアエンジニアとして働いています。勤務先は引き続き渋谷で、やっていることもAndroidアプリを作っているのでそんなに変わっていません。 よいチームに巡りあうことができ、毎日たのしくやっております。 一方で上司も含めてチームに日本語話者がほぼいない状況は初めてで、自分の英語のできなさを噛みしめつつ、がんばっています。 みてねは大企業の新規事業部でしたが、POの笠原さんとさえ話をつければ物事が進むところや個々に大きな裁量が与えられるところなど、スタートアップ然としていて楽しかったです。 メンバーもよい人たちばかりで、互いに敬意を持って働けるよいチームでした。興味がある方はぜひ
『データ指向アプリケーションデザイン』を読んだ。たいへんおもしろかった。技術書でこんなにわくわくしながら一気に読んだのは『Androidを支える技術』以来かもしれない。 データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 作者: Martin Kleppmann,斉藤太郎,玉川竜司出版社/メーカー: オライリージャパン発売日: 2019/07/18メディア: 単行本(ソフトカバー)この商品を含むブログを見る 本書はソフトウェアシステムの設計について「データ」という観点からまとめたものだ。もちろんデータベースは登場するが、それだけでなくJSONなどのデータ形式、RPC、メッセージキュー、全文検索インデクス、バッチ処理やオンライン処理も等しく「データ」という観点から扱っている。特筆すべき点は、理論だけでなく実際のミドルウェア製品を引き合いに出しつつ具体例を
以下は元々Fablic在籍時の2017-10-05に会社の技術ブログinFablicに投稿した記事(http://in.fablic.co.jp/entry/2017/10/05/090000)でした。inFablicが閉鎖されてしまったため、会社の了承を取った上で転載しております。 元記事にリンクを貼っていただいていた方に対しては大変お手数なのですが、こちらにリンクし直していただければ幸いです。 こんにちは。Androidエンジニアの黒川(@hydrakecat)です。 みなさん、Pull Request(PR)は書いているでしょうか? PRを出したあとの1つの悩みに、なかなかレビューしてもらえないというもがあります。 長い間放置されて、ようやくレビューしてもらったときには、既に自分の変更内容を忘れていたり、ベースブランチとのコンフリクトが大量に起きていたり、とレビューが溜まるのは、レビ
TL;DR 4末でFablicを退職してフリーランスをやっていました 8/1からmixiに入社し、家族で写真を共有するサービス「みてね」の開発に携わる予定です 業務委託で働いているだけですが、 https://kibe.la を作っている BitJourney はいい会社なので興味がある人はぜひ その他 Too longと書きつつ、ぜんぜん長くなりませんでしたが、そんな感じです。何社か話を聞かせていただき、ありがとうございました。また、向こうから声をかけていただいた企業もいくつかあり、感謝しております。 「みてね」は、試しに1日だけ働かせてもらったところ、チームの感じが良さそう、かつ、大企業だけれど新規事業でスタートアップっぽい雰囲気なところが気に入って入社を決断しました。 BitJourneyは前からフリーランスで働いてみてないかと声をかけていただいており、いい機会だからと働かせてもらい
明日から DroidKaigi 2018 が始まりますが、僕は2日目 2/9(金)の 11:20 から Room 2 で「Surviving a Discontinuous World」というタイトルで話します。 この話は初心者向けに、Androidアプリ開発でよく陥る罠を「不連続性」という観点から説明しようという試みです。 自分の持論なのですが、Androidアプリ開発でもっともバグが起きやすいのは非同期処理とライフサイクルだと思っています。この両者を不連続性という観点からまとめて説明しつつそれに対するアプローチやヒントを紹介したいと思っています。 オフィスアワーも予定しているので、質問のある方はぜひお気軽に声をかけてください。 https://droidkaigi.jp/2018/timetable?session=16933
ソフトウェアエンジニアと英語の話というのは、しばしば話題になります。 それだけ多くの人が英語について気にしていると思うのですが、「英語やらなきゃ」と言っている人に話を聞くと意外と動機が漠然としている印象があります。 果たして日本企業で働くソフトウェアエンジニアにとって英語は必要なのでしょうか?必要だとしたら、どういう英語が必要なのでしょうか? この記事は、そのあたりの疑問を自分なりに整理するために書きました。 いつもの固い記事とは違って、きちんと下調べもしていないし、勢いで書かれた内容となっていますが、ご容赦ください。 なお、この記事はエンジニアの英語力 - 怠惰を求めて勤勉に行き着くに触発されて、 Androidアプリのビルド待ち時間に書かれています。エモい記事を書いてくださったしろやまさんと、Androidアプリのビルド時間、それに業務時間中に記事を書くことを快く許してくれた会社に感謝
JavaにはあるけれどKotlinにないものの1つに、クラスメソッドやクラス変数があります。 この記事では、そのクラスメソッドとクラス変数をKotlinではどう定義すべきかという話をします。 より詳細に言えば、メソッドや定数*1をtop-levelで宣言するのとcompanion objectに宣言するのとどちらが良いかという話です。 Java -> Kotlin 自動変換 JavaからKotlinへの自動変換を使ったことのある人は、Javaのクラスメソッドや定数がcompanion objectに変換されることに気付いたでしょう。 こういうJavaクラスがあったとして、自動変換をすると、 package shape; public class Circle { public static final double PI = 3.14159265358979323846; private
ソフトウェア・エンジニアを長くやっていると、自然と得意分野というものが出来る。 自分だったら、Androidアプリ開発やJavaの仕様についてはそれなりに知っているつもりだけれど、LinuxカーネルやGPUについて詳しいとはお世辞にも言えない。 得意分野というと聞こえはよいけれど、それは裏を返すと、他のことを学ぶのに及び腰になるということだ。さっきの例でいえば、LinuxカーネルについてもGPUについても知っておくにこしたことはない。それでも、「興味はあるけれど、いますぐに必要じゃないからいいか」という気分になって後回しにしてしまう。 この記事で紹介する『Androidを支える技術』はそういう知っておくにこしたことはないことを解説している。 『Androidを支える技術』とは Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plu
2016年がもうすぐ終わってしまう。あと10日足らずだ。 今年は色々とあったので、ブログにまとめておきたいと思ったのだけれど、ダラダラと羅列するのも芸がないし、ここはwakatimeというサービスを使ってコーディング時間と一緒に振り返ってみようと思う。 ちなみに、このwakatimeというサービスは無料で一週間分のコーディング時間*1が記録できるもので、バロメータのようなものとして愛用している。課金すると閲覧可能なログが1週間から1年になるそうだ。 今回は、たまたま1年分のログを一定期間閲覧できるという限定解除ボーナスのようなものを見つけたので、それを使ってみた。この年の瀬に発見したのはタイミングが良かった。 1月〜3月 初っ端から申し訳ないが、どうやら最初はこのサービスをデスクトップのIDEにしか入れていなかったようで、その頃のMacでやっていた仕事時間はログされていない。 今年の1月は
これはRxJava Advent Calendar 2016の第14日目の記事です。前回はTestSubscriberやTestSchedulerを使ってRxJavaに関わる単体テストのしかたを説明しました。 この記事では、それらでは足りない場合の奥の手、スケジューラを差し替える方法について説明します。 TestSubscriberやTestSchedulerでは解決しない場合 以下のコードを見てください。これは前回の記事で使用した AsyncService をラップした WrappedService のテストです。このラップが適切かどうかは、措いておきましょう :-) @Test public void testWrappedService() { final WrappedService service = new WrappedService(new AsyncService());
これはRxJava Advent Calendar 2016の第12日目の記事です。 RxJavaは非同期処理を扱うライブラリですが、それ故にRxJavaのからむ単体テストは一筋縄でいかないところがあります。この記事と次の記事では、RxJavaでの非同期処理テスト特有の問題と、その解決方法を説明します。なお、基本的に RxJava 1.x を対象としていますが、必要に応じて RxJava 2.x についても触れます。 この記事の続編はこちらになります。 非同期処理の単体テストの難しさ 非同期処理の単体テストは一般に難しいものです。試しに以下のコードを実行してみましょう。 @Test public void testDoSomething() { new AsyncService().doSomething() .subscribe(s -> assertEquals("success",
これは RxJava Advent Calendar 2015 の第22日目の記事です。昨日は kazy さんによる RxJava 2.xについて でした。 この記事では、 RxJava を理解するために自分が RxJava をどのように捉えているか、という話をします。なお、自分は ReactiveX や Reactive Functional Programming について詳しいわけではないので、その方面の理解の助けになるものではありません。どちらかといえば、RxJava という特定のライブラリをこう理解しておけば全体の挙動を把握しやすいのではないか、という生活の知恵のようなものになります。RxJS や他のライブラリではまた異なる実装かもしれませんのでご留意ください。 RxJava は非常に強力でよく考えられたものですが、ソースを見て挙動が直感的に分かるとは言えないライブラリです。本稿
これはKotlin Advent Calendar 2015の第8日目の記事です。昨日は n_yunoue さんによることりん、ビッグウェーブに乗るでした。 今日は inline functions の話を書きたいと思います。本題に入る前に function literal と function expression の違いについて説明して、その後に inline modifier やそれにまつわる Kotlin の機能(non-local return、reified modifier や crossline modifier)について説明します。 Difference between Function Literal & Function Expression Kotlin を書き始めた最初は、function の様々な書き方に戸惑わなかったでしょうか。以下はすべて正しい書き方です。
恒例の Fragmented レビュー。今回は第21回の Diving Deep with Dagger について。久しぶりに Donn と Kaushik の2人だけの回だが、カメオ出演(というのか?)で Square の Jesse Wilson が出ている。 Dagger さて Dagger と Dagger 2 である。どちらも Android では有名な Dependency Injection (DI) のライブラリだ。 実を言うと、Dagger は自分にとっては「いつか使いたいと思いつつ、使えていない」ライブラリの1つだ。学習コストがそれなりにかかりそうで、ぱっと目につくメリットがそんなにないと二の足を踏んでしまう。良くない癖だ。だから、そんな自分にとっては、このエピソードは Dagger を勉強する良い機会だった。 珍しく最初に雑談があって、Game of Thrones
去年の年末あたりから運営として関わっていた DroidKaigi が無事に終わった。備忘録がてら、準備および当日を通して感じたことを、掻い摘んで書きたい。やー、ようやく終わった。 準備期間 たしか事の発端はとある勉強会の懇親会だったように思う。最初は Droidcon Tokyo をやって Jake 呼びたい、みたいな他愛もない話だった。で、一ヶ月後くらいに唐突にチャットに招待され、年の瀬に第1回のミーティングが開かれたのだった。 まずは1日で終わるくらいの開発者中心のカンファレンスをやろう、という話でまとまったのだが、そのときからコンセプトは「開発者の、開発者による、開発者のための Android カンファレンス」と決まっていて、最後までそのコンセプトがぶれなかったのが、いま思い返しても時々の判断の基準になって良かったように思う。 その後は Slack と GitHub ベースで準備を進
このページを最初にブックマークしてみませんか?
『hydrakecat’s blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く