画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

iterm2でフルスクリーンにした時に新しいデスクトップになってしまう設定をやめる

いつもiterm2を起動して、⌘+Enterで最大化して使っているのだが、 デフォルトの設定だと、新しいデスクトップ?の方に最大化してしまって、ちょっと自分としては使いづらい部分がある。

そして一度設定するとめったに触ることがないので、新しいPCにiterm2を入れるたびに毎回忘れてしまい、結構頑張って探して設定しているのでメモ。

Preference -> Window
Native full screen windowsのチェックを外す

自分で書いたから、今度はきっと忘れないし、ぐぐってもすぐ見つけれられるはず。。。!

参考

https://qiita.com/koh110/items/b7e9471330308fdb7250

DroidKaigi2018で「USB接続するアプリを開発した時に試行錯誤した事」というタイトルで登壇してきました

ちょっと時間がたってしまいましたが、発表してきました。

こちらの発表です。

https://droidkaigi.jp/2018/timetable?session=15880

資料はこちら。

www.slideshare.net

今回は事前に資料を公開されている方が何人かいらっしゃったので、その流れに乗って僕も事前に公開しました。

mapyo.hatenablog.com

予想よりちょっと多かった

今回一番参加者の方にお聞きしたかったのが、USB接続するアプリ作った事ある方、こらから作る予定がある方はどれくらいいらっしゃるのか?ということでした。

緊張していて記憶が怪しいのですが、たぶん10人くらいはいらっしゃったと思います。数人くらいしかいないだろうなと思ってたのでちょっと意外でした。

いろいろとフィードバックがいただける

発表した後の質問タイム的なところで、いろいろとお話しができてとてもよかったです。その後の懇親会でも発表した内容について情報交換する事が出来ました。こうやって直接話して情報交換出来るというのが、カンファレンスで発表する事のいいことですね。

デモか動画を入れておけばよかった

PCと接続してUSB接続するアプリの開発出来るよ!という事を説明していたのですが、図で簡単に説明するだけだったので、どんな感じかの雰囲気が伝わりづらかったかなと感じました。デモや動画は上手く動かせない事があるとちょっと辛いなと思っていて入れる事はあまり考えてなかったのですが、他の発表している方がデモを入れているのを見て、めっちゃ分かりやすかったので、この辺はちょっと後悔です。

slideshareの資料の更新の仕方がわからなかった

発表前に、事前に公開した資料からちょっと修正しました。 そして、slideshareに資料を上げなおそうと思ったら、 更新の仕方がわからず(もしかして更新出来ない?)、結局一度上げていたスライドを削除してアップロードしなおすというやりかたで対応しました。 発表する1時間前くらいにわかって、ちょっと焦りました。

所感

とりあえず、人前で発表するのは久しぶりだったのですごい緊張しました。 自分で発表するだけじゃなくて、発表を聞きに行ったりハンズオンに参加したり、パーティでいろいろ話したりととても楽しい2日間でした。 最近カンファレンスとか勉強会とか殆ど参加してなかったけど、またちょこちょこ参加したいなと思いました。 来年もネタがあれば是非ともCFP出したいと思います!!

DroidKaigi2018 Room 2 - 2018/02/08 16:50-17:20 USB接続するアプリを開発した時に試行錯誤した事 のスライドを公開します

スライドを事前に公開する流れが来ているなと思ったので公開します。

[追記]スライドを少し修正したのでアップロードしなおしました

www.slideshare.net

変更があるとしても、おそらく、微修正があるかなというくらいなはずです。

僕の発表はUSBに関する事なので、ニッチ中のニッチだと思います。 スライドの中身を見ていただいて、ご自身の興味に会うかどうか判断していただければと思います。 既にUSB接続するアプリを開発した経験がある方にとっては、把握済の内容が多いかもしれません。 USB開発経験のある方や、開発の予定があるかたは是非とも一緒にお話させて頂きたいです!!

久しぶりの発表なので、めっちゃ緊張しそうな気持ちがいっぱいある一方で、 USBの需要は結構ないと思うので、実はめっちゃ人少ないからそこまで緊張しないんじゃないか?という楽観的な気持ちがあります。

心配事としては、インフルエンザのリスクと隣り合わせで過ごしているので、後2日間は体調を崩さないようにしっかり努めます。

それでは僕自身もDroidKaigiを楽しみたいと思います!

cookpad/license-tools-pluginを使ってみる

github.com

techlife.cookpad.com

つまづいたこと1

普通にREADMEのSetupを実行しただけではエラーになります。

https://github.com/cookpad/license-tools-plugin#for-gradle-plugin-3-users

ここに書かれてますが、Android Studio 3を使ってる場合は、そのための対応が必要になります。 exampleにサンプルが書かれていました。

https://github.com/cookpad/license-tools-plugin/blob/master/example/build.gradle#L54-L63

