仕事の奴隷解放宣言

5期目終了のお知らせ - Hacking My Way 〜 itogのhack日記

あと、直接成果には繋がらないけどやりたいと思ってることがあるんだけど、、、それはまた、別の機会で。

と、半年くらい前から準備をしていたんだけど、そのやりたかったこととは、1ヶ月休み。いろいろと調整をして2月は仕事をお休みし、ニートになりますよ!

とはいえ、受託の仕事をやらないというだけで、自社の雑務でやらなきゃいけないこともあり、丸々一ヶ月遊んでいられるわけではなく、半分でオーバーフローしたタスクを消化して、半分は思う存分遊ぶぞってところ。

そもそも東京を離れたのは、思い立ったときに山登りに行ったり星を撮りに行ったりその他諸々自由に時間を使うためだったのに、気がつけばあれこれ追われる日々が続いてしまっていた。

特に、長い休みが取れなくなってしまったのには危機感を感じていて、実績として海外にはここ2年行っておらず、国内も東京上田以外のところにはほとんど行ってない。

フリーランスやウチのような小さな会社で仕事をもらえることは嬉しいことなんだけど、ずっと続いてしまうと自分が意図しなくても抱え込む仕事が多くなり、休んだり、あるいはその仕事から抜けることができなくなってしまう。

自分が必要とされる、と言うのはいい意味で考えると長い時間をかけて信頼関係を築いてきた証だと言えると思う。でも悪い意味ではぬるま湯に浸かった状態になりかねない。それはお客さんにとっても、エンジニアである自分にとっても良からぬことだ。

横浜から磐田に電撃移籍した中村俊輔が、高橋尚子がインタビュアーを務めるTV番組で質問に答えていた。

Q.サッカーに集中したいのにサッカー以外のことで悩むことが多かった?

A.ほぼそうです。
練習行くのがつらい。
試合に勝ってもなんかこう喜びが起きない。それが一番あってはいけないこと。

サッカー小僧、サッカー始めた頃の感覚に戻りたい。
そうじゃないとサッカーやってる意味がない。

エンジニアとしての自分も同じような気持ち。

好きなことを全力でやりたい。目先の利益や柵にとらわれず、それが出来る環境を求め続けて行きたい。

シリコンバレー式 自分を変える最強の食事

2016年に話題になった本の一つとして、大体の内容はネットで把握していたが確認のため読んでみた。

結果としては炭水化物を減らして、オーガニック食品を取ることが勧められているが、巷にあふれる根拠のない情報とは違って科学的な根拠に則っている体になっている。ただし、逐一論文が示されているわけではなく、基本的には本人の体験談によるものだ。

個人的に以前からプチ断食は断続的に行っていて、食事の抜き始め(いっぱい食べたあと)に空腹感が強いことは経験上知っていたので、ココナッツオイルを使うと導入時から大きな空腹感を感じることなく減量できることは発見だった。

最近は朝食にコーヒーとカカオ含有率の高いチョコレートを少しで済ませることが多いが、この本の理屈にはかなっていそうだ。一方で、朝食はヨーグルトとシリアルというを何年間もしていたが、それで体調が悪くなることはなかった。

結局のところ、食品の良し悪しって一般論よりも個人差のほうが大きいんじゃないかと思っている。アジア人と欧米人で消化できるできないの違いがあるとかって話もあるし、生まれも育ちも同じようでもアレルギーが発症したりしなかったりする。

本書では「カビ毒」が食品の良し悪しを決める大きな要素となっているが、個人的には健康なときは多少傷んだものを食べても大丈夫で、弱ったときに食べなきゃいいくらいの印象だ。

また、運動については週に1回筋トレとインターバルトレーニングを交互にやればOKと言っているが、これには根拠が乏しかった。

シリコンバレー」を冠しているため、より論理的な説明を期待してしまったが、一般にダイエット、健康系の書籍と言うのは根拠に乏しく、「○○するだけでこんなにハッピーになりました!」って感じの体験談(※効果を保証するものではありません)が多いため、このジャンルの中では論理的で内容は受け入れやすい。

