ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

renderd から Mapnik を使うときに 「no datasource plugin directories have been successfully registered」 って言われる問題

背景 renderd (mod_tile から使われるマルチスレッドのプロセス) から Mapnik を使って地図タイルをレンダリングしようとしている。Linux ディストリビューションとして Ubuntu 18.04 を使用して、renderd は APT リポジトリ ppa:osmadmins/ppa の renderd …

読んだ : JUnit 実践入門 〜 体系的に学ぶユニットテストの技法

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)作者: 渡辺修司出版社/メーカー: 技術評論社発売日: 2012/11/21メディア: 単行本(ソフトカバー)購入: 14人 クリック: 273回この商品を含むブログ (69件) を見る既に JUnit 5 が出てい…

docker build 時の apt install が遅い問題 (docker build の --add-host オプションを使って APT のパッケージリポジトリを国内ミラーに設定できる)

こんにちは、Docker ビルドおじさんです。今日ずっと docker build してる (してない)— Nobuoka Yu (@nobuoka) 2019年3月22日ubuntu:18.04 ベースで Dockerfile を書いてビルドしまくってるのですが、apt install がとにかく遅い!!! なぜなら日本に住んで…

Ubuntu では ca-certificates パッケージで CA 証明書をインストールできるぞ

1 行まとめ Ubuntu ベースの Docker コンテナで SSL 接続をするために ca-certificates パッケージをインストールしましょう。 エラー内容 Ubuntu 18.04 (ubuntu:18.04) ベースの Docker コンテナで HTTPS 接続ができなくて npm install に失敗した。 root@0…

Java EE 技術から EE4J (Jakarta EE) 技術に移行する

2017 年に発表された Java EE の Eclipse Foundation への移管。 移管されたプロジェクトをまとめるルートプロジェクトの名前は Eclipse Enterprise for Java (EE4J) で、Java EE に相当するプラットフォームの名前は Jakarta EE となっている *1。 EE4J プ…

読んだ : What Is An Engineering Manager?

エンジニアリングマネージャってエンジニアリングに対するマネージャだと思うんだけど、たまに 「エンジニアリングマネージャはエンジニアリングをわかっていなくても務まる」 みたいな言説を目にする。 それはエンジニアリングマネージャではなくて単なるエ…

読んだ : ユースケース駆動開発実践ガイド

ユースケース駆動開発実践ガイド (OOP Foundations)作者: ダグ・ローゼンバーグ,Doug Rosenberg,三河淳一,船木健児,佐藤竜一出版社/メーカー: 翔泳社発売日: 2007/10/17メディア: 大型本購入: 11人 クリック: 105回この商品を含むブログ (33件) を見るユース…

仕様変更が想定される場合の Fizz Buzz のドメインモデリングについて

前の記事 「Fizz Buzz と税率とタイムゾーンの話 (ドメインレイヤとアプリケーションレイヤの話、あるいは時間変化する値をモデリングする話)」 でもちょっと言及した下記のついーと。これはプロダクトの文脈(FizzBuzzをどんな用途で使うか)によるかと。その…

Fizz Buzz と税率とタイムゾーンの話 (ドメインレイヤとアプリケーションレイヤの話、あるいは時間変化する値をモデリングする話)

Twitter で見かけて面白そうだったのでちょっと考えてみた。 関連記事 Fizz Buzz ユースケースについてのまとめ : 2019-02-16 UseCase とは何か | wada811.com ユースケースについて : FizzBuzzを題材にユースケース層についてを考えるのはおそらく無意味な…

GraphQL サーバー on Kotlin ことはじめ (DroidKaigi 2019 に参加して GraphQL について学んだ)

DroidKaigi 2019 にスポンサー枠で参加しました。 弊社では Android アプリエンジニアをはじめとして各分野のソフトウェアエンジニアを募集しております。 人生を豊かにするプロダクトの開発や、大きな企業でのソフトウェア開発をいかに改善していくかといっ…

CloudFront のプライベートコンテンツ配信を試した (Kotlin で signed cookie を生成する)

