builderscon2017はやっぱりエンジニアの最高のエンタメ

builderscon2017に行ってきた。今回は2日間、5トラックととても充実。

Desktop Apps with JavaScript

  • SlackのDesktopアプリ作ってる人のElectron入門
  • WindowsMacOSLinuxの各環境を数人で作ってる
  • Electronだと、Chrominiumの中で、普通にnodejsのフル機能が使える
  • 開発は全部JSじゃなくて、必要なところはC++を組み合わせている
  • Electronの成功してるプロダクトとしてVSCodeを上げる。あれも数人からスタートしたプロダクトだし、検索機能はC++で類似点が多い。
  • 本当に、ブラウザ上で、簡単にnodejsのフル機能が使えていることが、印象に残った

Lunch Session A by VOYAGE GROUP, Inc

  • お弁当ごちそうさまでした
  • だらだらと技術話に花を咲かせる感じ、雰囲気良かった

Lunch Session B by Momentum K.K.

  • お弁当ごちそうさまでした
  • 普通に会社紹介だった

真のコンポーネント粒度を求めて

  • すべてグローバル変数のようなCSSで、コンポーネント分割をどうするかという話
  • ドメインに近い領域で適切に設計を!AtomicDesignと言う話から、そんなの長続きしないし、一度書くと修正したときの影響が掴めないから、機能毎に分けてしまって、機能がなくなったときに捨てられるようにするという、EnduringCSSに悟ってしまうまでのストーリーが凄く面白く、考えさせられた。
  • テストもできない分野だから、こうなるのもわかる気がする。

Goで実装する軽量マークアップ言語パーサー

ディープラーニングを加速するVolta GPUプラットフォーム 

  • NVIDIAの人による次の世代のGPUアーキテクチャ解説
  • Tensorという、行列のAB+Cの演算でで、ABはfloat16、+Cはfloat32でできる演算器が入る。これが大きい。
  • 2017年秋に一般向けも投入されるらしい。
  • GPU欲しくなった
  • ひたすらアーキテクチャ解説で面白かった

LT大会 

  • 分割QRで、小さいの複数の方が、読み取りやすい。読み取り高速なデモ。
  • 半田失敗しても、そのポート使わなければ大丈夫だったw
  • Validationは人類には早かった
  • 独自記法たのしい
  • POとプログラマの立場逆転w。アプリ便利でした(iOS)
  • あのふわっと現れる広告は死すべき
  • scheme.orgを初めて知りました

3Dプリンタで作る階差機関コンピュータ

  • 階差機関の詳しい説明も、3Dプリンタでの設計の話も興味深く聞く
  • 1800年代よりも、部品の精度が上がっている現代
  • すべてを3Dプリンタで作らず、ベアリング、シャフトは金属のものを使った方が良いものである
  • 細かいテクニックも3Dプリンタという知らない世界で面白かった

Ionic 3+ではじめる次世代アプリ開発(HTMLでiPhoneアプリをつくろう!)

  • あくまでHTML5で、ネイティブライクなUIが作れるフレームワーク
  • ホントに綺麗なUI。60FPSでイベントとれるってよ。
  • 業務アプリ作るならこっちだな! 

Lunch Session C by Cybozu, Inc. 

  • お弁当ごちそうさまでした
  • キントーンの説明。ぽちぽちで、業務アプリが作れる。
  • エンジニアにとっては仕事取られる感。

Lunch Session D by Supership Inc. 

  • お弁当ごちそうさまでした
  • 端末がモバイルに変わって、検索時に変換しないとか、スペース空けないとかになったのに、Googleが圧倒的な技術力で対応しているので、他のサービスでもそのレベル要求されるの辛い、けどやってる

OSSで始めるセキュリティログ収集

  • facebookのosqueryを使って、ログインろぐとかをとる
  • いくつかのレコードがセットになっているのも公開されている
  • 内部でRocksDB使ってるらしい
  • まず取得からやってみたい

Factory Class

  • Kickstarterで注目されたキーボードを、中国の工場と契約して量産する苦労話
  • 工場の選定が大変だが、それがほとんど。
  • 工場のボスと話せなければ、自分はその工場にとって適切なレベルの顧客ではないと
  • 話として聞くのは楽しいが、ハードウエアを量産することの難しさを知る

Serverless Server Side Swift 

  • サーバサイドSwiftから、AWSLambdaでSwiftを動かすところまで
  • Swiftの話だけではなく、サーバレスに乗っかるためのノウハウがたくさんで、golangで同じ事できないか聞きながら調べてた調べてた
  • Swiftにこだわる人達の文化が見れて面白かった

ここが辛いよサーバレス。だが私は乗り越えた

  • サーバレスの基盤サービスが死ぬこともあるよ!と言う話から、置き換えれるもの用意しておけと

他 

  • 朝食がとってもおいしかった
  • コーヒー、水が飲めるのありがたい!

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は便利っすね!