Android Things ことはじめ


GoogleのIoT platformとしてAndroid ThingsおよびWeaveが発表されたのでさっそく触ってみたよ。
https://android-developers.googleblog.com/2016/12/announcing-googles-new-internet-of-things-platform-with-weave-and-android-things.html

Android Things https://developer.android.com/things/index.html

サポートプラットフォーム

Android Thingsは現時点で以下のハードウェアプラットフォームをサポートしています。

あとIntel® Joule™ 570xとNXP Argon i.MX6ULがcomming soonとのこと。
ここではRaspberry Pi 3にAndroid Things環境を作ります。

Raspberry Pi 3での環境構築

https://developer.android.com/things/hardware/raspberrypi.html

準備

必要なもの

  • Raspbarry Pi 3
  • 8GB以上のSDカード
  • HDMIケーブル
  • HDMI対応ディスプレイ
  • Micro-USBケーブル (電源用)
  • LANケーブル
  • SDに書き込みできる環境

一度環境を作った後は、ディスプレイは使わなければなくても大丈夫ですが、初期設定時は画面にIP Addressが出てくるのでディスプレイが必要です。
また、Raspberry PiはUSBデバイス機能がないため、USBでのadb接続ができずtcpipで接続しますが、初期設定時には有線LANに接続するためLANケーブルが必要です。

システムイメージの書き込み

以下からシステムイメージをDLします。
https://developer.android.com/things/preview/download.html

androidthings_rpi3_devpreview_1.zip

展開した以下ファイルをSDカードに書き込みます。

iot_rpi3.img

書き込み方法はラズパイオフィシャルサイトの以下ページよりWRITING AN IMAGE TO THE SD CARDに従ってください。
https://www.raspberrypi.org/documentation/installation/installing-images/

初期設定

Raspberry Pi 3に

  • イメージを書き込んだSDカード
  • LANケーブル
  • HDMIディスプレイ
  • 電源

をそれぞれ接続、挿入します。

すると以下のような画面が表示されるのでIPアドレスを確認し、adb接続します。

$ adb connect <ip-address>
connected to <ip-address>:5555

以下adbコマンドでWiFiに接続します。

$ adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \
    -e passphrase <Network_Passcode>

一度Wifi接続をすれば、次回からは起動時に接続し、画面にIPアドレスが表示されます。

アプリを実行する

アプリのサンプルがいくつかあるので実行してみます。ここではボタンを押すとLEDを光らせるサンプルを実行してみます。

https://github.com/androidthings/sample-button

HW

回路図はReadmeにスクリーンショットが貼ってあるのでそれで十分わかりますが、Fritzingのファイルはルートディレクトリに置いてあります(rpi3_schematics.fzz)
抵抗はプルアップが10k、LEDに直列についているのが470Ωです。

アプリのビルドと実行

アプリは通常のAndroidアプリと同様にAndroid Studioで開いてビルドして実行します。
実行時にdeploy targetでiot_rpi3を選択します。

ボタンを押すとLEDが光ります。

これだけだと、スイッチとLED直結してるのと変わらないw
画面はsetContentView()すらしてないので真っ白です。

これだけだとAndroidなくてもいいのでUIを連動させてみましょう。

TextViewをレイアウトに配置し、LEDのon/offに合わせて色を変えます。

             setLedValue(true);
+            mText.setBackgroundColor(Color.RED);
             setLedValue(false);
+            mText.setBackgroundColor(Color.BLACK);

これでHW入力をUI上に表示できました。

ソースはgithubに置いておきます。
https://github.com/itog/sample-button/tree/support-ui

新規プロジェクトを作成する場合はテンプレートがあるのでそれを使うのが良さそう。
https://github.com/androidthings/new-project-template

SDKについて

組み込みに必要のない機能がオプショナルもしくはサブセットになっています。
また、ブート時に自動で起動するHome Activityが指定できます。

それ以外はごく普通のAndroidといった感じなので、お手軽なAndroid実行環境としても使えそうです。

物申さない勇気

何かに対して批判が殺到して中止になる、なんて事が今年何件あっただろうか。