AWS の CDN である CloudFront でプライベートコンテンツを配信する方法として、signed URL を用いる方法と、signed cookie を用いる方法がある。 本記事では、signed cookie の生成処理を Kotlin (Java) で行う方法を説明する。 事前準備 (CloudFront 側の…

JAX-RS のリソースから送出された例外の扱い

JAX-RS のリソースのメソッドから例外が送出された場合の挙動についてちゃんと把握していなかったので調べた。 前提知識 : JAX-RS について JAX-RS は、RESTful Web API を提供するための Java の API。 もともとは Java EE の一部。 現在は Eclipse Foundat…

読んだ : Clean Architecture 達人に学ぶソフトウェアの構造と設計 (Robert C. Martin 著)

Robert Cecil Martin 氏、いわゆるアンクル・ボブ (ボブおじさん; Uncle Bob) による Clean Architecture についての書籍。Clean Architecture 達人に学ぶソフトウェアの構造と設計作者: Robert C.Martin,角征典,高木正弘出版社/メーカー: KADOKAWA発売日: 2…

kotlinx.coroutines 0.26.0 でコルーチンの構造化 (structured concurrency) がやりやすくなった

この記事は Recruit Engineers Advent Calendar 2018 の 10 日目の記事です。 今日は Kotlin におけるコルーチンの構造化された並行性 (structured concurrency) やコルーチンスコープ (coroutine scope) についてです。昨日は古川陽介さんの 『R-ISUCON Win…

Maven の Surefire プラグインと JMockit と JaCoCo プラグイン

ビルドツールとして Maven を使っている Java プロジェクトで JMockit と JaCoCo を使いたいときの話。 ユニットテストの実行には Maven Surefire プラグインを使用しているものとする。 また、JaCoCo の適用には JaCoCo Maven プラグインを使用するものとす…

Android アプリバンドル (Android App Bundle) について学んだ

2018 年の Google I/O でも発表があった *1 Android アプリバンドル (Android App Bundle)。 Android Studio 3.2 を使っているとアプリのビルドで App Bundle を選べるようになっていたりするし何となく存在は知っていたけどちゃんと調べてはいなかった。dev…

MockK と JMockit の組み合わせで AttachNotSupportedException 例外が発生することがあるっぽい

Kotlin で Mockito を使うのが辛くなってきた *1 ので、「よーしパパ MockK 入れちゃうぞー」 と言って MockK 1.8.12 を導入したのだけど、その結果テストを実行すると以下のような初期化エラーが発生するようになってしまった。 java.lang.ExceptionInIniti…

JaCoCo の Java 10 対応はバージョン 0.8.1 から

Gradle 4.6 で Gradle の JaCoCo プラグインを使用しているプロジェクトをビルドすると下記のエラーが発生した。 Java 環境は OpenJDK 10。 java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invok…

Azure Pipelines で Android アプリの CI をやってみてる

最近 Microsoft から発表された Azure DevOps。 Visual Studio Team Foundation (VSTF) をリブランドしたものだそう。 Azure DevOps の概要 | ブログ | Microsoft Azure Visual Studio Team ServicesからAzure DevOpsへ - kkamegawa's weblog VSTF のときに…

JerseyTest で Servlet のリソースを扱う JAX-RS 部品のユニットテストを行う方法

要約 Jersey のテストフレームワークが便利。 Servlet のリソースを扱う JAX-RS コンポーネントのユニットテストを書くときには GrizzlyWebTestContainerFactory を使用すると良い。 前提知識 : Servlet と JAX-RS Jakarta EE (旧 Java EE) における HTTP サ…

Gradle 4.9 の新しいタスク定義 API と Gradle Kotlin DSL 1.0 RC での対応

Gradle 4.9 の新しいタスク定義 API Gradle 4.9 で、新しいタスク定義 API が導入されました。 まだ incubating です。blog.gradle.orgパフォーマンス向上のため、タスクの設定を遅延実行する、というのがこの新しい API の導入の目的のようです。 古い API …

Gradle のマルチモジュールプロジェクトで JaCoCo の結果を集計する

Java / Kotlin のコードカバレッジツールとして JaCoCo を使いたい。 Gradle のマルチモジュールプロジェクトでの JaCoCo の導入について記す。(この図は JaCoCo によるコードカバレッジの集計結果の履歴を Codecov で表示した例。) JaCoCo について JaCoCo …

Windows 10 で Git 環境を整える

自分用メモ。 昔は GitHub Desktop をインストールすれば Git Shell も使えるようになって PowerShell で快適 Git 生活が送れていたのだけど、最近 GitHub Desktop をインストールしてみたところ、どうやら Git Shell は同梱されないようになってしまったっ…

読んだ : 入門 Kubernetes

Kubernetes に興味を持ちつつ何も手を付けていなかったのだけど、会社に置かれてたのでまずは本を読んだ。入門 Kubernetes作者: Kelsey Hightower,Brendan Burns,Joe Beda,松浦隼人出版社/メーカー: オライリージャパン発売日: 2018/03/22メディア: 単行本(…

Firefox の JS コンテキストのロケール指定方法

背景・目的 WebDriver 経由で geckodriver + Firefox を操作して JS の自動テストを行いたい。 その時、JS にロケール依存の処理が含まれていれば、テスト実行時にも Firefox の JS コンテキストのロケール指定を行いたい。本記事では、Firefox 59 以降での…

MySQL (InnoDB) とトランザクション分離レベル・ロック

(注記) 去年書いて下書き状態になってた記事をそのまま公開した。 MySQL 8.0 公開前に書いた内容なので MySQL 5.7 について言及しているが、多分 MySQL 8.0 でも基本的には変わらない気がする。 背景・目的 DB 上に指定の ID の行が存在していれば UPDATE し…

PostgreSQL と H2 Database の両方で使える SEQUENCE 値生成方法 (MySQL の AUTO_INCREMENT 的なやつ)

SQL DB に新しい行を挿入したときに自動的に ID 値を生成して欲しいことはままある。 このような処理をしてくれるテーブル定義についての話。 MySQL だと AUTO_INCREMENT を使いがち MySQL を使ってる場合は AUTO_INCREMENT で済ませちゃうことが多い (H2 Da…

WebdriverIO を使い始めるときのハマりどころ (geckodriver を添えて)

WebDriver で Firefox を操作するために Node.js 用の WebDriver バインディングである WebdriverIO を使ってみました。webdriver.io使ってみると意外とハマりどころがあってちゃんと使い始めるまでに時間がかかったので、自分がはまったところを書き残して…

読んだ : 最高のリーダー、マネジャーがいつも考えているたったひとつのこと

ラインマネージャに任用されたのでマネジメント系の本を読んだりしてる。 これは社長おすすめの一冊。最高のリーダー、マネジャーがいつも考えているたったひとつのこと作者: マーカスバッキンガム,Marcus Buckingham,加賀山卓朗出版社/メーカー: 日本経済新…

読んだ : エンジニアリング組織論への招待

広木大地さんの 『エンジニアリング組織論への招待』。 良い本だと話題になってましたね。 うちのチームでも皆で読んでます。エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング作者: 広木大地出版社/メーカー: 技術評論社発…