「リモートチームでうまくいく」倉貫義人さんと語らう会に参加しました。

toyamarb.doorkeeper.jp

に参加してきました。 自分もリモートワークしてるので、そのへんのつらみの解決策が聞ければなーとなんとなく考えてました。

セッション

  • 求人で来る人が地方が多い。都内は比較的少ない。
  • 会社としては、リモートワークが前提。都内にいても、行っても行かなくてもいい。
  • 間口広げるために、募集をリモート前提にした。
  • Skypeで音声繋ぎっぱなしは、人数が多くなるとつらい。
  • Results-Only Work Environment アメリカのものは、完全に個人のもの。
  • ただ、アメリカでも個人主義の考え方をやめ始めている。チームで助け合う。
  • エンジニアの評価は、短時間では出来ない。悪いコードを量産した方が、短期的には良く見える。
  • チームでやるとは、スポットの仕事をさせるわけではない。受発注ではない。
  • リモートワークという言葉の定義を浸透させたい。クラウドソーシングではない。
  • 会社とは概念的なものであり、ソフトウェアで表現できる。

ビアバッシュ

ビアバッシュでは、いろんなことを聞けましたが、立ってピザ食べながらだったのでメモもなく、印象に残ってるものだけ。 (ニュアンスが異なっていることは多々あると思います)

  • SonicGardenでは、営業活動をほぼ(?)していない。お問い合わせから依頼来る。
  • これまで、新卒採用はフォームすらなかった。その中で応募してきた人たちなので、その教育などは他では流用出来無さそう。
  • セキュリティ対策とかでガチガチにするぐらいなら、そういうのが必要無い人を採用するところにコストをかける。「なんでそんなに信頼ならない人を採用してるの?」
  • 毎週の振り返りで、「先週は夜遅くまでやって、ここまで出来ました!」がKではなくPである、という風に教育していく。何が良い・悪いなどの社風はそうやって受け継がれていっている。
  • 基本リモートワークしてるので、会社の椅子的なキャパが余ってる。家を借りようかと考えてる。
  • 会社では、Skype打ち合わせが輻輳するようになってきている。(他の打ち合わせの声がうるさい、みたいな)
  • SonicGardenは裁量労働制
  • リモートワーク推進協議会的なものを進めている。"リモートワーク"の言葉の定義を正しく認知してもらう。推進する会社を増やしていく。

なんとなく、SonicGardenはエンジニアにとっての理想郷を目指している感じは受けました。 さらにそれが一般認知されており、お客も採用も上手く回っている感じ。 売上の向上とかを至上命題にしなければ、こんな会社の運営の仕方もあるんだなぁと。

全員がリモートワーク前提でやっている、というのはかなりうらやましい。 Monstar Labでは、ほとんどが中目黒で、他に島根(4人)、鹿児島(1人)、富山(自分)という状態なので、リモートがマイノリティ。 なので、認識の内外で、リモートだから、、、という遠慮はある気がしてる。 なので、SonicGardenのやり方がそのまま持ってくることは出来ないけど、参考になるところを取り入れていきたいとは思う。

先週の富山合同勉強会もそうだけど、こういった有名な人の話を富山で聞けるってのはありがたいなー。 運営側はお疲れ様でした。 2週間後には平鍋さんの話も聞けるので、楽しみ。 Meetup #42 - Kanazawarb

富山合同勉強会2016

JavaOne 2015 San Franciscoフィードバック、そしてJava EE 8についてのアップデート

  • JavaOne 2015は1万人超
  • Sunの頃よりはまだ少ないけど、近づいてきている。
  • IoTの活用が強めに話された。
  • 2016のJavaOneでは、さらに事例がふえると予想。
  • Java8が出た後で増えてきている。
  • JCPへの参画拡大。営利団体でも無償化
  • キーワードはIoT, DevOps, microservice
  • IoT
    • JavaMEとかJavaSE embededとか。
    • マイコン上でJavaが実装されている。
  • DevOps
    • Pirates of DevOpsという動画が公開されている。
    • 2014のJavaOneでは7つ、2015では107にセッションが増えた。
    • セッションの選考委員会側が意図的に選んだ?
    • 自動化するツールは徹底的に使用しましょう。
    • その成果を継続的にチェックをしましょう。
  • Microservices
    • Gilt.comのセッション。ブランド品ディスカウントのECサイト
    • 毎日昼12時から数十倍数百倍のアクセスがある。
    • 2011まではJavaEEベースのシステムを運用。
    • 2015にMicroservicesの導入。
    • Playでフロント、Scala,Java,JavaScriptの小さなサービスと連携。
    • 1つのサービスは1000や2000行。
    • オンプレ→AWS上に移行している。
    • dockerを利用する。
  • JavaEE8アップデート
  • 最初のドラフトのレビュー中やレビュー完了の状態。
  • クラウド絡みのものは遅れ気味。
  • 7,8団体がレビューしている。
  • early draftの策定中であれば、まだ意見が通りやすい。後ろになれば通りづらい。
  • HTML5 / Web Tier
    • JSON-BはJacksonがメインで考えられている。
    • プロバイダの変更も可能。XML
    • JSON-PにJSON-Pointerが追加される。
    • "/0/phones/mobile"とかで特定のデータを取得・更新できる。
    • JSON-Patchでは、JSON形式で変更出来る。
    • MVC1.0が策定中。
    • 既存のJavaEEテクノロジーを組み合わせて実現。
    • JAX-RSCDIJSPとか。
    • HTTP/2
    • Server pushがServlet4.0の中に入ってくる。
    • CDIの範囲がMVC / JAX-RS / JavaSEに広がる。
    • 2つのパーツに分けられる。Full CDICDI Light。
    • Junit内でインジェクションが、標準で出来るようになる。
  • Adopt a JSR https://glassfish.java.net/adoptajsr/
  • まずは見るだけでも。
  • JavaOne 2016に行こう。

Project Jigsawではじめるモジュール