def implementation_project(arg) {
    if (project.gradle.startParameter.taskNames.contains("checkLicenses")
            || project.gradle.startParameter.taskNames.contains("generateLicensePage")
            || project.gradle.startParameter.taskNames.contains("generateLicenseJson")
            || project.gradle.startParameter.taskNames.contains("check")) {
        dependencies.implementation(dependencies.project(path: arg.path, configuration: 'default'))
    } else {
        dependencies.implementation(dependencies.project(path: arg.path))
    }
}

こんな感じのコードを入れる必要があります。これを入れると解決!

つまづいたこと2

解決!と思いきや、複数moduleで開発していると、先程作ったメソッドを、

app/build.gradle hoge/build.gradle

など、複数ファイルで同じ記述をしなくてはなりませんでした。共通化したい。。!ということで、ファイルを作り、そのファイルから呼び出すようにしてみます。

license_tools_plugin_helper.gradleというファイルを作って以下のように書きました。

ext.implementation_project = { arg ->
    if (project.gradle.startParameter.taskNames.contains("checkLicenses")
            || project.gradle.startParameter.taskNames.contains("generateLicensePage")
            || project.gradle.startParameter.taskNames.contains("generateLicenseJson")
            || project.gradle.startParameter.taskNames.contains("check")) {
        dependencies.implementation(dependencies.project(path: arg.path, configuration: 'default'))
    } else {
        dependencies.implementation(dependencies.project(path: arg.path))
    }
}

そして、これを各module配下で以下のように書いて読み込みます。([追記] 全moduleで必要な場合は、rootのbuild.gradleのallprojectsに書けば1回で済む事を教えて頂いた!)

apply from: "${rootDir.absolutePath}/license_tools_plugin_helper.gradle"

groovyちゃんとわかってなくて、普通にdefという記述のままファイルに書いたら各所でよしなに使えるのかと思ったら、そうでもなかった。。。org

めんどくさかったこと

./gradlew checkLicenses

これを実行した時に、出力される内容をapp/licenses.ymlに保存して、 自動的に取り切れてなかった部分を修正していくのですが、この作業が結構手間がかかった。。。

運用

  • ciで./gradlew checkLicensesを定期的に実行(checkでも流れる)
  • エラーが出たらその時の出力をymlファイルに追加。手直しする部分は手直しする
  • ./gradlew generateLicensePageでhtmlファイルを再出力してコミット

こんな感じで出来るから楽だなーという感じ。

所感

ライセンス、ライブラリ追加したら更新するの忘れがちなので管理が楽になりました。

play-services-oss-licensesを本当は使いたかったけど、使ってみたところ、使ってるライブラリが表示されなかったので断念しました。原因わからず。。。

DroidKaigiのアプリではちゃんと出力されいる様子だったので、こちらのアプリの作りか、環境が影響してそうな感じ。。。

Android Studioでscroll from sourceが出来るショートカットを探してたらいい解決方法をみつけた

やりたいこと

Project Viewの以下の部分をクリックすると、今エディタで開いているファイルがProject View内でフォーカスされる。

f:id:mapyo:20180111174055p:plain

でもこれを毎回手作業でやるのはめんどくさい。でもショートカットがどうもないっぽい。

プラグインを入れる

以下のプラグインを入れる

intellij-support.jetbrains.com

これをいれる事でコンテキスト・メニューに以下の項目が追加されて、それをタップしたり、ショートカットを押すと開くようになる。

f:id:mapyo:20180111174058p:plain

もっといい解決方法

人によっては好みがわかれるかもしれないけど、

Project Viewの歯車の部分をクリックして、Autoscroll from Sourceにチェックを入れると、 エディタでファイルを選択してる時にProject View側では勝手にファイルが切り替わってくれる。地味に便利

f:id:mapyo:20180111174104p:plain

こちらのサイトで見つけた

tips4storm.tsunamayo.net

所感

最近あんまりブログ書けてなかったので、ビルド待ち時間や、CI待ち時間に少しずつネタを書いていくと、 意外と細かくアウトプット出来ていけるんじゃないかと思った今日このごろ。

2017年の振り返り

立ててた目標の振り返りと、どんな事やってたかざっくり振り返っていきたい。

目標の振り返り

2017年の目標はこちら

2017年の目標は大きく3つだった

  1. Androidがんばる
  2. プルリク駆動勉強
  3. 運動

それぞれ1つずつ振り返っていこう

1. Android頑張る

主に3つを目標として上げていた。

これら3つは今の会社に入社してバリバリやれている。 今の会社だと、ほぼほぼkotlinで書いてるし、RxJavaも結構使っているし、クリーンアーキテクチャっぽいやつで書かれている。 胸を張ってめっちゃ出来るぜ!!と言えるほどではないけど、そこそこ出来てきた。といえるのではないだろうか。

2. プルリク駆動勉強

やりたいやりたいと思って、全然出来なかった。。。 Android Studioのバージョンアッププルリクや、細かいlintを直したプルリクくらいだった。 これは引き続き来年への課題である。

3. 運動

今年の途中から1駅分歩くようになって、多少は運動できている。今年の最初の方はゆるい感じで糖質制限をしてた。 1年前に比べると確実に2kgくらいは痩せているので、多少は効果あった気がする。 途中から減らなくなったし、食事も特に気にせず食べるようになったので、現状維持な感じ。