そうした炎上騒ぎに対して、なぜ様々な配慮もなくそれを企画してしまったのか、それが実際に世にでるまでにチェックが入るような仕組みはなかったのか、と思うことが多いのは確かだ。

ただ、それをこぞって批判し、中止に追い込むというのはやりすぎなんじゃないだろうか。

実際、多くの人にとってはそれはニュースにならなければ知りえなかったことだし、自分の身の回りには関係のないことだ。

それなのに、「正しさ」を盾に他人を攻撃する。正論ではあるので、議論には勝てるだろう。でも、現実世界には正論が通じないことが多くあるのは誰もが知ってることだろう。

困るのは、間違った行為を批判することを批判すると、間違った行為を肯定していると取られてしまうことだ。そうではなくて、間違っているとは思いつつも、許容範囲なんじゃないかと言っているだけなんだけど。

正しいか、正しくないかの議論をしても針の筵になるだけ。「たいしたことない」ことを表明するには、そのことに言及しないことくらいしかない。

誰もが何かにつけて評論をしたくなるこんな時代だからこそ、ちょっとくらい間違った行いを見ても「物申さない」勇気が必要なんじゃないかな。

スタッフには会社を有効活用して欲しいという話

最近入ったスタッフに必要な本があれば経費で買うよ、と言ったところ

「基準はありますか?漫画はダメですよね?」