http://www.slideshare.net/skrb/module-programming-with-project-jigsaw

  • 使い方を中心に。
  • Client Side Javaを中心にやってる。Java SE, JavaFX
  • Huge Standard Lib
  • Hadoopは130のjarを読みこんだり。
  • JARが抜けてたり、依存関係のバージョンがズレてたり。
  • No Dependency, No Version, Public is TOO Public
  • 始まりは2005年。friendsを入れよう、という話が出た。
  • JSR 277は炎上中断、JSR 294はmoduleとして続く。
  • 2009年にProject Jigsawが始まったけど、2017のJava SE9に入る。
  • スコープの問題(OSGiをどうする?とか)で混沌とし、スコープをかなり狭めてSE9に入れる。
  • SE9で入る、ということが重要。
  • module extends JAR { dependency; exportation; version; }
  • module-info.javaに書く。src直下に置く。
  • module (モジュール名=パッケージ名にすることが多い) {}
  • requires javafx.controls;とかで依存関係を明示する。
  • exports (パッケージ名);で外部に公開する。
  • mainメソッド持ってるクラスはexportsに入るようにする必要がある。
  • requires public javafx.graphics;とやると、第三者にもpublicになる。
  • gradleはJigsaw対応を進めている。
  • コンパイル時には"-mp"を付ける。
  • モジュール作るときは"--create"が必要。"--module-version"でバージョンを指定できる。以上・以下は比較出来ない。
  • 実行時にも"java -mp"とかする。
  • rt.jarを全部読み込む必要が無いので、メモリに優しい。ちょっとだけ。
  • classpathに指定すると、unnamed moduleとして扱われる。
  • JavaSE8から、rt.jarを分けれる。循環参照とかをきれいにした。
  • module-info.javaに書かなくても、jdepsというツールで確認できる。
  • JLINKというカスタムJREを作れる。IoTとかでメモリの使用量を減らせる。
  • https://jdk9.java.net/jigsaw/ に既にあるので、すぐ使える。

Microsoft Java

  • AzureはLinuxでもdockerでも立てれる。
  • MicrosoftはJavaVMのパフォーマンス改善とかにも参加してる。
  • Azure上でのホスティングの選択肢
    • IaaS
      • クラシック or not。新しい方は、マシンだけじゃなく、グルーピングまで出来る。
      • MarketPlaceからも選択できる。WebLogicがインストールされているものとか。Microsoft+ベンダーが管理している。
      • VM Depotはコミュニティが作ったイメージがある。
      • 設定情報をJSONテンプレートとかに書いておけば、そこから構築できる。
      • サンプルはGitHubで公開されているので、それをもとに作れる。
      • 3rd partyのクラウドサービス
    • Cloud Services(PaaS)
      • OSまでを提供。JDKとかはメンテが必要。
      • 監視ツール、OSメンテ用の機能が提供されている。
      • ステージング・本番みたいなものを持っている。
      • スケール設定も簡単。
      • リモートデスクトップも出来る。
      • Eclipse, IntelliJツールキットがある。
      • macEclipseの方がオススメ。
      • JDK, APサーバ, 作ったものをGUIで選択してデプロイ出来る。
    • App Services(PaaS)
      • Tomcat or Jettyを選択し、そこまで管理してくれる。
      • warファイルのデプロイで動く。
      • Windows Server上で実行される。
      • Java以外にも、PHP / .net / pythonを動かせる。
      • Tomcat / Jettyは古いバージョンしか選択できない。
      • 継続的(自動)デプロイ機能を持ってる。
      • 障害・監視機能なども提供
    • Container
      • DockerはJava界隈でもトレンドになってきている。
      • マイクロソフトがDockerと提携してる。
      • 仮想マシン配ろうとすると、数G・数十GByteかかる。
      • Dockerは容量をかなり削減できる。
      • Windows Server 2016 TP3からDockerを利用できる。
      • Dockerを使うときはtutumが便利。
  • マイクロソフトはFeedBackを、本気で求めている。

Ruby 2.3 のてざわり

  • Java to rubyIDEを使わなくなった。REPLで試しながら書くようになった。
  • self navigation operator=ぼっち演算子
  • SQUIGGLY HEREDOCはインデントを取り除ける。
  • digはJSONとかで便利
  • Enumerable#grep_vはgrepの否定。正規表現マッチしないものを取得できる。
  • the did_you_mean gemはirbとかrails consoleで便利。
  • NameError#receiverはdid_you_meanで使われている。デバッグのときにも使えそう。
  • Hash#to_procは使いどころが思いつかない。。。

わたしの Ruby の楽しみ方

  • rackアプリケーションでTwitterのOmniAuth使ったアプリが100行レベルで書ける。

エンジニアが出来る貢献

  • 災害支援をITで。
  • 維持費がかからないように。サーバを持たない。
  • Google Formをお客さん作ってもらうと、仕様が固まる。
  • Googleスプレッドシートをデータベースにすると楽。

IoTで除夜の鐘を作った話

正確には、除夜の鐘"っぽいもの"ですね。

http://www.bonno.xyz/ が完成した物です。

ぜひ、Twitterで #煩悩 付けて、今年やり残したこととかをつぶやいてください。

経緯

会社でラボスペースってのがありまして、週1でそこでIoTとか新しい技術について話をしています。 そこで、年末に向けて何かやりたいねー、という話が出て、除夜の鐘とか作ったら面白いんじゃね?となり、作ってみた感じです。

本題

物理的な部分は、鐘を目覚ましのベル部分、撞木をドライバーで作りました。

撞木を動かすのにサーボモータを利用して、それをArduinoで制御、それをmac book経由で遠隔操作する流れです。 (ホントは、raspberry piでやりたかったのですが、時間がなかったのでmacでやってたのをそのまま使っています。)

Arduino

Arduinoの方は単純で、シリアル通信を受け取ったら、サーボモータを回転→逆回転させます。

#include <Servo.h>
Servo myservo;  // create servo object to control a servo
int dir = 0; // -1: back, 0: stay, 1: ahead
int val = 0;
void setup() {
  pinMode(8, OUTPUT);
  myservo.attach(9);  // attaches the servo on pin 5 to the servo object 
  Serial.begin(9600); // some servos doesn't work without Serial
}
void loop() {
  int inputchar = Serial.read();
  if (inputchar != -1 ){
    Serial.write(inputchar);
    dir = 1;
  }
  if (dir == 1) {
    val += 4;
  } else if (dir == -1) {
    val -= 4;
  }
  if (val < 1) {
    dir = 0;
  }
  if (val >= 130) {
    dir = -1;
  }
  String valString = String(val);
  Serial.print(val);
  myservo.write(val);
  delay(16);
}

スケッチの書き方があまりよろしくない気はしています。とりあえず動いたからいいかなーと。

mac book上のArduino制御プログラム

こちらは、websocketによるイベントを受信すると、Arduinoにシリアル書き込みを実行します。

const client = require('socket.io-client');
const socket = client.connect('http://www.bonno.xyz');
// Serial setting
var SerialPort = require("serialport").SerialPort;
var serialPort = new SerialPort("/dev/cu.usbmodem14221", {
  baudrate: 14221
});
serialPort.on('open', function () {
  console.log('serial open');
});
socket.on('kane-wo-tsuke', function() {
  serialPort.write("1\n", function(err, results) {
    console.log('err ' + err);
    console.log('results ' + results);
  });
  
  setTimeout(function() {
    socket.emit('kane-wo-tsuita');
    console.log('kane-wo-tsuita emitted');
  }, 700);
});

websocketとシリアルポートの準備をしておき、websocket経由でkane-wo-tsukeを受信すると、"1\n"をシリアルポートに書き込む感じ。

サーボモータが行って返ってくるのに数百msecかかるので、それが大体終わったぐらいで、kane-wo-tsuitaをwebsocketサーバに送信します。 (実際には、それ以上にustreamが遅延しているので、意味ないですが。。。)

