読者です 読者をやめる 読者になる 読者になる

WhereToStart

色々手をつけすぎてすぐに忘れるので備忘録

DroidKaigi2017にスタッフ&スピーカーとして参加してきた

雑記

f:id:futabooo:20170312185410j:plain

はじめてのカンファレンススタッフ

僕がDroidKaigi2017のスタッフと参加することになったきっかけは、代表のmhidakaさんと僕が勤めている会社の人事の人のつながりから当日スタッフとして人員増員というかたちでした。 スタッフはみんなメインのお仕事が別であるとか学生の方も一部いるようで、基本的にDroidKaigiの運営は空いた時間にやっていくという方々ばかりでした。

タスク管理すごい

DroidKaigiの運営にあたって、タスクはGitHubのIssueで管理されていました。 IssueにはかならずDoneの定義締切日GitHubマイルストーンを使って設定されていました。 そのうえマイルストーンが設定されていないIssueがあると、Botマイルストーンを設定してね!とIssueにコメントをしてくれます。 またマイルストーンで設定されている締切日を過ぎたIssueにBot経由でコメントをさせるショートカット的なものがあり、そいつを使うと締切日を過ぎてるIssueにBotがコメントをしてくれます。

その他にもIssueへのコメントが流れる専用のSlackチャンネルが存在しており、タスクに関連する話についてはIssue上でやっておけば誰でも状況をつかむことができる状態にされていました。 本業ではタスク管理にJIRAを使っていますが、ここまで管理を徹底できていないのでこのノウハウは社内に還元したい!と思っています。

ミーティングはリモートとリアルの両方ある

リモートとリアルのミーティングが週に1回づつありました。 基本リモートが週1回と、月一回のリアルミーテイングがありました。開催直前はリアルミーテイングも週1で行っていました。 リモートの方は都合が合わずに参加することができなかったのですが、リアルの方では現在の状況で共有したいことと相談したいことという2点についてそれぞれがアジェンダに記入しておき、順番に話をして物事を前に進めていく感じでした。 この時にリアルで足を運ぶのが難しい人もハングアウトでミーティングに参加することができるスタイルでした。

リモート勤務がある企業の方もいたのかどうかを把握できていませんが、プロジェクト運営はリモートが前提となっているやり方のように感じました。 世の中のリモート勤務導入を検討している企業さんには大変参考になるのではないかと思います。

基本スタンスは楽しむこと

DroidKaigi2017ではおよそ800名の来場者があったようですが、言ってしまえば全員他の会社でお仕事がある人達で800人規模のイベント運営をなぜやれたのでしょうか。 個人的に感じていたのは、みんな好きで運営をやってるし来場者に最高の体験をしてもらいたいと思っていたからだと思っています。 好きこそ物の上手なれということわざがありますが、まさにそれを感じました。

例えばタスクが締め切りまでに終わらなかったとしても「なんで終わってないの?」みたいなことは把握してる限りではありませんでした。 締め切りまでに終わらないことがないようにメンバーがヘルプをしてくれるし、Issueには助けてLabelをつけることができてヤバそうなら事前に助けを求めることもできます。

よく仕事でもマインドが大事だと言われることが多いと思います。僕自身は仕事としてやるべきことをやっていれば問題ないという考え方の人間でしたが、マインドとか考え方がそもそもに無いと結局何かが足りないアウトプットになってしまうのかなーという気づきを得ることができました。

スタッフをやってよかった

運営スタッフをやって本当に良かったと思っています。 様々な気付きや学びを得ることができましたし、なによりDroidKaigi2017が最高に楽しいイベントとなって思い出に残すことができました。 もちろん、参加者の方からのフィードバックもたくさんいただいているので来年も参加することだできたらそのあたりを改善したより良いDroidKaigiを提供する側にいたいと思っています。

スピーカーとしても初参加

スピーカーとしても初参加でした。 僕が勤める会社からは3人のスピーカーが登壇していたので、発表当日までに3人で進捗どうですか?と確認をしあって進めていました。これをやっていたおかげで前日にあわあわするということもなく、スムーズに発表の時を迎えられたと思っています。

自分の当たり前は誰かにとっての知見

Welcomeトークでスピーカー代表のlvla0805さんも話していましたが、僕の発表テーマもこんなん話して需要あるのか?と思っていました。 しかし実際には採択され、発表することができ、アフターパティーでは「発表良かったです!私が聞いた中では一番でした!」と言ってくれる方も居ました。褒められて死ぬかと思いました。 来年もとりあえずなんかしらのCFPを出そうと思います。

DroidKaigi2017総評

控えめに言って最高でした! 運営、スピーカー、スポンサー、来場者などなど全ての関わった人で作られた最高の会でした!

Freelineとはなにものか

Android AndroidStudio

