techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

RxJava Mathを使って最大・最小・平均・合計を計算する

RxJavaを最近使うことが多くなってきてストリームに流れているデータ内の最小値と最大値を取ることができないか調べておりました。 そうするとRxJavaのMathというのがありそれで実現できたのでそのやり方とMathの機能についてごしょうかいします。

Androidオールスターズ2

Androidオールスターズ2 2016年8月7日午後1時30分 日 【満員御礼につき50席増枠★】Androidオールスターズ2 - dots. [ドッツ] 参加してきました。 メモ書き程度ですが、後日資料も公開されるとのことで楽しみにしています。 大変学びが多く、刺激のある内容…

AndroidライブラリからアプリケーションプロジェクトのBuildConfigの値を参照する

Androidアプリ開発の際にオープンソースのライブラリを組み込むことが多いと思います。 そういった中でアプリのデバッグの時にはライブラリのログを出したいとかデバッグの時だけこういった挙動をしたライブラリがほしいことかがあります。 そこで今回はaar…

FirebaseのRealtime Databaseを利用してみる 〜その2〜

前回に引き続き、FirebaseのRealtime Databaseについてです。 今回は、前回保存したデータをクライアント上から参照してみます。 Realtime Databaseはその名の通り、データベースに変更があった場合に、それをリアルタイムにクライアントに反映させることが…

Retrofit2のレスポンスをmockに置き換える Retrofit-Mock編

前回の記事では、MockWebServerを使用してサーバ自体をMockに置き換えた。 blog.techium.jp 今回はRetrofitMockにてResponseの内容をMock化する方法を使う。 build.gradleの修正 // レスポンスのパースにgsonを使用 compile 'com.squareup.retrofit2:convert…

ContentProviderアクセステスト用ライブラリPantomimeを公開しました

Androidの開発を行うにあたってContentProviderへアクセスする場合にContentProviderの中身が動的に変化する場合にテストを書く場合に同じ環境にならなくてユニットテストが失敗したりすることがあります。 そこで今回作ったPantomimeを紹介します。

ちょっといい加減会社でGit布教したいんや

そろそろGitわからんまんがいい加減に減って欲しい この資料が役に立つことをいのって。 Learning git from Shinji Kobayashi 主にGitlabの布教用に書きました。 Gitlab云々よりもGitコマンドについて厚めに。 いつもだいたい聞かれて答えるようなやつだけな…

FirebaseのRealtime Databaseを利用してみる 〜その1〜

FirebaseのRealtime Databaseを利用してみました。と言っても、まだデータを登録しただけなので、導入編といった感じです。 Realtime DatabaseはFirebaseがクラウド上に提供するNoSQL型のデータベースです。 今回はこのRealtime Databaseを利用して、データ…

Retrofit2のレスポンスをmockに置き換えるMockWebServer編

ユーザー登録画面など、ネットワーク通信を伴う画面のUIテストするとき、実際のサーバへアクセスしては、テストが意図した結果にならないことがあるだろう。 MockWebServerを使用することで、サーバへのアクセスを回避し、かつ、必要なレスポンスを返すよう…

gitでremoteレポジトリにあるファイルを探したい

Motivation AOSPのtools/base辺りをビルドしようと試行錯誤していると、なんかこのファイル参照してるけど、いったいどのブランチにいるの? みたいなことによくなるのでスクリプト書いてみたよみたいな。 Motivation 探す対象 リモートブランチのファイルを…

Intellij Ideaプラグインでモジュール生成時にフォルダ/ファイルを作成する

Intellijでセットアップウィザードを作成を前回行いました。 blog.techium.jp そこでセットアップウィザードを終えたあとにプロジェクトフォルダにファイルの自動生成を行う方法をご説明します。

Realm JavaのRealmQueryをループで使ったらヒドい目に遭ったという話

先日からAndroidアプリの開発でRealmを使っていますが、今回はRealmの仕様なのかバグなのかよくわからない挙動にハマってヒドい目に遭ったというお話。 歴戦のRealmerには既知の問題かもしれないので何か情報をお持ちの方は適宜突っ込んでもらえると助かりま…

ChefのKnife用プラグインを作ってみた

