メモ2ブログ

メモtoウェブログ。旧ブログはこちら。 http://sakebook.blogspot.jp/

2017年を振り返って

2017年の目標 ブログを20回以上更新 未達 GoとかPythonとかでWeb APIみたいなの作ってアプリに組み込み 未達 ライブラリにPRを送る 未達 設計力を高める 未達 やばいですね。。 ブログを20回以上更新 記事数は12本でした。間隔が空いてる期間がありますが、…

続続・Androidアプリ開発を学生に教えた話

今までと同じく、TRUNKから講師の依頼があったので講師をしてきました。 過去の話はこちらです sakebook.hatenablog.com sakebook.hatenablog.com 進め方 週一で、一回あたり2~3時間の全8回のコースで、全体を通すとおよそ2ヶ月のコースとなり、今までで最長…

Kotlinの可変長引数とフォーマット

Kotlinの可変長引数とフォーマットを利用した置き換えで詰まったのでメモ 可変長引数 メソッドの引数として定義するときは vararg を付けます。 fun someMethod(vararg args: String) { args.forEach { println(it) } } someMethod("one") // ok someMethod(…

JavaからKotlinに変換してSupport LibraryとMockitoとRobolectricでハマった話とその解決方法

先日勤務先で開発合宿に行きました。プロダクトのKotlin化が途中だったので、仕上げてきました。 スライドでは省略した、ハマった点の詳細を共有します。 確認できるサンプルを用意してあります。サンプルの環境は次の通りです。 Android Studio: 2.3.3 Supp…

BITRISEでPrivateなDockerイメージを利用してビルドする(Push時のみ)

自分のDockerイメージを作成したので、CIサービスでも利用して、環境を持ち運べるようにしたいなと思いました。 sakebook.hatenablog.com BITRISEがモバイルアプリのCIサービスとして良いという話を見かけたので、BITRISE上で自分のDockerイメージを利用して…

AlpineベースのAndroidビルド環境のDockerイメージを作成した

なるべく小さく、sdkmanagerにも対応させた、CI用のDockerイメージを作成しました。 Emulatorなどを利用したAndroid Testにはまだ未対応ですが、Unit Testは実行できます。 PublicなDockerHubに上げたかったのですが、ライセンス違反という話があるのでPriva…

RecyclerViewで複数のDividerを実装するライブラリ「MultiLineDivider」を公開しました

以前の記事で、RecyclerViewで複数のDivider実装する方法をまとめたのですが、これを使うには ItemDecoration を実装したクラスを作る必要がありました。 そのあたりをよしなにして導入できるライブラリを公開しました。 github.com 使い方 DividerItemDecor…

RecyclerViewで複数のDividerを実装する

RecyclerViewでは、Divider(区切り)は自分で実装しなければなりません。 標準の線を引く方法はよく見つかるのですが、複数の線を引いたり、逆に線を引かなかったりするというのがあまり見つからないのでまとめました。 Support Libraryに追加されたDividerIt…

DroidKaigi 2017で登壇してChrome Custom Tabsについて発表しました。

スライドとサンプルアプリと、そのコードです。 speakerdeck.com play.google.com github.com スピーカーから見たDroidKaigiと、それにまつわる個人的なメモです。 スピーカーから見たDroidKaigi DroidKaigiスケジュール 日程 出来事 行動 2016.10.01 CFP募…

Bottom Navigationをガイドラインぽく実装する

Bottom Navigationはサポートライブラリが提供されています。 しかし、単純に使うだけではガイドラインぽくなりません。 ガイドラインぽく実装してみました。 ガイドラインぽさ Navigation Barを含んでBottom Navigationにする 下にスクロールすると隠れる …

Link Stackをメジャーアップデートしました

リンクをちょっとだけ後で読むアプリ、Link Stackをメジャーアップデートしました。 play.google.com このアプリを作った経緯はこちらです。 sakebook.hatenablog.com メジャーアップデートの機能紹介と、なぜその機能を付けたかについて書きます。 2つの新…

2016年を振り返って

2017年も12分の1が過ぎようとしてますが、2016年を目標とともに振り返ります。 2016年の目標 本を10冊以上読む 未達。 プロダクトのアウトプットを4つ以上 未達。 個人ページ作成 できた! ブログを20回以上更新 未達。 本を10冊以上読む 3冊くらいしか読ん…

ニッチなアプリ「Screen Scanner」を作った

スマホに表示されているバーコードを読み取るアプリを作りました。画像を渡して読み取ることもできます。カメラで読み取る機能は現状つけていません。 play.google.com 動機(1年半前) 今から1年半ほど前の話です。 スマホのサイト上に表示されたQRコードを読…

AWS LambdaでKotlinのコードを動かす

Web APIを作ってみたいと思い、AWS Lambdaを触ってみました。PythonかNodeかJavaが使えるとのことだったので、自分が一番書きやすいKotlinで動かしてみるところまでやりました。 まだ詳しくわかっていない部分が多いので、動作したことのメモ書き程度。 確認…

GenymotionにGooglePlayを入れるのが簡単になってた

以前もGenymotionでGooglePlayを動かせるようにする記事を書いたのですが、それよりも簡単な方法が、公式のQAで紹介されていました。 sakebook.hatenablog.com 次のサイトから、zipファイルを落として起動しているGenymotionのEmulatorに入れるだけです。フ…