これはAndroidその2 Advent Calendar 2016の23日目の記事です。

はじめに

昨今Androidのbuildまわりの話は結構盛り上がっているなーと感じます。 Androidのbuildをしてるとマシンリソースをもっていかれて他の作業に支障がでたりすので、自分のマシン以外に誰も使ってないマシンをbuildサーバ的に使ったり、GCPなどのクラウドリソースを使ったりすることで解消する方法が様々出てきています。 それ自体は最高だな!自分も職場では使っていくぞ!という気持ちで実際空いてるiMacを使ってbuildしたりしています。

一方でbuild自体が高速で終わればbuild中に何分間も他のことができない!みたいな状況はないのではないかとも思います。 また個人開発として考えた時に、札束で叩く選択肢はなかなか取りづらいよなーと思ったりもします。 そこでひとつの解決策として良さそうなのが今回紹介するalibaba/freelineです。

Freelineとは

概要

githubのREADEMEの導入部分を引用すると下記のように紹介されています。

Freeline is a fast build and deployment tool for Android. Caching reusable class files and resource indices, it enables incrementally building Android apps, and optionally deploying the update to your device with hot swap.

Developed and used by Ant Fortune (about us) Android Team, Freeline has been significantly saving time in daily work. Inspiring by Buck and Instant Run but faster than ever, Freeline can finish an incremental build in just a few seconds. No more recompile and reinstall again and again before seeing your modifications, Freeline brings life-changing development experience for Android.

要点だけまとめるとこんな感じです。

  • ホットスワップを可能にするぜ!
  • BuckInstant Runにインスパイアされているが、それらよりもより早く動作するぜ!
  • FreeLineはAndroid開発生活に変革をもたらすぜ!

完全に意訳ですが、ノリとしてはこれぐらいハッピーな感じで書かれてるんじゃないかと勝手に理解しました。

詳細

特徴

  • マルチモジュール構成のAndroidプロジェクト開発の高速化が可能
  • 並列でのインクリメンタルビルドが可能
  • メインプロセスがクラッシュした場合でもホットデプロイが可能
  • etc

また下記の項目の変更に対応しているようです。

Java drawable, layout, etc. res/values native so
add
change
remove x -

他にもたくさんあるようですが、RADEMEに記載されているので興味がある方はご覧ください。

まだまだな点

  • 初回だけちょっと遅い
  • res/values の削除には対応できていない
  • 抽象クラスのインクリメンタルビルドはできない
  • Kotlinはサポートしていない

最近の国内でのKotlin熱を考えるとサポートしてないのはちょっとつらいかもしれないですね。

Freelineの使い方

githubにsampleプロジェクトがあるので、それを使ってみます。 手順はこれだけ。

git clone git@github.com:alibaba/freeline.git
cd freeline/sample
./gradlew initFreeline
python freeline.py

実際にコマンドの実行をしているところを動画に収めたのでご覧ください。 (本当はttyrecとttygifを使ってgif化したかったのですが、謎のエラーでttyrecが使えず今回の記事では諦めましたorz)

なんかtaskが並行実行されてる雰囲気がわかっていただければ幸いです。 既存の自分のプロジェクトに導入する場合はbuild.gradleへの記述などありますが、READEMEに書いてあるので簡単に導入可能です。

おわりに

手元にある大きめのプロジェクトはkotlinが入っていたりしてうまく動かなかったので、Freelineでどれだけ早くなるのか比較を書くことができずに終わってしまいました。 この記事をみてFreelineを試した方にぜひ比較結果をコメントもらえたらなーと思っています。

またほとんどFreelineのREADMEを紹介するだけになってしまいましたが、今回本当に紹介したかったのは下記の記事です。 中国語で書かれており、内容の把握に骨が折れますがFreelineがどのように実装されているのか詳細な紹介がされています。 Androidフレームワークの知識が必要なため僕自身グーグル先生とともに解読中です。

参考

Pokémon GOを一足早くやってみた

雑記

野良apkが配布されてたのでやってみました!

アプリ起動後の登録画面 f:id:futabooo:20160715213713p:plain

テレビから離れてみてね!的な画面 f:id:futabooo:20160715213728p:plain

オーキドじゃない!! f:id:futabooo:20160715213731p:plain

それなりにアバターいじれる f:id:futabooo:20160715213735p:plain f:id:futabooo:20160715213741p:plain

近くにいるらしい。 f:id:futabooo:20160715213756p:plain

現実背景をうつすこともできる! f:id:futabooo:20160715213808p:plain

ヒトカゲいた!

野良apkは下記リンクから。DL、インストールは自己責任でおねがいします。 Pokémon GO 0.29.2 APK Download by Niantic, Inc. - APKMirror

Amazon Kindle本のセールのAndroid界隈の本をまとめてみた