こちらの記事でも触れていますが、ChefはKnifeというコマンドラインツールを使用してリポジトリ操作を行います。 Knifeにはサブコマンドが多数用意されており、それらを使ってリポジトリの作成やクックブックの作成を行うわけですが、自分で新たにプラグイン…

Nearby Messages APIを使ってみた iOS API使用方法

前回は、iOSのプロジェクトの設定とGoogleDeveloperConsoleの設定について説明した blog.techium.jp 今回は実際のAPIの使用方法について解説する MessageManagerの初期化 Nearyby Messageのpublishとsubscribeを管理するクラスである、GNSMessageManagerを生…

ワークフローエンジンDigDagのSlackプラグイン公開しました

DigDag用のSlackプラグインの作成記事を下記で行いました。 その続報となります。

Intellij Ideaプラグインでセットアップウィザードを作る

Androidの開発やJavaアプリの開発など様々な場面で利用されるintellijですが機能を追加する機能としてプラグインがあります。 そこで新しい言語や新しいプロジェクト構成の画面を作りたい場合にプラグインを作成してサポートする機能を追加することができま…

ChefでLet's Encryptを利用するためのDefinitionを定義してみた

Chefのレシピを記述する際は、リソースを使用することで簡単にパッケージのインストールやサービスの起動、フォルダの作成などを行うことができます。 Chefから提供されているリソースには便利なものがたくさんありますが、Definitionを使えば自分で作成する…

ワークフローエンジンDigDagのプラグイン機能を試してみる

ワークフローエンジンのDigdagについて記事を書いてきましたが、v0.8.3からプラグイン機能が入ったというアナウンスがありましたので早速サンプルを動かしてみました。 ドキュメントやトラブル等があったのでそれらの対策等を紹介いたします。 また、Slackに…

Realm.writeCopyTo(File f)で.realmファイルの確認を簡略化する

前回の記事ではRealm BrowserでRealmのデータをGUIで確認する方法を紹介しました。 今回はRealm Browserでデータを確認する際の手順を簡略化する方法を紹介します。

