べにやまぶろぐ

技術寄りの話を書くつもり

デブサミ 2015 での講演の感想など #devsumi #devsumiB

先日の記事で書いた通り、去る 2/20(金)に Developers Summit 2015 の公募セッション枠で講演をさせていただきました。

個人的には非常に貴重な体験をさせていただいたと思う一方、もう少し来場された方の関心を引けなかったか?明日の業務に持ち帰れるような情報を提供できなかったか?と我が身の至らなさも身に染みました。例えそれが二日目の朝一でも来たいと思えるようなコンテンツを提供できるよう精進していきたいと思います。

そして下は ぼっち The Speaker の様子です。同じ枠の他の登壇者の方に行列できてると一段と寂しい…

f:id:beniyama:20150220111319j:plain:w250

さて、忘れないうちに Speaker として参加した所感を徒然と書いておきたいと思います。

スタッフの方達が素敵

当日朝一のセッションで直前だと心許なかったので水曜日の夜に一回リハさせていただいたのですが、会場スタッフの方達の対応や気遣いがとても丁重で驚きました。もちろんリハーサルだけでなく会期を通して懇切丁寧に対応していただき、余計なストレスなどなく万全の状態で講演に臨むことができました。

f:id:beniyama:20150218184521j:plain:w400

ちなみに事前案内では Mac の VGA ケーブルアダプタなどは持参とあったのですが、会場には VGA アダプタは元より有線 LAN とケーブル用アダプタ、ピンマイク、レーザーポインタ付きプレゼン用リモコンもあってマシン(資料)だけあれば後は OK な感じでした。ドングルなど指しましたが接続設定・問題共に全くなし。

講演中の写真撮影

こちらはイベント中も注意などあったようですが、自戒も込めて確かに無音カメラで撮るような配慮は必要かもしれません。登壇している側からすると音は余り気にならなかったのですが、撮る仕草はよく見えるので聴講されている方がカメラ構えた瞬間・またはまだ撮影してないのにスライド変えちゃって良いものかと変な心配をしていました。この辺、講演慣れされている方はスルーできるんでしょうか。

自分も冒頭で資料は後日公開する旨伝えてはいましたが、それでも撮影される方は多かったように思います(ちなみにその資料)。関心を持っていただけているというのは素直に嬉しいのですが。

広い会場での講演

f:id:beniyama:20150220101444j:plain:w400

先述の通り2ブロック目くらいまでは聴講している方の顔や仕草が見え、目線を意識しながら喋れたのは良かったかなと思います。ただ慣れないリモコンを使ったために何回かスライドの移動が前後してしまったり、反応しなかったり(リモコンとドングルの間に体が入る位置になるとダメだった)して見苦しかったのは反省点です。これは慣れたのを持ち込んだ方が良さそうです。

あとせっかくピンマイクがあったのでできる限り前に出て話したかったのですが、PC が演台の上にあるので今何がスクリーンに出ているか振り返らないとわからず、位置取りの難しさを感じました。ただ、その後のセッションで舞台中央に小さな台を置いてそこに PC を置かれている方もいらっしゃったので、それであれば一々振り向いたり演台に戻る必要もなさそうで良いなと思いました。

あとは、リモコンが届く限り舞台を降りて歩き回るというのも、いつか機会があれば試してみたいです。

Developers Night

運良く参加させていただいた 2月19日 Developers Night powered by AWS(東京都) では知り合い0のぼっち状態で飛び込みましたが色々な方とお話させていただいたり、あとは LT、特に竹迫さんの『ドットコムバブルの再来~アセンブラ短歌を一句~』は素晴らしいの一言でした(デモ動画有り )。

あと珍しくじゃんけん大会で2位になり、システムテスト自動化 標準ガイド (CodeZine BOOKS) を 有難く頂戴しました。

f:id:beniyama:20150219205344j:plain:w250

デブサミと自分

デブサミという言葉を知ったのはそもそもこの業界に転職しようと活動していたとき、とある企業様の合同説明会のときで、

担『弊社も明日からのデブサミに出展しますので、いつでもお声がけください〜』

担『ちなみにデブサミ参加される方いらっしゃいますか?』

(会場ちらほら手を挙げる)

自分(デブサミって何…)

他の志望者『はい、10年後も通用するエンジニアでいたいですから!』

自分(なにそれ意識高い…)

という感じで、この業界では常識なイベントなんだなと劣等感と一緒に刻まれたのがきっかけでしたがそれから デブサミ2014 、夏サミと参加してしこしこ講演メモを書き、そうこうしているうちに今年演者として参加できたのは不思議な感じがしています。

また機会があれば何か発表したいのはもちろんですが、それでなくても聴講者として次回以降も参加していこうと思います。

まずは、今年の聴講メモも早いうちに書きます。

f:id:beniyama:20150219094928j:plain:w250