と質問が返って来た。
ちょうど世間でもエンジニアに対する福利厚生関係が話題になっている(http://togetter.com/li/1051428)ので公開回答しておこう。

結論からいうと漫画でも問題ない。というか図書費と言っているけどメディアは一切関係ないのでDVDでもカセットテープでもOKだし、なんなら備品消耗品の類でもOK。じゃあ条件はないのかといったらもちろんそんなことはなく、条件は、

会社が費用を払うべき理由を論理的に説明できること。

だから、技術書であってもその理由が「なんとなく」だとNGだし、漫画であっても筋が通ってればOK。例えば漫画があることによってコワーキングスペース稼働率が上がる、というのは十分考えられる理由だろう。

イベント参加費用も同じ。ただ、図書費は値段が知れてるのですんなりOKになる可能性が高いけど、そうでないものはコスパまで考慮に入れる必要がある。情報収集のためなら一人行けばいいのに複数人行きたい、となったらそれは選抜するか、複数人行くだけの理由が必要となる。

そしてもう一つ、終わったらレポートを提出すること。事前条件は「説明できること」だけどそれが終わったらその推論が正しかったかどうかの検証は必要で、間違っていたら次からその論理は通用しなくなる。勉強するためのに本が欲しいといって買っても、読まなければ次に同じ理由で本は買えない。

個人的にはこういうの当たり前だと思っているんだけど、日本の会社では受け入れられないことが多く、残念なことにそこに勤める社員も、会社を使って自分が成長しようという考えを持てなくなってしまっていると思う。


さて、ただいま長野県上田市にあるFabスペース「Fab古民家」ではスタッフを募集しています。

スタッフはFab古民家の設備を業務時間外に基本無料で使ってOK、必要な備品も上記のように説明できれば購入OK。3Dプリンタレーザー加工機を使って自分の作品作りをする人大歓迎ですよ!

詳しくはこちらをご覧ください。
http://pigmal.com/recruit/

サッカー選手になりたいゆとり君

「将来はリーガ・エスパニョーラで活躍するサッカー選手になりたいんですよね」

「へぇ。今はどこのチームにいるの?」

「チームには入ってません」

「えっ、じゃあどうやって練習してるの?」

「まだ練習してないんですよ。教えてくれる人がいないんで」

「一人でも出来る練習はいくらでもあるでしょ」

「独学でやってプロになれるんですか?」

「始めるきっかけはみんな独学、というか好きでやってるんだよ」

「ちょっとリフティングをやろうと思ってみたんですけど、それがなんの役に立つのかわからないんですが」

「ボールタッチはサッカーやる上で全てにおいて必要な基礎だよ」

「このチームに入るとどういうことを教えてくれるんですか?」

「まずは走り込みだね。基礎体力をつけないと」

「ただ走るだけですか?」

「走るのにも色々あるけど、君のレベルではまず普通に走ることだね。今日からでも出来るけどやる?」

「やる気はあるのですが忙しいのですぐにはできません」

「いつからやるの?」

「今週は試験期間で、来週は友人と旅行に行くのでそれ以降になります」

「そうですか。その先は毎日練習できますか?」

「ゲストハウス作りたいので毎日は無理です」

「ゲストハウスはサッカーとなんか関係あるの?」

「地域振興にも興味があるので」

「サッカーやる気ないよね?」

「やる気はあります。リーガ・エスパニョーラに行って日本代表でも活躍したいです。夢なんです」

「…がんばれ」

※この会話はフィクションであり、実在の人物・団体とは一切関係ありません

ストレスフリーなコミュニケーションのために

仕事のストレスの一番の原因は人間関係だと言われている。人間関係のトラブルの多くはミスコミュニケーションによって起こっていると思うが、コミュニケーションのプロトコルを規定することによって、このストレスはかなり減らすことが出来る。

以下は私がやっていることの箇条書きだ。

プロトコルが合わない者同士が通信する場合、受取側が変換するか、発信側にプロトコルを変えてもらう必要があるが、そういう作業は徒労に終わることが多いので、ハンドシェイクの段階で切るようにしている。

基本的な考え方
  • コミュニケーションとは双方の意思疎通と捉え、一方的な都合を押し付けるものではない
  • コミュニケーションツールはそれぞれ役割があるので使い分けをする
    • 一つのものですべてを解決しようと思わない
    • 最近は多くのサービスで文字チャットと音声・ビデオ通話の両方に対応しているが、混乱を避けるため1ツール1用途にすることが望ましい
  • 情報は簡潔に記述する
    • 時候の挨拶とか入れずに要件を伝える
  • オフラインでのコミュニケーションの結果はオンライン上でもシェアする
文字チャット(slack, fb messenger)
  • 気軽に情報をやり取りするためのツール
  • アプリやサービスの不具合や疑問点など気になったものを気軽に投げる
  • DMやメンションを多用しないこと。あまりに多いと、重要度が低いものとして扱われる。
  • 必ず返事がほしいもの、重要なものについてはメールで行う
  • メールやタスクのステータス更新などのリマインドは緊急なものに関してのみ行う
  • 話題となっている情報元のリンクを貼る
    • 冗長であっても必要な人がいれば再度リンクを貼る
  • レスポンスを返すのは必須ではない
  • チャットサービスはいくつかあるが、現状は以下のような使い分けをしている
    • Slack
      • 業務用のグループの場合確実に見て必要なものにはレスをする
    • FBメッセンジャー
      • Slackを使っていない場合の連絡手段として
      • 簡単に答えられるものには答えるが、詳細は他の手段になることが多い
    • Line
        • 業務では使用しない
音声・ビデオ通話、電話
  • 音声やビデオ通話は参加者の時間を拘束するということを忘れてはいけない
  • 音声・ビデオ通話はリアルなmtgと同じ扱い
  • skypeまたはhangoutを使っている
  • 電話も同様の扱いで、予定に入っていない電話には出ない
課題管理
  • 基本的に、課題の登録及びアサインはアサインされる側の同意をとる
  • アサインされた課題は必ず実施する
  • チャットやmtgで話し合った内容、とくに決定事項に関しては課題に記録しておく
  • 優先度、重要度などは使わない
  • backlog, redmineなどを使っているが上記ルールを守ればツールは何でも良い
メール
  • 確実に返事がほしいもの
  • エビデンスとして残しておきたいもの
    • 契約関係は本来契約書があるべきだが、手続き上時間がかかる場合など暫定的なものに限りメールでも可とする
mtg
  • mtgも電話も、開発と同じように工数が計上されていることを意識すること
    • mtg中は開発が進まないので直接的なアウトプットにはつながらない
  • mtgの約束などはメールもしくはGoogleカレンダーで共有をする