Shinjuku.aar第1回に参加した

Shinjuku.aarとは Shinjuku.aarは、新宿界隈のAndroid技術者たちが 技術ネタで気軽にワイガヤできる コミュニティです。 発表ごとにディスカッションタイムを設けており、発表中の質問やツッコミも随時ウェルカム! さらに、ディスカッションが盛り上がるよ…

MashwmallowでqueryIntentActivitiesの挙動が変わってた

Chrome Custom Tabsを使っていて、公式のサンプルにあるCustomTabsHelperを流用していたのですが、Mashwmallowでうまく動かないことがありました。 CustomTabsHelper内で、PackageManager#queryIntentActivitiesを使っているのですが、その挙動がMashwmallow…

スプラッシュにはActivityはいらない

スプラッシュ iOSだとLaunchScreenとか言われる、起動時に出てくる画面です。 Androidだと、ユーザに無駄な待ち時間を与えるということで不要だと言われてたのですが、最近はGoogle製のアプリが、軒並みスプラッシュを入れてきています。 Bottom Navigation…

GenymotionにGooglePlayを入れようとするとAn error occured while deploying the fileが発生する

Genymotionについては以前触れたのでこちらで。 sakebook.hatenablog.com An error occured while deploying the file. GooglePlayを入れるための準備をしていると次のエラーが発生しました。 Genymotionのバージョンは2.6.0でした。 エミュレータを作り直し…

Androidエンジニアが企画展に作品を出した話

2016/4/30~2016/5/15、2週間と1日、「CreativeAdventure」という、企画展がARTnSHELTERで開催されました。 そこで「Indoor Street」という作品を展示しました。企画展に作品を出すという経験での学びや感想をつらつらと書きます。 きっかけ 大学時代にU-moa…

AndroidでKuromojiを使う

Kuromoji KuromojiはJavaで書かれているオープンソースの日本語形態素解析エンジンです。 Androidでオフラインでも即座に形態素解析ができるように組み込んでみました。 LuceneのJapaneseTokenizerではなく、AtilikaのKuromojiを組み込みました。 はじめに言…

忘れてしまったAndroidの署名情報は見つかるかもしれない

Androidのアプリの署名に使う情報を忘れてしまうことが、稀にあります。 やってはいけないことですが、稀にあります。 別PCで作業してていつもMaster Passwordに任せっきりだったりとか、久しぶりに更新をかけようとしたアプリで起きたりします。 同じ署名の…

jsoupのデフォルトのUser-Agentはなんなのか。

jsoup JavaでHTMLをいい感じにParseできる便利なライブラリです。 WebページにアクセスしてHTMLを取得し、それを加工することでWebページ内のコンテンツを簡単に取得することができます。 スクレイピング先が、User-Agent(UA)によって表示を変えている場合、…

Instagramのユーザページと詳細ページへ暗黙的Intentで遷移する。

普段アプリで表示しているであろうページに、ブラウザで表示する場合があります。 ブラウザアプリを作っていて、何もしないままだとWebページが表示してしまうので、普段表示している方であるアプリへ遷移させます。 Instagram ユーザページと詳細ページを表…

続・Androidアプリ開発を学生に教えた話

再び 以前と同じく、TrunkでAndroid開発のトレーニングを請け負いました。 sakebook.hatenablog.com 今回は、1ヶ月でカメラアプリを作成してストアへ申請するというものでした。 1ヶ月と言っても、1回3時間の講義を4回行うという形式です。 前回の反省を踏ま…

都道府県の情報を簡単に扱うためのライブラリをKotlinで作った。

都道府県コードと都道府県名を変換するようなことをJavaで書いたのが非常に辛かった。 もう同じことをしないでいいように、使いまわせる形にした。 Javaでリスト操作ができなかったのでKotlinでさっと操作したいと思ったのがモチベーションです。 実際Kotlin…

Android Support Library 23.2で追加されたChrome Custom TabsのBottom barを試してみた。

Chrome Custom Tabs Webページを自分のアプリ内ブラウザで開くかのごとく、Chromeを使って開くことができる機能です。 利用するにはChromeのバージョンが45以上であることが必要です。 Chrome Custom Tabs自体は23.1.0から提供されていた機能ですが、新たにB…

potatotips第26回に参加した

potatotipsとは potatotipsはiOS/Android開発のTipsを出し合う勉強会です。 参加者はTips持参必須です! なお、ポテトチップスは必要に応じて各自で持参しなければなりません。 今回は株式会社Supershipで行われました。オフィスに行ってみたかったので、久…

Realmのマイグレーションで Configurations cannot be different if used to open the same file. が発生する

スキーマに変更があったので、マイグレーションを行ったら上記のエラーが発生した。 先に言っておくとマイグレーション自体は本質的な問題ではなかった。Realmのインスタンスの生成方法に問題があった。 Realmのバージョンは 0.87.4を使用。 マイグレーショ…

情報収集のための11の質問に答えてみる

id:koogawaさんからバトンをいただいたので、考えてみました。 blog.koogawa.com 1. RSSリーダーを使っていますか? 少しだけ使っています。 以前GoogleReaderがあった頃はメインで使っていたのですが、終了になるにつれ、だんだんRSSリーダーを使わなくなり…