vagrantでSonarQubeを立ち上げる(環境構築編

Motivation ソースをCI回すに当たって、複雑度とか重複度とか規模感とか、トレースできるといいなと思って探してたらSonarQube(旧Sonar)というものを見つけたのでサーバー立ち上げまでを進める。 次回はAndroidのプロジェクトに対しての実施についてまとめ…

Core Data 入門

Core Data 入門 Core Data 入門 設計思想 クラス分け モデルオブジェクト モデルマネージャ 実装 モデリングツール エンティティの追加 関連の追加 今時 Realm とかあるしもう触らなくて済むかと思っていた Core Data。 やんごとなき理由により触らなければ…

Realm Browserで.realmファイルの中身を確認する(Android編)

Realmを使用する時に、実際に作成したDBの情報を確認する方法としてRealm Browserを使う方法とStetho-Realmを使う方法があります。 今回はAndroidでRealmのデータを作成後、Realm Browserで.realmファイルの中身を確認する方法を紹介します。

Let's Encryptを使ってSSL通信してみた(Cent OS 6 + Apache2)

Let's Encryptが正式サービスを開始したということで、試しに使ってみました。 Let's EncryptはSSL/TLSによるHTTPS通信を行うためのサーバ証明書を誰でも簡単に取得、インストールできるサービスです。また、サーバ証明書の取得とインストールを自動化できる…

Nearby Messages APIを使ってみた iOSセットアップ

引き続きNearby Messages APIの使用方法について記載する 今回からはiOSでの使用方法について記す 最終的にAndroidとiOS端末間での通信ができることが目標である 1. 開発環境をダウンロードする Nearby Messages APIをiOSで使用するにはXCode6.3以上のバージ…

ワークフローエンジンDigDagでDockerを使ってみる(追記:6/28)

ワークフローエンジンのDigDagではワークフローを動かす環境をDockerにすることが可能とのことです。 そのためDockerで環境をワークフローを動かすときに構築するため、過去の設定情報などをクリアすることなく動作させ得ることができるため、ワークフローを…

「Dribbbleのぬるぬる動くメニューUIのアイデア10選」からDelivery Card(FoldingCell)を試してみる

Dribbbleのぬるぬる動くメニューUIのアイデア10選という記事を見たので、実際に試してみました。 今回はこの記事の中で紹介されている「Delivery Card」を実現するためのFoldingCellを実装します。 www.youtube.com

AndroidStudioのProjectテンプレートを弄る

Motivation 最近のAndroidアプリ開発だとライブラリを使うことが前提であることが多い。 毎回毎回プロジェクト立ち上げ後にライブラリを取り込んでいくのが非常に面倒なので、 テンプレートを弄ってみた。 Motivation プロジェクトのbuild.gradleファイルの…

Google Nearby Messages APIを使ってみる〜実際使ってみた編〜

前回の記事でNearby Messages APIのセットアップまでを紹介した。 blog.techium.jp 今回は実際にAndroid端末でメッセージの送受信を確認する。 動作確認に使用した端末はNexus 5 、Nexus 5x、全てのコードはActivityに実装した。

HomeKit in WWDC 2016

HomeKit in WWDC 2016 この記事は全て公開情報をもとに記載しています。 HomeKit in WWDC 2016 HomeKit HomeKit 対象機器を構築(?) HAP-NodeJS 立ち上げ Home アプリで登録 余談

ワークフローエンジンDigDagのサーバ/クライアント構成を試してみる

ワークフローエンジンというのを知っていますか。 申し訳ないのですが私は全く知りませんでした。 ワークフローエンジンの定義は仕事の流れをツールが回してくれるツールのことが一般的のようです。 幾つかそういったワークフローエンジンがあるようですが今…

GcmNetworkManager使って21未満でもJobSchedulerっぽいことする

Motivation 存在はよくJobSchedulerの説明と一緒に現れるので知ってたけど、後回しにしてしまってたので。 JobSchedulerの使い方の記事と一緒にどうぞ。 techium.hatenablog.com GcmNetworkManagerは21まではplay-servicesを使ってJobSchedulerのバックポー…

PlantUMLのアクティビティ図の新記法と旧記法の違いを確認する

前回の記事ではAndroidStudioにPlantUMLのプラグインを追加してFizzBuzzをアクティビティ図で表現してみました。 そこでアクティビティ図の作成には2つの記法があるということにさらっと触れましたが、今回はそれぞれの記法で同じ図を作成してそれぞれの違い…

Mac(El Capitan)にTensorFlowを入れようとしてハマった残念な私

機械学習に入る前の備忘録and私の残念な思い出話。 発端 少しずつ機械学習の勉強を始めていた私ですが、今週末は出張になってしまいました。 自宅のデスクトップ環境だけでしか作業できないのは不便... よっしゃ!この機会に調子悪いMacをクリーンしてEl Cap…

Rails 5.0 RC1が出たと聞いたのでインストールしてみた

こんにちは。RoR永遠の初心者seitです。 Railsに5.0 RC1が出たというのをチラッと目にしたので、インストールして少しさわってみました。

Google Nearby Messages APIを使ってみる〜セットアップ編〜

Nearby Messages APIはBluetooth Bluetooth Low Energy Wi-Fi 超音波モデムの組み合わせでデバイス間通信を行う仕組みである。 GooglePlayServicesの一部として提供されている Nearby Mesasges APIを利用可能なバージョンは以下のとおりである。 Android OS…

ETC1を使ってデータ量を少なくする

Androidで画像リソースを利用する場合はPNGが多いと思いますが、PNGは可逆圧縮のフォーマットのためどうしても一定サイズ以下にデータを小さくできません。 そこでよく行われるのPNGを最適化して使ったり、WebP、JPGなどが良くあります。 最近ではVectorDraw…

Google I/O 2016 参加レポート(もはや日記) 2日目

Google I/O 2016 2日目 Google I/O 2016 参加レポート第2弾。 1日目は Keynote メインで書いたが、会場全体についてや、参加してきたセッションについても触れていこうと思う。 Google I/O 2016 2日目 会場全体図 Google Plex Google Merchandise Store セ…

AndroidStudioでPlantUMLを使う(Mac)

最近業務でPlantUMLを使い倒してるけど、そういえば自宅のMacbook Proには入れてなかったなーと思ったので導入してみたメモ。 「PlantUMLってなんぞや」という人はこの辺見てみると幸せになれるかも知れません*1。 *1:まだastahで消耗してるの?

Google Cloud Vision APIを使って顔識別用の顔画像を作る

動機 Tensorflowで顔識別をさせてみたいが,顔画像を大量に用意しなければならない。 顔認識をさせて顔画像を切り出さないといけないが,調べてみるとOpenCVの顔認識はデフォルトだとそこまで精度は高くないらしい…。 そこで今回は,Google Cloud Vision API…

ChefでNginx + Unicorn + Railsの開発環境を構築する

これまでMacにRailsの開発環境を構築していましたが、久しぶりに触ると環境がおかしくなってたり、いちいち環境構築し直したりがめんどくさ過ぎたので、Chefで環境の構築と管理ができれば幸せになれそうな気がしてました。 また、できるだけ本番に近い環境で…

AndroidStudioをビルドする

Motivation AndroidStudioの機能デバッグしたいんだけど、と前々から思ってたので時間とれたついでに試してみた。 ソース読んだりするのもIDEに食わせると楽できるのでオススメ。 Motivation repo sync Java6とJava8のインストール Intellij CEのインストー…

JackでDagger2が使えるようになった

先日、JackでDagger2が使えないという記事を書きましたが、なんとJackでもDagger2が使えるようになりました! Dagger2だけじゃなくannotation processingが使えるようになりましたので、他のツールも動くようになりました。 なぜ動くようになったかというとG…

Google I/O 2016 参加レポート(もはや日記) 1日目

Google I/O 2016 1日目 Google I/O 2016 に参加してきました! 例年会場はサンフランシスコ市街地にあるモスコーニ・センターでしたが、今年から会場が変更になるというイレギュラー。 (去年までの情報を色々参考に行けばいいやぐらいに考えていたのに。。) …

ChefでNginxをインストールし、設定ファイルをChefで管理する

今回は、ChefでNginxをインストールしてみたので覚書きです。 また、NginxをChefでインストールする場合、設定ファイル(nginx.conf)もChefで管理するのがベストです。 ということで、今回はNginxのインストールと設定ファイルの書き換えまでをChefで自動化し…

RxJava:Error Handling Operatorを使ったエラーハンドリング方法を理解する

RxJavaではObservableでExceptionが発生した場合、デフォルトではそのObservableを監視しているObserverのonErrorメソッドが実行され、出力元のObservableが終了します。 想定外のエラーが発生して処理を続行することが困難な場合はonErrorで適切な後処理を…

The experts' guide to Android development toolsで紹介されてたASショートカット(気になったのメモ

Motivation Google I/O 2016のセッションを少しずつ消化しているのだけれど、「The experts' guide to Android development tools」のセッションで紹介されていたAndroidStudioのショートカットが有用っぽいので備忘録がてらまとめておく。 とりあえず「ctrl…

AppLaunchCheckerを使って初回起動を判断する

Androidアプリを作るにあたって初回起動を判断する必要があると思います。 よくあるケースとしてははじめて起動した時にチュートリアルを表示して、2回目以降はチュートリアルを出さないようにするなどの処理を考えたりするときに判断が必要になります。 一…

RxJava:doOnEach系メソッドでObservableのライフサイクルを理解してデバッグに役立てる

今回はRxJavaのdo〜系メソッドを使ってObservableのデバッグに役立てる方法を紹介します。

Android Studio 2.2 PreviewでFirebase Analyticsを利用してみる

Google I/O 2016で発表のあったFirebase Analyticsについて、ちょっと試してみました。 Firebase AnalyticsはFirebaseの機能の一つで、AndroidやiOSなどのアプリケーションのイベントログを収集してレポートを作成してくれます。そのレポートを確認すること…

MaterialDesignのLoading中のProgressを作る

Motivation Material Designのガイドラインのコレが気に入ったので、汎用的に使えるようにFragmentで書いてみた。 Progress & activity - Components - Google design guidelines Motivation Progress Barを実装する FadeIn/FadeOutを実装する Activityから…