雑記 Android

はじめに

全部Kindle本です。Androidで検索すればもっといっぱい出てきますが、有名ドコロだけ集めてみました。 半分ぐらい持ってなかったので買っちゃいました。

AndroidKindle

Google Androidプログラミング入門 改訂2版 (アスキー書籍)

50 Android Hacks 開発現場ですぐに役立つヒントとコード (アスキー書籍)

良いAndroidアプリを作る139の鉄則

Smashing Android UI レスポンシブUIとデザインパターン

Android Pattern Cookbook マーケットで埋もれないための差別化戦略

Android Security 安全なアプリケーションを作成するために

これはちょっと番外編だけど。 Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

JIRAのMentionコメントをSlackのDMで通知するスクリプト

CoffeeScript Hubot

追記(2015/05/19)

このまま使うには一度botとDMのやりとりをしておく必要があります。

はじめに

JIRAのコメントの通知がメールでしか来ないと見逃すし、Slackに流れてきたら楽なのにって思ったので作った。

使い方

  1. JIRAのWebHooksに[your heroku app url]/hubot/jira-comment-dmのURLを登録し、issueのupdatedだけチェックを入れておく。
  2. JIRAのURLをheroku config:add HUBOT_JIRA_URL=[your jira url]環境変数に登録しておく。
  3. (必要であれば)JIRAのハンドルネームとSlackのハンドルネームが異なる場合はmapに登録しておく。

サンプル

こんな感じでDMが届く。仕事しろって言われてる。 f:id:futabooo:20150504192004p:plain

# Description:
#   hubot monitoring jira comments mention and slack DM
#
# Dependencies:
#   None
#
# Configuration:
#   HUBOT_JIRA_URL
#
# Commands:
#   None
#
# Author:
#   futabooo


# Use if the user name of jira and slack is different
# "jiraName": "slackName"
map =


module.exports = (robot) ->

  convertHandleName = (name) ->
    map[name] || name

  extractHandleName = (body) ->
    temp = body.match(/\[~.+?]/g)
    unless temp is null
      name = []
      for i in temp
        name.push("#{i}".replace(/[\[~\]]/g, ""))
      return name

  robot.router.post '/hubot/jira-comment-dm', (req, res) ->
    body = req.body
    if body.webhookEvent == 'jira:issue_updated' && body.comment
      issue = "#{body.issue.key} #{body.issue.fields.summary}"
      url = "#{process.env.HUBOT_JIRA_URL}/browse/#{body.issue.key}"
      handleNameList = extractHandleName(body.comment.body)

      unless handleNameList is null
        for i in handleNameList
          robot.send(room: convertHandleName(i),
            "*#{issue}* _(#{url})_\n@#{body.comment.author.name}'s comment:\n```#{body.comment.body}```")
    res.send 'OK'

さいごに

正規表現力が低くて一発で名前を抜けてないけど、動いてるから運用上問題ないと思われる。 人が増えたら超大変だろうなぁと思ってる。

参考

mnpk/hubot-jira-comment · GitHub

株式会社はてなに入社しました

株式会社はてなに入社しました

株式会社はてなに入社しました - hitode909の日記

iTerm2でpowerline、カラースキームはsolarizedで!

iTerm

はじめに

今までずっとbashだったので、そろそろzshにしよう!と思い作業を進めていたら、zshの環境を用意することよりも見た目に拘っていたら、powerlineの見た目を用意することに結構かかったので備忘録です。

最終成果(とりあえず満足!) f:id:futabooo:20150301002430p:plain

zshの導入

導入というのもへんな話ですが、.zshrcとかを用意します。 ここは結局oh-my-zshを使いました。一瞬です。

oh-my-zshのthemeをpowerlineにする

こいつに時間がかかったわけですが、大きく2つハマりました。

  • フォントがうまく表示されない
  • 色合いが気に食わない

フォントについて

自分でこれじゃなきゃ嫌だ!とかがなければpowerline/fonts · GitHubからパッチが適用済みのフォントが落とせるのでそれでもいいと思います。僕はRictyが使いたかったので、手動でパッチを当てました(終わったあと出てきましたが、Rictyのパッチ済みフォントはbrewで落とせるらしいです。)

ここを参考にRictyにパッチを当てます。

[Mac + tmux + iTerm] ステータスバーをpowerlineでカッコ良くする - Qiita

色について

このテーマをREADMEを見つつ設定します。

KuoE0/oh-my-zsh-solarized-powerline-theme · GitHub

しかし上の設定だけだとiTermのデフォのカラースキームと全く合わないので、iTermのスキームをsolarized-darkに変更しました。iTermのカラースキーム変更は以前書いた下の記事を参考にしてください。 iTerm2のカラースキーマまとめ - WhereToStart