組み立て

100均でいろいろ買ってきました。

f:id:suzaku114:20151229120209j:plain

鐘を吊ったりするのにやぐらが要るだろうと思ったので、割り箸と結束バンド(タイラップ?)で作りました。

f:id:suzaku114:20151229141821j:plain

目覚まし時計のベルがいい感じの(?)音だったので、これを鐘にしました。

f:id:suzaku114:20151229141958j:plain

やぐらの土台として割り箸をボンドで立てました。 また、鐘の中心にいい感じに穴があったので、割り箸を突っ込み、結束バンドで落ちないようにして、ボンドで固めました。

f:id:suzaku114:20151229143455j:plain

撞木をドライバーにすると、想像以上に音が出かかったので、ビニールテープで裏から押さえました。 自宅でやってるので、近所迷惑にならないか、ビクビクしながらやってます。。

f:id:suzaku114:20151230153153j:plain

ドライバーに、「ケーブルまとめるねじねじするやつ」を2つ付け、それぞれからビニール紐を伸ばし、サーボモータに付けました。 これが、割り箸でやると軽すぎて上手く当たらなかったり、1本の紐で吊るとくるくる回っちゃったりで、無駄に時間がかかりました。 ティッシュ箱2つ分の高さがいい感じだったので、その上にサーボモータを置いています。

f:id:suzaku114:20151230160009j:plain

そんなこんなで除夜の鐘が出来ました。

サーバサイド

サーバサイドはGitHubに全部上げちゃってるので、見て頂ければと。 後で、詰まった所とかは細々書く予定。 Heroku上で動いています。

github.com

その他環境周り

mac bookでは、ブラウザ上でustreamの配信を行っており、

マイク:ECM-PCV80U カメラ:UCAM-DLE300T

を使っています。

あと、実際に動かしてみると、動いている感が全く無かったので、時計を置いて動いてる感を出しています。

余談

ページ見てもらえば分かる通り、デザインとライティングの能力の無さを再確認しました。 誰か助けて。。。

Android Bazaar & Conference Diverse 2015 Kanazawa(2日目)

テクノロジー&クリエイティビティ

  • team Labは400名いる。
  • エンジニアが70%。
  • デジタルアートはだいたい5年前から。海外の評価が先行。
  • もともとWebのエンジニアの人が、機械学習とかやる。
  • 画像処理は結構アカデミックなところから人引っ張ったりしてる。
  • 障害はほぼ発生しなかったが、キャリアの基地局がパンクした。
  • アートだけではなく、テクノロジーと繋げる。
  • キャンドルリレーは音で伝えた。機種依存が大変だった。
  • ペッパーのイベントでは、四方にスピーカーを置いて、それらの音から三点測量的に位置を検出した。
  • 共創をキーワードに、他との差別化を図っている。

RoBoHonのRoBoHonによるRoBoHonのためのプレゼン

  • https://www.youtube.com/watch?v=HQtIlxe_ZkY&feature=youtu.be ツッコミたいところが幾つかある動画w
  • コンセプト動画にあるものは、基本的にやる。
  • 四角いスマホに喋ったり、喋りかけられたりするのは違和感がある。
  • COCOROBOという喋る掃除機も作ってる。
  • ディスプレイはいちおう付いているが、基本的には音声で。
  • 意外と激しく踊る。たまにコケるらしい。
  • OSはお察し下さい。
  • CEATEC JAPANでは大盛況。
  • ロボホンを輸送するときは、100均のタッパが便利。
  • 作る側とマーケ側がCEATEC出すときに結構戦った。
  • まだ開発中なので、個体差がある。踊れない子もいる。
  • 2016年の前半に発売予定。
  • 価格はまだ。
  • 開発ツールも検討中。
  • IS01を開発してた人と、新しい人と
  • 電池としては、1日持たせる(踊り続けはしない)
  • サーボの電流は大きい。
  • 騒がしいところでも使えるように。
  • 学習機能もある。
  • 人格を複数とかもやりたいけど、コンセプトがブレる。
  • サーボの制御はオープン化出来るように考えている。

Androidアプリのマーケティング/マネタイズ

  • Androidアプリ出してる人、広告入れてる人は、会場には少なめ。
  • AARRRモデル
  • 獲得・活性化・継続・紹介・収益
  • 本日は獲得と紹介の話。
  • Androidは項目多すぎて、上位アプリしか見られてない。iOSはシンプルなので、100位ぐらいまで見てくれる。
  • Google Playのランキングは、DL数・アクティブ率・評価が指標になっているっぽい。
  • 有効ダウンロード率が意外と重要。
  • Google Playのランキングで上位に上がるのは難しい。
  • iOSは直近数時間の断続的な新規ダウンロード数で、ランキングが変動しやすい。
  • 検索は、タイトル・説明文で触れてるアプリだけではなく、関連度の高いアプリも出てくる。
  • タイトルには重要ワードを突っ込む。
  • 説明文は、濃度が重要。ターゲットワードは5個ぐらいにする。
  • 検索結果数が多いキーワード+自分のアプリならではの部分。
  • ASO対策することで、DL数が10倍になることも。
  • Androidでは、レビューサイトに紹介されてもそれほど伸びない。積み上げるしかない。
  • 流入に対して、一番自分たちでコントロール出来るのは、ASO。
  • 1日に100DL取れてれば、結構良い。
  • 紹介を得るためには、ツイートへのインセンティブ or シェアしたくなるコンテンツ。
  • カジュアルゲーム作ってた会社は、最近廃業が多い。
  • 音楽再生(動画)・ゲーム攻略・マンガ・定番ゲーム

UE4ハンズオン

  • ゲームエンジン自体のハードルが上がってきてる(いろんな機能はあって当たり前)
  • アーティストやデザイナーがコーディング無しで使えるように。
  • エンジニアはもっと深い部分に注力できるように。
  • 四半期30万を超えるぐらいにならないと、費用は発生しない。
  • E3 2015で65タイトルがUEを使ってた。
  • ドキュメントの日本語化も、数日遅れとかで反映されてる。
  • Youtubeでは、半日かけてやったようなハンズオンも上がってる。
  • Perforceがオススメ。20人まで無料のライセンスもある。Gitとかだと、バイナリが辛い。