システムテスト自動化 標準ガイド (CodeZine BOOKS)
Mark Fewster Dorothy Graham テスト自動化研究会 伊藤 望 玉川 紘子 長谷川 孝二 きょん
翔泳社
売り上げランキング: 31,243

Keynote で作ったスライドを slideshare に上げる時に表紙を画像にするようになった話

以前、

で書いたように日本語フォントを含むスライドを slideshare に上げるとサムネが真っ白になってしまうことがあります。上記エントリー中では "Save as Adobe PDF" で回避する策について書いたのですが、これだと

f:id:beniyama:20150223011337p:plain

のようにプリントの用紙サイズとスライドのサイズが合わずに余計な余白・線が入ってしまいます(あと気のせいでなければそもそも Acrobat Pro が必要な気がする)。

そこで最近はもう潔く一枚目だけ画像にして PDF 化しています。

ただしポイントが2点あり、

  1. Keynote の「(画像)書き出し」を使わないで スライドショーで画面最大化したものをMac のスクリーンキャプチャで画像化する。

  2. 元のスライドを差し替えるのではなく、元のテキストを残して上から画像を被せる(↓こんな感じ)

f:id:beniyama:20150223011349p:plain

ということをしています。

1は Keynote の画像書き出しよりスクリーンキャプチャの方が画質が良い(気がする)ためで、2は下図のように slideshare の Transcript の方に文字が残るから、という理由です(未検証だけど画像だけだと文字は表示されないはず)。

f:id:beniyama:20150223011400p:plain

こんなことしなくても問題ないのが一番良いんですけどね…

デブサミ 2015 【20-B-1】「『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介」 の講演資料を公開しました #devsumi #devsumiB

今回のデブサミでは有難くも公募セッションにて採択していただき、業務開発の中で行っている DevOps の取り組み事例についてお話しすることができました。

『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介

会期中の様子や講演メモなどは別のエントリーで書こうと思いますが、取り急ぎ講演資料をアップしたのでそのお知らせです。

今回は生まれて初めてプレゼン資料に萌えキャラ?を入れるという試みをしましたが、詳しくは下記のサイトをご覧いただければと思います。

あと、「機能横断」と言おうとして「職務横断」と書いてしまっていた事に今頃気づきましたが、もう終わったことなのでそのままにしておきます orz

Firefox で mousemove イベントが発火しなくなったときは preventDefault を確認しよう

自前のドラッグアンドドロップを実装していて、Chrome や Safari では発火している mousemove イベントが Firefox では定常的に上がってこないという事象に悩まされました。

色々調べてみたところ下記の stackoverflow で同じような質問をしている人が。

You should call evt.preventDefault(); in all the mouseXXX handlers. Firefox has default drag/drop handling and you don't want that. It's not a bug in Firefox that it does that.

イベント処理はブラウザによって独自の処理に入ってしまうため、互換性も考えた上でpreventDefault()stopPropagation() をきちんと意識して書かないといけないということを学びました。

ちなみに d3.js の場合は d3.event.sourceEvent.preventDefault() を呼ぶことになります。

『小さくて強い農業をつくる』読書メモ

小さくて強い農業をつくる (就職しないで生きるには21)
久松達央
晶文社
売り上げランキング: 5,676

先日、湘南T-SITE 内の本屋で平積み残り一冊だったこの本、農業 IT にも最近関心を持っていることもあって思わずその場で買ってしまいました。

ソフトウエア開発にもつながる話が多くて色々な至言があったように思います。以下、個人的に響いた箇所のメモです。

『20代で土日が楽しみになったらおしまいだよね』(p.34)

農業へのあこがれで日頃の不満をガス抜き = 腹をくくって人生を決める覚悟がない、との自省。20代でなくても週末が楽しみになってしまっては本末転倒。

『夢のために助成金があるのであって、助成金のための夢ではない』(p.42)

目先の金の算段をつけるサラリーマン的発想で本当の目的を見失わないこと。

『人は人中、地は地中』(p.59)

人も畑も真ん中で揉まれないと良くならない。

『農業って理系の技術職』(p.74)

農学のバックグラウンドがないとやるまでわからない。

『「経験と勘」がない自分には論理と言葉しかない』(p.78)

単純なプロセスであっても詳細に言語化することで問題点を明確にするだけでなく(属人性が排されるので)ノウハウの譲渡にもつながる。仕事は引き継ぎを繰り返すことで人から機能になり、また初めてコアとなる価値がわかる。久松農園ではクラウドで共有している。

『そもそも農業は自然なものではない』(p.87)

経験のない者が漠然と想像していまう農業 = 自然という誤解。

『一人ひとりが作業の内容を理解し、自分の判断で動ける仕組みがないと回らない』(p.94)

久松農園では朝会までにその日の作業内容を個々が予習し理解した上で、自己組織的に作業を行う。スクラム開発にもつながるところがあるように感じる。

