buildersconは開発者の最高のエンターテイメント

buildersconに参加してきました。

builderscon tokyo 2016 - builderscon

同じITでもその人の得意分野でも、他が知らない分野を紹介しあう様で、とても勉強になり、刺激になった。

OSSWindows で動いてこそ楽しい

OSS は Windows で動いてこそ楽しい - builderscon2016

mattnさんの熱いWindows対応は辛いよと言う話。本当に辛いよしか出てこなかったが、それをほんと楽しんでるのはわかった。

Windowsのポジティブな面を質問して、Excelとはがきソフトが動くくらいしか出てこなかった。

Organizing software with Artificial Intelligence

https://www.slideshare.net/youichiromiyake/builderscon-2016-69784983

https://www.slideshare.net/youichiromiyake/builderscon-2016-69785059

ゲームにおける人工知能の考え方とその発展の歴史。「知覚+思考=知能」と知覚と思考を分けて考え、知覚が重要である点、発展させるために入れ子にして考えるなど、概念の説明が凄くうまく、理解することが出来た。

これ動画で欲しい。

「片手間JavaScripter」にも知ってほしい、Vue.jsで実現するMVVMパターン、Fluxアーキテクチャとの距離

アーキテクトならMV*の概念のと戦っている。私もその一人だが、Vue.jsもその戦いの末、fluxに辿り着いたのがよく分かる。

丁度今の開発メンバーがflux使いたいと言い出したので、タイミング良く勉強になった。

そろそろプログラマーFPGAを触ってみよう!

http://qiita.com/kazunori279/items/a9e97a4463cab7dda8b9

ノイマンコンピュータの世界というパワーワード。ソフトウェアエンジニアとして、FPGAを触って武器にしたいと強く思った。

一から始めるJavaScriptユニットテスト

https://speakerdeck.com/shibayu36/js-unit-test-from-scratch

チュートリアルセッションのような形。OreillyArchitectureConfferenceに参加した際にも、チュートリアルセッションDayがあって、それもこのくらいのレベルで、丁度良かった。

丁度私がWebアプリの開発をすることになって、そのまま使えそうで助かった。

mocha、jasmine、karma、chaiなど、多くのオープンソースがあるが、どういう体系になっているのかがまず分かって、理解がすんなり進んだ。

Bluetooth キーボードの作りかたaccepted

キーボードというプログラマならば誰しも一家言あるものをテーマに、ITハードウェア機器開発の流れを知るとこができた良い講演だった。

全体

フルスタックエンジニアのつもりでしたが、知らない分野はまだまだあって、それらの深い講演が聞けて、自分の興味が刺激されて、実に楽しかった。

次も是非参加したい。参加費1万円くらいでも余裕。開発者の最高のエンターテイメントでした。

Dockerにホームディレクトリをマウントしちゃおう

.NET Core RC2が、Ubuntu 14.04には対応しているが、Ubuntu 16.04にはまだ対応しておらず、自分のノートPCはもう16.04にあげてしまったため、なんとかDockerの力を借りて動かせないかと試行錯誤したところ、動かすことに成功した。 このノウハウは他にも使えると思いました。

PATHの通ったところに、dotnetというファイル名で以下のファイルをおいた。

#!/bin/bash
docker run -it --rm \
    -u $UID:`id -g` \
    -v $HOME:$HOME \
    -e "HOME=$HOME" \
    --workdir=`pwd` \
    --entrypoint=dotnet \
    microsoft/dotnet:1.0.0-preview1 \
    $*