今さら聞けないVRコンテンツの作り方

  • 追体験型なのか、非日常型なのか。
  • スマホ前提なのか、専用HMDなのか。
  • oculusは基本WindowsPCでしか開発できない。
  • Cardboardで綺麗なものを表現しようとするのは辛い。
  • VRコンテンツ製作は3Dゲーム制作の延長上にある。
  • Cardboard向け開発
    • Unityが楽。(OpenGLとか、UE4とかより)
    • そんなに高性能なPCは必要無い。
  • Oculus Rift向け開発
    • UnityやUE4を利用。
    • Oclus社で作ってるのは、UE4
    • スペックの高いWindowsPCが必要。
    • 理想のPCとしては、58万ぐらいで売ってる。現実的には20万程度のゲーミングPC。
  • アセット(データ)が無いとゲームは作れない。
  • ネット上にある3Dデータを使うのも可能。ただし、権利関係に注意。
  • 中野シスターズは便利。
  • ステージは比較的作りやすいので、自分で作ればいいと思う。
  • VRでは、手元が見えない。コントローラあってもボタン配置が見えない。
  • 視線・モーション・Oculus Touchで操作。
  • 不用意な挙動をすると酔う。
  • 座って体験するのが前提。
  • 13歳以下は体験不可。
  • ソードアート・オンラインは見たほうが良い。
  • ゲームウォーズも同じく。

アプリ開発者が社会課題に取り組むABC

  • オープンデータ・Civic Techはまだあまり知られていない。
  • 「寄り合い」という地域コミュニティが強かった。
  • テクノロジーで社会貢献ができる。
  • オープンデータは国としての重要課題。
  • 5374や保育園マップの事例。
  • エンジニア・デザイナだけではなく、市民・行政など様々なプレイヤーを混ぜる。
  • 経済的効果ではなく、教育や市民参画など社会にどれだけ広く影響を与えたか。=social impact

東京から地方へ〜ピグマルはなぜ拠点を地方に移したのか

  • ドロイド君ロボットとか作ってた。
  • FourBeatはAPI提供している。
  • 上田市は16万人。
  • 上田に行き着くまでに、国内・海外含めていろんなところに1ヶ月程度とか暮らしてみた。
  • どこにいてもある程度開発出来るけど、ではそこにいる意味は?社会的異議。
  • 長野県が募集していた。
  • 長野市 or 上田市は県の判断だった。
  • 仕事場はコワーキングスペース。多業種の人が集まる。
  • 東京と地方の違いは、人の多さ。
    • バスに人いない。勉強会が無い。口コミが機能しない。
    • 東京は人が多い分、同じ興味分野の人でも集まれる。異業種の人と関わるしかない。
  • それぞれの分野では、それぞれの課題がある。エンジニアが当たり前にやってることがありがたがられることもある。
  • Try & Errorのやり方はエンジニアの得意領域なのでは?
  • 成功・失敗に関わらず、客観的に評価できるアウトプットを出す予定。
  • 2/20-21で上田でメイカーとメーカーが出会うイベントを開催予定。
  • 半年後に上田にいて欲しいと思われるように頑張る。

研究室の活動や進路の話

LT大会

JAGがAndroidのアプリ教材を作りました。 http://techinstitute.jp/material/02/ 気持ちよくなる系が多い中で、結構網羅的な教材。日本語。 NPOとしてと、コミュニティーとしての日本Android(アンドロイド)の会

https://kzgame.doorkeeper.jp/events/33759 第4回 Oculus Game Jam in Japan 石川会場の告知。

授業変更が多い。 WEBで学内なら見れるが、自動スクロールしかない。 とりあえずAndroidアプリ化したけど、外では古いデータがみれるだけ。 オープンデータ化は大人の事情で出来なかった。 Googleアカウントが配布されているので、その認証を必須にすることで回避。 今後はネイティブ化してPUSH通知を付けたい。他データとの結びつきもつけたい。 球技大会の予定+結果速報表示も作った。

アンドロイドな女の子 OSじゃないアンドロイド 質量を持った仮想現実 機耳(ロボミミ) 思考を現実化する。

hackforPlay HPを書き換えることで、ボスを倒したり。 小学生が楽しみながらプログラミングを学べる。

Raspberry piでラズベリーパイを焼ける。(釜の開閉を制御) Huginで展開できる。 h264が扱いづらかったのでrtspで。 フレーム描画崩れたりした。 Unityでもやってみたけど、MotionJPGである必要が。 three.jsに乗り換え。 時間が来たので終了。また、今のAndroidで動くかは不明。

ABC来てね。 コミュニティなので、暴走・逸脱する人もいる。 誰かがやらないと、楽しいイベントは開催できない。 イベントに参加する人は、全力で楽しんで下さい。

全体的な感想