『マニュアルはできるだけ初心者が作るようにしています。』(p.99)

熟達者が作ると暗黙知化している細かい行動の記録が抜ける。失敗学によれば「客観的な失敗情報は役に立たない」。

『多くの人が「野菜は美味しいから食べる」という素直さを失っている』(p.144)

「体に良い」、「残すべきではない」、「無農薬だから」と言って食べる・食べさせるより「ただ美味しいから」食べる食い気で考えて欲しい。エロうま。

『時間は未来から過去へ向かって流れている』(p.150)

あらゆる場面で因果を追求することに意味はない。未来に思考を移すべき。

『人は誰でも、半径10mの人間関係に規定されてしまいがち』(p.174)

インターネットは身近な人の外側に真のファンがたくさんいることを教えてくれる。周囲の否定的な意見に屈する必要はない。

『理念なき経済は罪悪であり、経済なき理念は寝言である』(p.199)

有機農業の成り立ちからして商業主義に触れることがタブーだった時代がある。

『自分の労働単価を決めてしまえ』(p.217)

設備投資や事業規模はまず自分が何時間稼働してどれだけ売り上げたいかを決めることから始まる。

『新規就農者とのマッチングがいい選択肢の一つは、間違いなくニッチ狙いの変態型農業』(p.265)

マスプロダクションから脱却し、全ての人が食べる野菜がなくなってきた昨今ではコモディティ型の生産と勝負するのではなく、合理性から脱却した『グッと』くる変態型農業が有効。

『明日のために今日を我慢するという生き方をしている限り、目的は絶対に達成されません』(p.273)

子供は大人になるための準備期間ではなく、子供のときにしかできないことをやる期間。それは大人も同じ。

次は同著者のキレイゴトぬきの農業論(新潮新書)を読んでみようと思います。

キレイゴトぬきの農業論(新潮新書)
新潮社 (2014-03-21)
売り上げランキング: 1,462

『GMO プライベート DMP で ビッグデータ解析をするために アプリクラウドで Apache Spark の検証をしてみた』の資料を公開しました

Apache Spark を今後活用していくに当たって行ったプレ検証の結果について slideshare にアップロードしました。

もう少し詳細な内部の実装や挙動を見ていかないとと思いつつ、いい加減ワードカウントも飽きてきたのでデータ分析にトライしていきたいと考えております。

Slack で発言する Hubot にチャレンジしたらバージョン3系になっててちょっとハマった

最近流行りの ChatOps についていきたい!という純粋なミーハー心と日々のちょっとしたことを自動化したい(ミーティングのリマインダとか、ランチグループ分けとか)という思いから Hubot 使って Slack 連携をさせてみたのですが、最近バージョンが2系から3系に変わったということでウェブ上のドキュメントが微妙に古くなっててハマりました。

特に cron で robot.send() を呼んで定時に発言させたい、というだけだったのですが robot.send {room: "#general"}, "ハロー" とか robot. messageRoom "#general", "ハロー" とかいろいろ試したものの

[Sun Jan 18 2015 23:26:40 GMT+0900 (JST)] ERROR TypeError: Cannot call method 'send' of undefined
2015-01-18T14:26:40.609421+00:00 app[web.1]:   at SlackBot.send (/app/node_modules/hubot-slack/src/slack.coffee:181:16, <js>:216:33)

などとエラーが出てしまい、一瞬そもそも robot.send が呼べていないようにも見えつつ、追ってみると上記エラー内の slack.coffee で

channel = @client.getChannelGroupOrDMByName envelope.room

で channel を取得しているものの特に null チェックをすることなく

channel.send msg

に突入してしまっており、それはそれでまずいのですがそもそも channel が取得できていない様子。

で、色々調べてみると hubot-slack アダプタ v2 から v3 へ – 半月記 に大変よくまとめられていました。

v3 ではちょうど逆になって、ハッシュ(#)を付けないようになりました。これが付いていると正しく動作しません。

ということで cron の書き方もいろいろあって悩んだ挙句に最終的には

cronJob = require('cron').CronJob
module.exports = (robot) ->
  new cronJob
    cronTime: "0 58 9 * * 1-5"
    onTick: ->
      robot.send {room: "general"}, "朝会やりますよ ヽ(´・ω・`)/"
      return
    start: true
    timeZone: "Asia/Tokyo"

このように落ち着きました。npm の方で crontime のパッケージを足してあります。

ちなみに robot.send() が無い、という問題はそれはそれであるようで 橋本商会 » hubot-slackアダプタv3にアップデートしたら色々辛かった

websocket接続するまでrobot.sendが無い

と指摘されており、起動直後に send コマンドを実行するような場合は記事内に書かれている

return if typeof robot?.send isnt 'function'

のようなのを挟んでおくと良さそうです。

これから新規で slack 用 hubot 開発する場合は、まだまだ不安定なバージョン3系だということを意識して調査・開発したほうが良さそうです。