ポイントは以下の通り。

  • このコンテナの中に動かしたいプログラムが入っている(今回はdotnet
  • docker run -it --rmにより、実行後すぐにコンテナを削除し、コンテナを残さないようにする
  • -u $UID:`id -g`により、コンテナ内でもホストのユーザID、グループIDで実行できる(しないとroot権限になる)
  • -v $HOME:$HOMEにより、コンテナ内にホストのホームディレクトリがそのままマウントされ、使える
  • -e "HOME=$HOME"により、ホームディレクトリを認識させる(コンテナ内でexport HOME=/home/74th/した効果)
  • --workdir=`pwd`により、カレントディレクトリで実行させる。ホームディレクトリをまるごとマウントしているため、そのディレクトリが存在している状態になる。
  • --entrypoint=dotnetにより、コンテナ実行時に動かしたいプログラムを指定する
  • 最後の$*により、このシェルスクリプトの引数をそのままdocker内のコマンドに渡す

これにより、.NET Coreのプロジェクトを以下のようにビルド、実行できる。

$ dotnet restore
$ dotnet build

前にも同じことをしていたが、以下の問題があった。

  • dockerコンテナ内はroot権限で実行されるため、docker内で作成したファイルなどの権限がrootになってしまう
  • ホームディレクトリ上の設定ファイルを参照するプログラム(dotnetでは$HOME/.nuget/を使う)では、そのユーザのホームディレクトリがないため、うまく動かない

こうやって小さく使っても、やっぱりdockerは便利っすね!

ChromebookC720を購入して、Linuxをインストール

f:id:j74th:20160529211634j:plain

Chromebook上でLinuxが動くと知り、Chromebook C720を購入した。 今の自分のMacBookProからは半分の重さの1.2kgになり、気軽に持ち運べるPCになった。 C720はSSDが交換できるため、128GBSSDに交換し、Galiumosをインストールした。

acer C720はヤフオクで落札したが、これが入手できない場合、acer CB3-131をamazon.comにて購入する予定だった。日本に発送しても2万ちょいで手に入る。

www.amazon.com

ChromebookはARMではなくIntelのCPUならばどれでもLinuxがインストールできるようである。そういえば、ChromebookAndroidアプリが動くと発表があったが、きっとARMでしか使い物にならないだろう。

Galiumosのインストール

chrxという簡単にLinuxをインストールできるツールがあるので、これを利用する。

GitHub - reynhout/chrx: Chromebook Unix

Linuxをインストールするまでにやった手順は以下の通り。というか、chrxに書いてあるとおり。

  • ChromeWebStoreからChromebook Recovery Utilityをインストール。SDカードにリカバリディスクを作成する。作成後、SDカードは抜いておく。

chrome.google.com

  • ESC+F3+Powerで起動する。OSが見つからないよと出るが、Ctrl-Dを押す。するとOS VerificationをOFFにするリカバリが始まる。この時にSDカードが必要かも。
  • 次に起動した時、起動前画面にて危ないモードだよとでるが、Ctrl-Dを押す。これでDeveloperModeになる。
  • Ctrl+左上の「→」キーを押すと、コンソールが開く。ユーザ名:chronos でログインできる。
  • chrxに記載のあるとおり、以下のコマンドでインストールする。1回目はインストールの準備のみで、再起動後2回目に同じコマンドを入れるとインストールできる。なお、sudoは不要だった。
curl -Os https://chrx.org/go && sh go -z Asia/Tokyo

これでしばらくすると、再起動して、起動前画面にてCtrl+Lをタイプすると、Galliumosが立ち上がる。他にもLubuntuなども選択できるが、GalliumosはChromebook用に作られたUbuntuベースのディストロで、タッチパッドをいい感じにしてくれるツールやChromebook用のKeymapなどが自動でインストールされて快適さが違うので、Galliumosを使うようにしている。ただしUbuntu15.04ベース。

(2016/06/04追記) 2.0betaは16.04ベースで、sh go -r nightlyとするとインストールできる。特に不具合はないのでこちらを使っている。

Galiumosの設定でやったことを記載する。

日本語IMEをインストールする

Synaptic Package Manager->ibus-mozcをインストール

Language Support->Install/RemoveLanguage->Japaneseを選択

Language Support->Keyboard Input Method System->Ibusを選択

Keyboard Input Methods->Input Methodタブ->Japanese-MozcをAdd

キーボードのキーをF1-F10として動作させる

Galiumosデフォルトでは、それぞれ音量キーや液晶の明るさなど目的通りのキーになる。しかし、F1-F10キーとして使いたいので、設定を変える。

Keyboard->Layoutタブ->Use system defaultsにチェック

検索ボタンをCtrlとして使う

Galiumosでは検索ボタンはmetaキー(Winキー)として動作する。これを、xmodmapで左下のCtrlキーと入れ替えを行う。

~/.xmodmapに以下を記載する(C720の場合)。あと、このファイルには実行権限をつけておく必要がある。

remove mod4 = Super_L
remove control = Control_L
keycode 133 = Control_L
keycode 37 = Super_L
add control = Control_L
add mod4 = Super_L

参考:

bearmini.hatenablog.com

さらに右AltでIMEのオンオフを切り替える

僕は最近英語キーボードを使っていて、IMEのオンオフを右Altで行うようにしている。Macの場合は、Karabinarを使う。Windowsの場合は、ChangeKeyを使って右AltにF13キーを割り当て、IMEのオンオフをF13キーで行えるように設定することで実現している。

Linuxの場合は、~/.xmodmapを書き換えて、右AltをF13キーとして認識させる。

keycode 108 = F13

さらに、MozcのPreferenceのKeymapのcustomizeにて、以下の設定を追加。

Mode Key Command
DirectInput F13 Activate IME
Precomposition F13 Deactivate IME

終わりに

Linuxノートを使っていると、MacがなくてもLinuxがあれば結構平気なことに気づく。