金沢でこんなにいろんな人の話を聞けて、ありがたかった。 富山や石川にいる人はもちろん、それ以外からの人も多く、色んなエンジニアと話せてよかった。 VRコンテンツが結構簡単に作れたのも驚きだった。ちょっと何かに使ってみたい。 あと、石川高専すげぇ。なんで富山に無かったのか。(違

Android Bazaar & Conference Diverse 2015 Kanazawa(1日目)

Unityで作るカジュアルVRアプリ

http://www.slideshare.net/kinneko/part3-unityvr

Unityを使えば、結構簡単にVRコンテンツが作れた。 PC上で見ると、こんなもんかーという感じだったけど、タオバイザーを借りて動かしてみたら、かなりちゃんと立体に見える。

marshmallow時代のAndroid入門

https://drive.google.com/file/d/0BwoRjQoZfQUlaWxmaFJ2QWttTlE/view

  • Google Play Servicesが生まれたのは、Kindle Fireとかの勢力と差別化するために生まれた。
  • 旧来のActionBarはシステムの部品として、上に何か(NavigationDrawableとか)を置けなかった。
  • AppBarLayoutをかぶせると、文字色が白くなる。
  • Android Design Libraryのサンプル https://github.com/chrisbanes/cheesesquare
  • 通知にprivateとかが増えてるので、publicとかpriorityをちゃんと設定しないと。NotificationCompatが吸収してくれる。
    • 2.3で落ちたりする
  • https://github.com/keiji/AsUpdateChecker では、PreferenceFragmentCompatの表示バグがあったので、build variantを切り替えた。
  • marshmallowでは、onAttachでActivityではなく、Contextが渡されるようになった。

Android6.0のセキュリティ事項

http://blog.riskfinder.co.jp/ にあとから上がるらしい。

※追記:上がったので追加

ABCD金沢の講演資料 (Android6.0のセキュリティ) - RiskFinder株式会社ブログ

  • 新しいのは、Runtime permission model
  • チェック結果を保存したりしてると、裏で不許可にされたときに困る。API実行前に毎回確認すべき。
  • permissionはgroup単位でしか指定出来ない。READのみとかは出来ない。ただし、WRITEも使うのであれば、今後のバージョンで変更される可能性があるので、いちおう指定しておく。
  • uses-permissionは必要。
  • Android-RuntimePermissionsというサンプルコードがある。
  • 剥奪しても、SecurityExceptionとかは出ない。空データが返ってくるものが多い。(互換モード)
    • ただし、Cameraは落ちる。
  • 不許可にするときにエラーメッセージが出るから、対応しないという選択肢もあり。
  • checkSelfPermissionは注意。
    • PermissionCheckerのを使いましょう。(互換モードで戻りが違う)
  • 許可を求めるタイミングの設計。
    • アプリの本質に関わるものは、起動時に聞く。
    • 許可の説明が必要になってくる。
  • なるべく早くやったほうが、他アプリとの差別化要因となる。(権限が要らないアプリの方が、インストールしてもらえる)
  • dangerousレベルのpermissionはユーザに聞かないと行けない。
  • オープンソースで多くの人が使ってるからといって、安全ではない。

Androidに対する攻撃事情 (2015年版)

  • Stagefright
    • Stagefrightとは、メディア処理プロセス。
    • ヒープオーバーフロー脆弱性
    • MMS経由でメディアを送ることで引き起こせるが、WEB経由でも起こせる。
    • メディア関連の特権を持っているので、マイクを介して盗聴出来たりする。
    • 報道・SNSでMMSを止めれば大丈夫、と出たけど、そんなことはない。
  • Certifi-Gate
    • mRSTに見つかった脆弱性
    • mRSTには認証機構があるけど、その実装がマズイ。
    • 認証をごまかし、本来システムレベルの権限で動かせてしまう。
  • 報道が的を射ていない場合が多い。
  • なにもないところからインストールするケースはまだない。
  • マルウェア
  • SMS送信マルウェア(日本だとあんまり無い)
  • 架空請求マルウェア
    • 日本で発生し、脅迫の効果を高めようとしている?
  • サンドボックス回避(root化)が2015年に3種類。Shedunとか。
    • 出荷時の状態にリセットを行っても消えない(システムに書き込まれる)
  • Google Play上にはほとんど公開されていない。(非公式マーケット)
  • 日本独自端末は意外とやりづらそう。
  • Moplus SDK
  • iOSでは、Party Trackを組み込むと、アプリ全体のTLS/SSL通信が危険になるのがあった。

エンジニアとコミュニティ活動

  • ブログ読んだこと無い人はいるかもしれないけど、本読んだことない人はいない。けど、本出す人は少ない。
  • 円卓で企画会議してるらしい。14人とか?
  • 読みたいものを出しあう。デスノート的。
  • Wordはやばい。バグ混入しまくる(見出しのサイズが揃ってないとか)
  • 本をビルドするCIサーバはDockerイメージとして配布してる。
  • 普通の本は半年以上かけるけど、テクブの同人誌は1,2ヶ月で作ってる。
  • 趣味に必要な作業的なものを、テクノロジーで減らしていく。
  • 金銭的な報酬は、見合わない。
  • 中国語とか英語で本をかけるのであれば、けっこう儲かるかも。
  • 電子書籍は20%以下。
  • コミケは年に2回しか無いので、辛さを忘れちゃう。

Windows 10 とマイクロソフトクロスプラットフォームへの取り組み

  • 昔、エヴァンジェリストIBMMicrosoftしか無かった。
  • エヴァンジェリストの意味としては宣教師。
  • Windows8.1の次を考えた段階で、スマホタブレット+次のデバイス(IoT)まで戦場が広がっていた。
  • Windows10はPC用だけではなく、様々なプラットフォームで同じOS。
  • Cortanaという音声アシスタントが付いた。Siri的な。
    • キーワードを設定してアプリを作ると、パラメータ付きでアプリを起動してくれる。
  • IE12は出ない。IEのバージョンアップは利用企業が怒る。
  • EdgeのUAは他のUAの全部入りみたいな感じ。
  • Visual StudioでCordovaが使える。

デバイスコネクト(デバイスWebAPIコンソーシアム)ハンズオン(仮)

  • GotAPI:スマホ上でWebサーバを立てるときの仕組みを仕様化したもの
  • IPネットワーク層を経由し、ネイティブ上の仮想サーバからデバイスを操作できる。
  • セキュリティ面でいろいろ頑張ってる。
  • サービスIDを指定してGETリクエストを投げると、各デバイスの情報を取得できる。

Oculusによる最新VR動向とGear VR開発テクニックについて

  • ソーシャルメディアがテキスト→写真→映像→の次はVR/AR
  • ハードウェアはほぼ原価で売る。VRを広める。
  • 儲けはVRプラットフォームで得る。
  • Oculusは社名で、製品名はRift。
  • DK2より製品版ディスプレイが良くなってる。ヘッドホン内蔵(取り外し可能)。IPD調整可能。
  • GearVRは、センサ類は独自に持ってる。
  • 白猫など、日本のデベロッパーもアプリを作ってる。
  • Riftをかぶるとストアが表示される。
  • Touchというデバイスで、手の位置や回転をトラッキングできる。
  • VRは体験してみないとわからない。
  • 社内でスタジオ作って、動画とかを作ってる。
  • 快適な体験を第一に。一度酔ってしまうと、次から試してみなくなる。
    • 快適レベルがストア上で表示される。
  • ベクション(目で感じる加速度)
    • 目の入力と三半規管の入力が違うと、体調不良として脳がエラーを出す。
    • テレポートで移動させる仕様にすることで、VR酔いを防いだ。
  • VR向きのデザイン。
    • 格ゲーをスマホでやるのは辛いのと一緒。
    • アセットを共通化するだけで、別のものを作ったほうが早い。
  • フレームレートをキープする必要がある。
  • 開発リソースは全部無料。デバイスがあれば、できる。
  • 資料の日本語化を頑張ってる。
  • Unityにネイティブで対応している。チェックボックス1個で対応。
  • http://ocul.us/jplinks

LT大会

数十人規模の前でのLTは初めてでした。 かなり緊張しましたが、多少笑いも取れた気がします。 また、Qiitaのストックが5件増えたので、良かったかなと。

AndroidWareの話は「まっぱで出来る」がキーワードでした。 ただし、そのまま風呂に入ってはいけない。

浜松は、うなぎの出荷額はそこまでじゃないらしい。 餃子の消費量は1位か2位らしい。静岡市を足すと1位。 浜松支部は、BBQとか楽しそう。

秘密結社の発表はかなり面白かった。 THETAとか買うと高いし、ある程度制限されるけど、Raspberry Pi+カメラモジュール+レンズで作れるらしい。 レンズの調達が難しそうな印象。

とやま Civic Tech Party 2015のメモ

あいさつ

  • 富山県にはCode for Xが4つある。
  • 一堂に会するイベントが無かったので、今回開催。
  • 富山県を良くする何かを作りましょう。

講演1

  • Code for Japanの高木さま。
  • Code for Xを支援する組織。
  • ノウハウのシェアなど。
  • 行政に人を送り込んだり。
  • 日本は大変な状況(税収、少子高齢化、人口減少...)
  • 公共サービスへの需要は拡大。
  • 国債出してるけど、無限には出せない。
  • 従来型のお上がなんとかしてくれる時代じゃない。
  • なので、一緒に手を動かす。
  • 文句を言うだけだと、国民と行政の溝が深まる。
  • なので、Civic Tech。
  • テクノロジーを使って、効率的に社会貢献をしよう。
  • 5年前にアメリカで始まった。
  • 結構な経済規模。
  • ともに考え、ともにつくる
    • 行政・自治体、市民、クリエイター
  • 一緒に最後まで作る(外注とかではない)
  • しかも、楽しく。
  • Spending.jp:年収から税金がどこで使われているかがわかる。
  • 5374.jp:ゴミ出し情報のウェブアプリ。多言語化で外国人とか。
  • 会津若松市消火栓マップ:冬になると雪に埋まってしまう消火栓の場所を調べる。
  • さっぽろ保育園マップ:保育園の場所・サービスを地図上で探せる。
  • 33歳のCode forを支援している。ブリゲード支援。
  • 地域の課題は地域でしか解決できない。
  • サービス開発の5パターン
    • わかりやすい可視化型→行政の透明性・信頼性向上(Spending.jpとか)
    • 対話型→行政の透明性向上、国民参加(ちばレポとか)
    • リアル・タイム型→国民の利便性向上(電車の運行情報とか)
    • しかい型
    • コンシェルジュ型→(子供の予防接種の場所・期間をサジェスト)

質疑応答

  • ちばレポは初期投資とかいくらぐらいかかってるか
    • 金額は把握してないが、データ出すところまではCode for Xでやっている。
  • 保育園マップを公開して、悪用されたりしない?
    • 受け止めるスタンスでやらないと。行政はリスクを考える。ただ、もともとは行政のホームページに乗っている。リスクは増えてないはず。
    • 意見投稿掲示板作ったけど、担当者の積極性次第。
    • いまのところ、そんなに大きな問題にはなってない。

講演2

  • スマートシティ 2.0
  • 都市で何が起こっているかを可視化するとか。
  • 都市の状況に応じて信号の長さを変えるとか。
  • 自分の演奏をyoutubeで流す
    • プロの配信は多くのスタッフ、アマのは配信者でがんばる。
    • CoLive:カメラを複数置いて、見てる人がカメラなどを操作する。
    • なぜマニュアル?オートにできない?
    • MTGのカメラワークを自動化とかはすでにある。
    • コミュニケーションを生みたい。
    • カメラの切り替えから演奏者の動きが変わる。
    • One cannot not communicate
    • 機器の制御を通じてコミュニケーション
    • 自動制御のレベル
    • 効率性とコミュニケーションのバランスをどう取るか。
    • 衝突防止システムは、人から制御を奪う。agreeしてる。
  • スマートシティの目的:セキュリティ・セーフティ・効率性
    • センサをばらまく
    • 最近は:健康・コミュニティ創発・楽しさ
    • 自動化・手動化のバランスが重要になってくる。
  • Smart City 1.0
    • 高度に自動化されたシステムがプロセスを完遂する。
    • 2.0は時と場合により強調形態を変える。
  • Clout:クラウドとIoT
    • 市民の影響力を高める。
    • 都市のセンサデータをセキュアに取得。
  • 既にセンサが多くあるけど、うまく活用できてない
    • タイムスの駐車場情報とか。
  • 邪悪なツール:WEB Sensorizor
    • センサ=よくわかんないけど勝手に飛んでくる。
    • WEBにのることが多い。
    • API無いので解析大変・結局使えない
    • 埋没オープンビッグデータ
    • をモダンなアクティブ・センサへ
    • chrome extension?→スクレイピング
    • 10GB/Dayのリアルタイムデータ配送
    • 藤沢では、それを駅の構内に表示してたりする。
    • Smily Couponは笑顔度と天気・混雑状況でクーポンを出す。
    • 行政と市民のリアルタイムQ&A
    • 市役所の人が質問を出し、市民が回答+スマホの情報を送れる
    • 清掃車にセンサをつけて、花粉情報をとったり。
    • 紐につながって、落ちないドローン。そこからセンサデータをとる。

質疑応答

  • センサが安くなってるけど、それらの活用とかを詳しく。
    • 異なる種類のセンサを統一的に扱う必要がある。インターオペラビリティ。
    • 世界4カ国の別々のセンサデータを透過的に扱えるように。
  • 駐車場情報も時間・次のイベントによってかわったり、燃費からどこのガソスタに行くべきかなど。
    • 未来を予測できる。混雑を予想し、一方通行にしたりすることで、混雑度を下げる。
    • 10km先の安売りに行ってしまう人間の心理。客観性を高めて可視化することで、意思決定を
  • 富山に何回来てます?富山で面白そうな情報とか可視化したいものあります?
    • 10回来てます。
    • 今年の冬、寒ブリの水揚げ数を可視化→どこで食べられるとか。
    • 国道沿いに民家がふつーに立ってる。田舎にしかない光景。そういった光景を見せる。
    • 特徴的な光景を機械学習→集める。

メンター紹介

なぎせさん

  • 富山で仕事しているが、富山で勉強会は少なかった。
  • 勉強会を開いたりしているが、最近は開いてなかった。
  • 来年1月にぶり会を開く。Java Oneの最新情報を聞ける。
  • Javaのプログラムならなんでも。

金宏さん

  • ライター。
  • パンチカードでプログラム書いてた。
  • PHP/C/C#とかで連載してた。
  • スマホアプリ開発本を書いた。
  • クラス名とか出てこないかもしれないが、解決法とかは提示できると思う。
  • プログラムを学ぶためには、新しいプロジェクトを始める。

Code for紹介

南砺

  • 東京から3.5h
  • 合併11年目
  • 去年設立
  • 2014年の活動
    • cafe for NANTO:カレー食べながら会話
    • ゴミ出しカレンダー(公式ゴミ袋に載ってる)
    • コミュニティバスのバス停マップ
    • ハッカソンを開催した
  • 2015年の活動
  • 南砺市フェローシップ
  • 若い人たちが結構多い。

高岡

  • 人口流出が多い。
  • 大学が少なく、若者がいない。
  • Change/Collaboration/Challenge/Community
  • 5374.jpの高岡版
  • 古城公園マップ
    • 石碑とか、自然の見どころを紹介。一部、中国語。
  • 高岡クラフト市場街マップ
    • 紙とスマホの役割を考えないといけない。
  • NATの工作プロジェクトでArduino勉強会。
  • 温度を振動回数で教えてくれるものを作った。
  • 鉛筆シンセサイザー:鉛筆の線で音が変わる。
  • mbedとArduinoの橋渡しlbeDuinoを作った。
  • mbedのライブラリをArduinoで利用。
  • オリジナルのシールドを作ると、便利です。

富山

  • 富山の生活を快適にするための任意団体。
  • 7名がコアメンバー
  • 2月に発足。
  • まち歩きを行い、Local WikiOpenStreetMapに登録
  • 5374の富山市版。
  • ウィキペディアin富山
    • 新聞にも掲載された。
  • 今後の活動。
    • 課題
    • Mashup Award:テーマを何にしよう。Civictech部門がある。
    • アーバンデータチャレンジ
    • 保育園マップの製作
    • オープンデータの活用:富山市が運用開始。
  • シビックテックナイト参加者募集中。毎月第一木曜日。

氷見

  • 去年の6月に設立。
  • 年齢層が幅広い。
  • TED x Himiを来年開催。

JAWS-UG re:Moteに行ってきた

jawsug-hokuriku.doorkeeper.jp

JAWS-UG re:Moteは初開催 13会場で同じものを見聞きしてる V-CUBEで配信

青森

http://www.slideshare.net/biatunky/jaws-remote2015t2

やっぱり、リモートでスライドショーを表示させるのは、慣れてないと難しい。

最近の趣味はEdisonとかでIoT

アクセスが数えるほどしか無い地方での話

CDPのロゴかっこいい

ICDP(INAKACLOUDDESIGNPATTERN)
地方には地方なりのクラウドの活用の仕方があるはず。
http://icdp.biz

予算はない、アクセス無い、でも落としちゃダメ

t2インスタンスは安い、速い
ただし、CPUクレジットの残量による
ゼロになると、ほぼ使いものにならない
平常時にクレジットが減るような状況だとスペックアップが必要。
CloudWathで残量が確認できる。

t2の使いどころ
テスト・開発環境・バッチ・小規模なサービス用サーバ
東北だと半分ぐらいの案件で使っている。

t2.microでWPなら1500PV/時間が目安
実際はストレステストが必要。

t2.microは使い切ったら10%しかCPU性能が出ない

CPUクレジットを使いきらないような環境であれば、t2インスタンスは使える。

磐田

http://www.slideshare.net/HidekiItou/jawsug-remote-workspaces

Amazon WorkSpaces

用途はリモート勤務・モバイル端末でのアクセス・開発環境などなど。

Amazon WorkDocs

1ユーザ $7/月〜
Google Driveみたいに使える。

沖縄

http://www.slideshare.net/shumach217/re-mote

Device Farm

calabash
BDDのツールであるcucumberを使用したUIテストフレームワーク

backdoorを使用することで、デバイスの関数を実行可能
引数を渡したり、返り値を受け取ったり出来る。
Device指定でパフォーマンスモニタをグラフ表示
スクリーンショットも見れる

Puree(ぴゅーれ)

CookPad

内部情報を容易に取得

テスト時間の短縮

backdoorは通信がボトルネックになる(スローテスト)
Pureeだとバッファに蓄えてくれる

https://twitter.com/shumach217/status/640037085911453696

初心者

http://www.slideshare.net/TakeshiWakamatsu1/cli-52443681

http://t-wkm2.hatenablog.com/entry/2015/09/05/141901

紫本をCLIでやってみた
http://www.amazon.co.jp/Amazon-Web-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89/dp/4822262960/

EC2にログインしない(UserDataでインストール完了させる)
RDS利用

続きはWEBで

感想:最初は正直しんどい
手順書作成に最適(スクショとっても画面が変わる)

デモ成功(てってれー

HPC

HPC専門支部始めました

High Performance Computing
力学シミュレーションとかの工学分野

中小企業・スタートアップ・高専でもHPCを。

ブラジルの水道会社でHPCの利用事例
管理コンソール作って、ボタン一つで自分だけのクラスタを立ち上げ・破棄

高知

http://www.slideshare.net/yukihitokataoka/jawsug-remote-2015-awsiot

地方でAWSとIoT

マイキーワードはIoTと複業

環境センサ、自然災害の監視、お年寄りの見守りなど

  • Cognite(認証)
  • Kinesis(中継)+Lambda(処理)
  • S3 / DynamoDB(保管)

Cogniteは機器レベルでの認証も出来るらしい

IoTの取り組み例(施設園芸)
栽培環境をある程度調整、園芸作物を生産
気候などを調査・制御する

  • 温度が低下→ボイラー制御
  • CO2濃度低下+晴れ+高湿度→天窓を開く
  • etc

CO2センサーはちょっと高い(1万オーバー

デモサイト: http://s.ykata.net/
コードも公開されている

IoTは技術先行で、活用はこれから。
農業とか、車とか、老人の健康状態とか。

ダイブ+継続

北陸

https://speakerdeck.com/aibax/we-love-s3

Amazon S3の再復習

2006年の3月のAWSリリース時からあった。
EC2より前からある。

バージョン管理機能も付けれる。
クロスリージョンレプリケーション追加(2015/03〜)

  • スタンダードストレージ
  • 冗長化ストレージ(RRS)
  • Glacier(アーカイブ)
    • バックアップ用途

細かいファイルを沢山アップロードしていると高くなる
S3への登録は無料、ダウンロードは1GB当たり17円ぐらい

セキュリティ
ユーザ単位の権限
アクセスログの記録(監査)

使いどころ

Webサイトホスティング

Apacheやnginxの代替(POSTメソッドは使えない)
独自ドメインを使える。ただし、バケット名とホスト名を同一にする必要あり。
静的コンテンツの配信(実運用の際はCloudFrontとの併用を検討)

バックアップ・DR対策

アップロード無料
AWS CLIのS3コマンドによるファイル同期

aws s3 sync /path/to/backup s3://バケット名/

コンテンツ配信

  • アクセス頻度は低いが、常時公開が必要なデータ(古いマニュアルとか)
  • 定期的に更新する統計やマスタデータ

イベント通知

SNSでメールとかwebhook

SQS

Lambda(処理待ちサーバのコストが不要)
アップロードドリブンで処理を実行

進化してる

  • バケットに入っているオブジェクトの数
  • バケットの中の容量

→CloudWatchにメトリクス追加(ただし、1日毎に更新)

  • VPCからS3へのアクセスが出来るようになった

最近、調べていること

同期型ファイル共有

  • Amazon WorkDocs
    同期が不安定、同期状態がわかりづらい
  • CloudBerry Box
    Windowsのみ
    メタデータが入ってたり
  • GoodSync
    手動または定期同期
  • SparkleShare
    バックエンドはgit
    CodeCommitと組み合わせられるかも
  • ownCloud
    サーバが必要だが高機能

大分

AIRPO

  • BLEによるポイント配布
  • 店舗側でポイントによるインセンティブを決定できる。
  • PUSH通知を店舗側から打てる
  • 店舗内の移動をヒートマップ(?)化

愛媛

Intel Edison for Arduino

  • Cognito
    • デバイスへのアクセス許可
  • Kinesis
  • Lambda
    • KinesisへのPUTでコードを実行
  • DynamoDB

  • JavaScript

    • mraa : ハードウェアを操作するためのフレームワーク
      • cylonってのもあるらしい
    • node.js

いろいろ入ってるセンサーキット https://www.switch-science.com/catalog/1812/

context.succeedでハマった

DynamoDBへの書き込みは非同期。
その完了を待たずにcontext.succeedを呼ぶと、Lambdaが終了する。
書き込みが完了しない。

名古屋

Docomo Developer support なんでこんなことしてんのかわかんないけど、無料でいろいろ公開してる。

画像認識API

画像から商品の情報を取得

ECサイトなどをクロールして、DBに格納、画像と連動させる。

AmazonのFIREFLY的な

  • 安全性
    • Blue-Green Deployment
  • 再現性・生産性
    • Immutable Infrastracture
    • 設定のバージョン管理

バッチ処理はS3を入力にし、S3に出力することで、障害耐性を高める

突然のラジオ体操!

エバンジェリストの高岡さん

エバンジェリストとしての初の発表。 自分で、ITで仕事を無くしてきた人。 ルータ作る→ゲーム作る→外資

懇親会

北陸は鳥珍や 金賞取ってる手羽先の食べ放題。 車で行ってたので、アルコールは飲めず。

  • 石川の人も、富山に来ることはある。ファミリーパークとか。
  • 富山はインテックの一強。
  • 石川はなんとかって会社のOBが作った会社が多い。
  • 福井は特に無いから、逆にAWSの導入とかがやりやすい?
  • 富山は製造業が多く、Salesforceが強い。
  • ある程度古くからある中小のIT会社は、しがらみが多い。
  • 世の中狭い。知り合いを1人挟んだら繋がることがある。

f:id:suzaku114:20150905183828j:plain

f:id:suzaku114:20150905175858j:plain

Skip Gunosyを公開しました。

リリース報告

Skip Gunosy - Google Play の Android アプリ

本日、Skip Gunosyというアプリを公開しました。 使い方は簡単、インストール後にメールなどのGunosyへのリンクを踏むだけ。 ローディングが表示され、ちょっとすると、クッションページをすっ飛ばして元記事を開きます。 ついでに広告も出ます。

作った理由

いつも、Gunosyはメールで見ているのですが、最近(でもないですが)、Gunosyが作ったページに遷移されることが増えてきました。 ただ、一部の記事はレイアウトが崩れていたり、画像がうまく表示されなかったりと、結局元記事へのリンクを探す日々が続きました。 3度同じ事を繰り返す時は自動化する、という言葉があるように、自動化した次第です。

実装はいつもの通りGitHubに置いてあります。 要件を満たすこと以外はほとんど考えてないので、コードが汚いです。

github.com

免責事項的な?

Gunosyさんに、もし(見つからないと思うけど)怒られたら消します。 GunosyさんのHTML構造が変わったら動かなくなります。その時は、気力があれば対応します。

「Kanazawa.rb x Hokuriku.NET x JAWS-UG北陸」に参加してきた

Kanazawa.rb x Hokuriku.NET x JAWS-UG北陸 : ATND

メモはこちら

感想。 ・JAWS Toyamaが出来るらしい。手伝えることがあれば、手伝いたい。 ・北陸はやっぱり、クラウドとかの勢いは弱い。  けれど、関東と比べてそれほど比率が低いわけでは無さそう。  現に、このイベントは満員。  ただ、人口がそもそも多くないし、意識高い系の人数は少ない。 ・金沢・福井のコミュニティは比較的回っているらしい。  富山はあまり上手くいっていない。  勉強会などを開いても、人を集めるのが大変。 ・ITなおっさんらが集まると、IT大喜利が始まる。

内容。 ・AWS Lambdaは来そう。  Tokyoリージョン来るまでにちょっとぐらいやっておこう。 ・Azureも頑張ってるらしい。  イベントのストリーム処理は必要になってきそう。 ・Dockerとk8sの概要はなんとなく理解できた。  Docker自体は、小規模に使っていくだろうけど、どこまで使うだろうか。 ・ポータビリティとしてのDockerは、あまり考えてなかった。  けど、たしかに。  結構ゴタゴタしてるし、Docker大丈夫かとも思ってたけど、もうちょっとやっておいた方がいいのか。 ・便利なSaaS、いっぱいあるな。  PaperTrailとか、そろそろ使っておいた方が良さそう。

あれ、やることいっぱい。。。

f:id:suzaku114:20150620193134j:plainf:id:suzaku114:20150620193134j:plain

エンジニアだけど、ポートフォリオっぽいもの作りました

twitterなどのURLを、このHatena Blogにしてました。 そうすることで、自分の書いた記事や自分のアプリを紹介できてると思ってました。

ふとしたときにスマホで見てみると、サイドバーのアプリへのリンクが全く表示されてなかったのです。 これはまずい、ってことで、アプリの紹介をメインに、保持スキルも紹介できるようなページを作ってみました。

それがこちら↓
Ishikura Noboru portfolio

BEMもどきだったり、jade / stylusで作ったりと、フロントについてもいろいろ頑張りましたが、それよりも公開までのプロセスを一番頑張ったと思います。

というわけで、具体的な話。

コードリポジトリ

リポジトリは、 noboru-i/noboru-i.github.io · GitHub です。

ただ、masterブランチには成果物しか置いておらず、こちら noboru-i/noboru-i.github.io at src · GitHub にソースを置いています。

開発

gulp serve によって、インクリメンタルにビルド・ブラウザのリロードを行っています。
ほぼ、会社の同僚が書いていたのの劣化コピーですが。

/gulp/task に個別にタスクを記述したり、config.coffee にパスを一括で定義したりしてます。

詳細は、本人の記事を確認してもらえばと思います。

qiita.com

CircleCI

circle.yml に設定が書いてあります。

  • masterは生成結果なので、CircleCIの処理対象外にしています
  • nodeのバージョンは最新がいいだろうと思って、とりあえず0.12にしています
  • srcブランチに対して、script/deploy.sh を実行しています。

script/deploy.sh にデプロイの手順が書いてあります。

  • npm run build により、package.jsonに定義されている通り、gulpのdefaultタスクが実行されます
  • gitの設定として、メールアドレス等を設定しています
  • publicの中身をtarにまとめてArtifactとして保存しておきます
  • public内をgitのリポジトリとして初期化し、リモートをnoboru-i/noboru-i.github.ioに設定します
  • このブランチにcircle.ymlが存在しないと、デフォルトの動作が実行されてしまうので、circle.ymlをコピーしています
  • 強制的にgit add, git commit, git pushしています

イメージ図

全体としては、こんな感じ。

f:id:suzaku114:20150416235225p:plain

感想

GitHub Pagesは便利なんだけど、ソースと生成物を一緒のリポジトリに入れちゃうのは嫌だし、手動のビルドでビルド漏れも嫌ですし。

その点、リポジトリにあるコードをCircleCIでビルド・デプロイするのは、必ず・クリーンな状態で公開できるため、メリットは大きいと思います。

仕組み部分は、それなりにいい感じに出来たと思うので、酷評されてるデザイン面と、BEMもどきって言われたCSSの命名をがんばってみようかとか思ってます。