やったこと

ブログとかtwitterからやった事ベースで雑に振り返っていく。 年々、ブログ書く頻度が下がってるけど、書いとくと何やったか思い返せていいですね。

1月

  • 前職を退職して、現職に入社した。といっても、前職の最終出社は有給の消化があったので12月末頃。
  • 新年の目標を立てたら、その時のTweetに「数値目標以外はダメだ」とリプ頂いたのを見つけたw来年の目標は数値目標を入れようw

2月

  • ブログ特に書いてなかったし、記憶がない

3月

  • DroidKaigiで発表してきた。めっちゃ緊張した。
  • RxJavaとKotlinをバリバリやってる
  • CircleCIの4G制限に苦しんでた気がする
  • ポテチにオーディエンスとして参加してた

4〜6月

  • 難読化について調べてた
  • BLEとかやってたのかも
  • 今必要なものを変化に対応できる形で作れるのいいよなとか考えてた

7月

  • fastlaneでGoogle Playのベータ版にアップするようにしてた。これは、本当にやってよかったと思える事だったので、やってないAndroid開発者の方がいらっしゃったら絶対にやった方がいい。
  • Pythonのコードとも一時戯れていた。
  • ちょっと工数かかるけど、この方法でやるしかないか。。。と思って頑張って実装していて、完成直前までいってたけど、発想の転換でシュッとやればそんな事しなくていいしシンプルになると気がついて切ない気持ちになりながらシュッとやってた気がする

8月

  • 仕事大変だった気がする

9月

  • ずっとVysor使ってたけど、OpenSTFを自分のMacで使うようにしたらすんごいよかった

10月

  • ターミナルで実行した時に、時間がかかるコマンドが終了したら通知してくれるようにした。これは意外とよかった。ビルドとかしてる間にブログ書けるよ。
  • USBネタでDroidKaigiのCFP出した。出したの9月だったかも。
  • 仕事で始めてiOSアプリの修正を行った。大変だった。大変だった事をブログ書こうとしてたら忘れてた。

11月

  • DroidKaigiのCFPが無事通った。やっほい。

12月

  • 粛々と実装してた気がする。BLE接続周りについて、ゼロから実装してる。
  • ビルド途中にブロク書くのが流行ってたので、ビルド途中に会社のアドベントカレンダーのネタを書いたりしてた。
  • PS4地球防衛軍5を買って永遠とやってた。そのせいで腰を痛めた。

まとめ

2017年はいろいろあったけど、一番よかったのはKotlinやRxJavaや設計やBLEやUSBについて、それなりにやれた事だったのではないかと思う。他は、iOSを全くやった事がなかったけど、ちょっとでもやれたのがよかった。 新しい事をやるというのは、それだけでやる前とくらべて知識量が増えているのでいい感じ。 UI周りに関しては前職の方がしっかり出来てた気がする。

今年やってめっちゃ良かったことがもう一つあった。 Google Playのベータ版にアップロードするやつを自動化するのは、絶対にやった方がいい。本当にリリース作業が楽になったし、心理的な不安も少なくなりました。もしやってないところがありましたら、やりましょう。僕に飲みを2回分くらいおごってもらえたら僕が代わりにやってもいいくらいです(笑)

ずっと思ってることだけど、あれやりたいー。これやりたいー。と思ってメモしたりpocketに保存するんだけど、気がついたら月日がたって、やらなかったりする事が多い。この辺を上手くする方法ないのかな。結局はやりたい事をリストに書き出して、優先順位つけて日々コツコツやっていくしかないのかなぁ。

あとは、ここ最近ずっとAndroid開発してたけど、アプリよりもサーバの方がやりたい気持ちが高まってきた。アプリよりもサーバサイドの方が俯瞰してサービスを見れる気がするのと、サーバサイドは基本的にどのプロジェクトにも存在するのと、最近のクラウドサービスをいい感じに使った開発をやっときたいというところ。前にサーバサイドやってた時はオンプレだったので。

そんな事をやったり、思った2017年だった。思い返すと色々とあったなぁ。2018年に何をやっていきたいかは年明けて書いていこう。

Android plugin for Gradle 3.0.0からは、buildToolsVersionを指定しなくてもよくなったっぽい

https://developer.android.com/studio/releases/build-tools.html

このページの一番上に以下のように書いてあった。

You should always keep your Build Tools component updated by downloading the latest version using the Android SDK Manager. If you're using Android plugin for Gradle 3.0.0 or higher, your project automatically uses a default version of the build tools that the plugin specifies. To use a different version of the build tools, specify it using buildToolsVersion in your module's build.gradle, as follows:

Android SDK Managerを使ってBuild Tools componentの最新バージョンを使いましょう。 Android plugin for Gradle 3.0.0以上を使ってたら自動的にデフォルトのバージョン使ってくれますよ。もし違うバージョンを使っていたら以下のように指定して下さい。

なのでbuildToolsVersionは消してもいいのかなという感じ。

最近ブログあんまり書いてないから小ネタを刻んでいきたい。