memocon プログラミングのメモや物欲日記、雑記等

株式会社qnoteにjoinしました(Advent Calendar 2014 うちの猫の5日目)

2014年12月05日 00時30分

株式会社qnote

タイトルで全く関連がない感じがしますがこれはAdvent Calendar 2014 うちの猫の5日目の記事です。

今年の7月から株式会社qnoteに転職しました。

猫と一緒に働けるという憧れていた会社が求人しているという下のTweetを見かけたのがきっかけで転職できることとなりました。

そもそもqnoteの事を知ったのは2010か2011年ぐらいに猫を見たいだけに契約したアニマルプラネットのパンダのアンテナという番組でした。
その番組内で猫を飼っている開発会社として水樹奈々のナレーションで紹介されていたのを見たのがきっかけです。

12秒あたりに写ってるのが弊社です。

番組を見てから約3年が経ち、縁あって(作って)憧れの会社に入ることができました。

社長がCoda2の本やPostgreSQLの本を出してたのは知っていたのですが、CTO陣も専門書やWEB DB Pressでの連載経験があったりと技術力確かな人達が多くて仕事面でも幸せです。

猫陣も7匹と豪華です。
入社時はもう1匹居たのですが残念ながら社長宅に引き取られていきました。

猫社員のご紹介

ふたば

ふたば

みぃさん除く他の猫社員のお母さん。
人社員からはふーちゃんと呼ばれています。僕はかーちゃんと呼んでます。

ジーンズで出社するとジーンズで爪を研いでくれます。

みるく

部長

人見知りせず社外の人にも一番姿を見せ、触られても微動だにしないので営業部長として人社員から部長と呼ばれています。

「部長の腹、気持ちいいよね」とか「部長が俺の机の上でイビキかいて寝ててさぁ」という会話もありますが決して変な会社ではありません。

はな

はな

みるくと同じ茶トラでチャトラーズ。みるくとの見分け方は鼻の真ん中に通った一本の線。

みるくより毛が硬くゴアゴアしてるので触るたびについつい「ゴアテックス」と呟いてしまいます。
最近はよくブラッシングしてるのでみるく並みのフワフワ感になってきたと思います。

ちまき

ちまき

3姉妹のうち、一番ムッチリとした悩ましいボディの持ち主。
触り心地が良いからか美人だからわかりませんが人社員の人気が高いです。

よく手を舐めてくれます。
ひたすら舐めてくれるので初めは嬉しかったのですがそのうち痛くなってくるので舐めさせすぎもよろしくありません。

りぼん

りぼん

3姉妹の大中小の中、りぼんちゃん。
たまにロングボイスで人社員を呼び止め腹をモフらせてくれます。

スヤスヤ寝てるところを撫でると可愛い声で文句を言ってくるので、悪いとは思いつつついつい触って起こしてしまいます。ごめんなさい。

さくら

さくら

3姉妹のうち、一番小さい子で一番かーちゃんへの甘えん坊です。
いつもかーちゃんにひっついてるイメージでよく一緒に寝てます。
ちまきも同じぐらいかーちゃんとべったりですが、重いのか偶に一緒に寝る際唸られてます。

みぃ

みぃさん

唯一かーちゃんの子じゃない猫社員。
人社員からはみぃさんと呼ばれていますが僕はハチ割れなのでハッちゃんと読んでいます。

一番の人見知りでよく物陰で隠れていましたが、最近は慣れたのか自ら寄ってきてくれるようになりました。

美しいまでのゴメン寝や、フカフカなものをひたすらモミモミしてくれる猫らしい猫です。

ちぃ

ちぃさん

訳あって社長宅に引き取られた猫です。

1ヶ月ぐらいしか会えませんでしたがこの子は人懐っこく天使でした。
入社初日にCTOから会社説明を受けた時に緊張している僕を気遣ってかわかりませんが、挨拶がてら二人の間に割って入って腹見せポーズをして緊張を解いてくれたのを今でも覚えています。

社長宅でも相変わらず天使っぷりを発揮しているらしいのでいつか会いに行きたいです。

仕事風景

猫のいる会社に入社して

フロアに人より猫が多くいる生活が始まって約半年ぐらい経ちました。

入社当初、すぐに慣れるよと言われたのですが未だに夢見心地です。
なにより出社することが楽しみでありません。下手すれば自宅よりも長い時間過ごす職場が楽しいことは生活する上でとても重要なことです。

今日も猫と一緒に働く為に出社してきます。

CentOS6でelasticsearch + kibana3 + fluentdの環境作成手順

2014年10月19日 20時49分

ビッグなデータは全く持ってないのですが、phpカンファレンスでelasticsearch + kibana3 + fluentdという環境でログを可視化しようぜというセッションを見たので折角だから自分のサーバにも環境を作ってみた。

その手順のメモ。

elasticsearch

全文検索エンジン。

参考リンク
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html

fluentd

ログを運ぶ鳥。

参考リンク
http://docs.fluentd.org/articles/install-by-rpm

— v1.x

— v2.x

kibana(v3)

elasticsearchのGUI。JavaScript製のSPA。

参考リンク
https://github.com/elasticsearch/kibana

v4のbeta1が出たらしいがとりあえずstableの最新版を使用することにしました。

apacheなどの設定でチェックアウトしたプロジェクトのsrcにパスを通す。


カンファレンスで見たような画面が出た!

kibana3

とりあえずapacheのアクセスログを可視化しただけだけど、エラーログ案外出ててWordpressの設定を見直すということをやった時点で可視化の価値はあった。
手軽に見えるってのはとても重要。

あとはアクセス解析したいようなサービス作って何を見たいかってのを考えて、fluentdでタグ付けしていくと楽しくなりそうな感じ。

第2回 日本Seleniumユーザーコミュニティ勉強会に参加してきた

2014年10月18日 21時50分

最近、勉強会の報告しかしてない気がする…と毎回書いてるけど今回はSeleniumの勉強会。

第2回 日本Seleniumユーザーコミュニティ勉強会

Seleniumは前の会社でテストとしてじゃなくてマスタ登録をExcelでやりたいというのを実現するために使ったことしかなかったです。
JavaでPOIとSelenium WebDriver使って書いたけどあれは使われているのだろうか?
とりあえずブラウザが自動で動く様は初見のウケが非常に良かったです。

ということで、あまりSeleniumの知識持ってなかったので得られるものは多いはずと思い参加してきました。

— ひとこと感想 —

Seleniumをもっと知るための本の話
Symfony2を仕事で触ってるんですがやっぱり英語の資料読まないと情報が少ないなぁと思ってた所に英語の技術書を読みましょうという話があった時にはビクッとしました。英語、頑張ります。
脱・独自改造!GebでWebDriverをもっとシンプルに
Geb、超楽しそう。
Groovyと合わせてやる良い機会。
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外ではSeleniumでカンファレンスが開かれてる。
なんか日本との熱量の違いを感じるし楽しそう。
ハイパフォーマンスSeleniumテスト
Q&Aでの「チームにテストの文化を根付かせるには」という質問と内容が秀逸だった。
「テストを徹底させる為にどんな強権を発動したのか?」という質問に対して「一度(テストが)メンテ不能な状態になった。そこから本の勉強会などでテストの大切さを学んで浸透していった」。
やっぱり強制される(させる)やり方では難しく、チーム全体が自らやるという体制にならないといけない。


実践アジャイルテスト テスターとアジャイルチームのための実践ガイド

クックパッドアプリの開発を支援するAppiumの話
ネイティブアプリのテスト自動化、できることを初めて知った。

以下、まとめ。
後半になっていくほど内容が薄いのは自分の集中力の限界。

続きをみる

phpカンファレンス2014に参加してきた

2014年10月12日 01時01分

phpカンファレンス2014に参加してきたので忘れる前に書き留めます。

ちなみに去年のやつはこちら。

mysqlnd 徹底解説

あんまり意識しないレイヤーのlibmysqlとmysqlnd違いをライブラリのソースコードレベルで解説。
fetchの中の挙動とかディープな内容だった。

とりあえず意識しないといけないのはmysqlnd使っててPrepared Statement使う場合。

クライアントサイド(PDO::ATTR_EMULATE_PREPARES : true)とサーバサイド(PDO::ATTR_EMULATE_PREPARES : false)で結果の型が違って、場合によっては値が違ってくるのは衝撃的でした。
これ知らずにハマってたら解決まで長引きそう。

このセッションで受けた印象としてはmysqlndはまだ枯れてないという感じ。
mysqlndの作成理由がlibmysqlのライセンス(GPLv2)が主ということなら、それが問題にならないケースの場合はlibmysqlでええんでないかいと思う程には保守的です。

安全なPHPアプリケーションの作り方2014 〜必要最低限のセキュリティ対策はこれだ〜

目当ての徳丸先生セッション。(徳丸さん×大垣さんはその場に居るだけで胃が痛くなりそうなのでパスしました)

3大脆弱性(CSRF、XSS、SQL Injection)を解説、デモ、対策を順にやって説明。
やっぱ実演があるととても分かりやすいです。

以下、セッション中の徳丸先生の話の中で気になったもの。

○ 独学で本一冊を最後まで仕上げる(やりきる)のは大変、その点は褒められるべき

「その点」というのは『脆弱性を含む本で勉強していても』という流れだったような気がします。

積み本してる身としては耳が痛い言葉だったけど、だからこそ本当にそう思います。
特に仕事で必要に迫られてじゃなく知的好奇心とかが動機だとその行為は何よりも尊いし大切にしたい。

○ サンプルプログラムの乱数生成方法

乱数を生成するのにuniqidやmt_randを使うのは避けてopenssl_random_pseudo_bytesか/dev/urandomを使いましょう。という先生のサンプルの乱数生成方法がこんな感じだった。
なるほどという感じ。

今日から始める PHPエンジニアのためのアクセスログ解析基盤構築入門

http://who-you-me.github.io/slides/phpcon2014/#/

入門的なセッションの場合はそういうツールがあるよというのを知るのが大切(なはず)。
実際、ツールの紹介と基本的な使い方が主。

ということで出てきたツールやサービス一覧

Elasticsearch
オープンソース検索エンジン
Kibana
上記ElasticsearchのGUI。サードパーティ製だと思ってたらオフィシャルだった。
BigQuery
Google社のSaaS型データストア。
課金が安いらしい。
fluentd
treasuredata製のログ収集管理ツール。

この辺りに関しては去年試してみるかと思い立って調べてみたけど、結局サーバがVPS一台しかなかったのでやるのは今じゃないという結論に達したのを思い出した。

なんかフル活用出来るようなサービスを立ち上げたい。


今年は3セッションで体力尽きました。
でも公式見たらustreamで動画公開してくれてるのでそれ後でチェックしよう。

スタッフや関係者の方々、素晴しい発表していただいた方々、素敵な時間をありがとうございました。

シェル芸本で気になったリファクタリング・ウェットウェアのサンプルを読んでみた

2014年08月23日 14時45分

シェル芸本の最初の方にお勧め文献として紹介されていたリファクタリング・ウェットウェア。
調べてみたらちょうど読みたかった第一章がサンプルとして公開されていたので読んでみました。

「初心者にはコンテキストに依存しないルールが必要だが、達人はコンテキストに依存した直感を使う」

ところどころ当てはまりすぎてぐぬぬってなってしまう。
サンプル読んだら後の章も気になってきたので買ってしまおうかと思案中。

サンプルは本の紹介ページに存在します。
O’Reilly Japan リファクタリング・ウェットウェア――達人プログラマーの思考法と学習法

以下、ドレイファスモデルについてのまとめ。

ドレイファスモデルについて

技能習得の「初心者」から「達人」への通過しなくてはならない階段を5つにまとめたモデル

ドレイファスモデルの5段階

初心者

  • 技能分野における経験をほとんど持っていない。
    ※ここでの経験とは技術を使うことにより、考え方に変化がもたされたもの
  • うまくやり遂げる能力が自分にあるかどうかいつも気にする
  • 学びたいという意欲より当面の目標を達成したいという願望を強く持つ
  • ミスにどう対処するべきかを知らず、状況に応じて柔軟に対応することが難しい
  • コンテキスト(状況)に左右されない、従うべきルールを与えればある程度効果的に仕事をこなす

中級者

  • ほんの少しだけ決まったルールから離れて仕事にあたることができる
  • 情報を素早く入手したがる
  • 最近経験した類似場面を参考に、コンテキストを考慮したアドバイスが活用できるようになる
  • 多くに当てはまる原則を見いだせるようになるものの、そこに「全体像」はない。
    「全体像」を説明すればそれは「まだ私には関係ない」という態度をとる

上級者

  • 問題領域の概念モデルを発展させ、そのモデルを使って効果的に作業ができる
  • 初心者・中級者は物事に対して決まり切った反応をするが、上級者は問題を探し出し解決する
  • 自らを振り返り、補正するには十分な能力が備わっていない

熟練者

  • 技能を取り巻くさらに大きな概念の枠組みを模索し、理解しようとする
  • 単純化しすぎた情報には苛立ちさえ覚える
  • 自らの行いを振り返り、次回のパフォーマンスを改善する為に取り組みを修正できる
  • 熟練者としてのケーススタディを読み、他の人達の行いを見ることにより効果的に学ぶことができる
  • 「格言」を理解しうまく適用する能力も備わってくる
    ※格言とはレシピと異なり、特定の状況において特定の解釈がなされて適応される
  • 「ソフトウェアパターン」も効果的に適用することができる
  • アジャイル手法のリフレクションとフィードバックを目一杯活用できる

達人

  • 絶えず物事を行うよりよい方法を模索している
  • 何かをするのに、「理由があってそうする」のではなく、直感に従って行う
  • 無意識レベルで本質に関係のない部分と重要な部分の区別ができる

現場でのドレイファスモデル

  • 達人を仲間全員と同じルールで縛るのは愚行。「サラブレッドを群れで動かすようなもの」
  • 初心者は「番をしてもらう」必要があり、曖昧さがない明確な指示を与え、小さな成功体験を積ませることが必要

技能レベルの変化による違い

  • よりどころとする対象がルールから直感に移行する
  • 問題を一様な関連性を有する小部分の集合として認識するのではなく、ひとつの完全かつ無類の統一体として認識し、特定の小部分にのみ力点を置くようになる
  • 問題から遊離して存在する観察者から、システム自身の一部としてそれに関与する存在へと変化する

達人 != 先生

  • 達人は自ら結論に達した道筋を理路整然と表現できない

効果的な学習法

  • 明確に定義されたタスクがある
  • タスクには適度な難度(やりがい)が必要だが、実行可能でなければならない
  • 周囲から、行動のよりどころとなるような有益なフィードバックが提供されなければならない
  • 復習のための繰り返しの機会が与えられ、またエラーを修正する機会も提供されるべきである
  • 中級者の周囲に優れたお手本を配置すること(経験の伴わない専門技能は存在しない)

道具のワナに注意

ツールや形式モデル、モデリングなどの役割については最終的な目的ではなく、あくまでも目的を達成する為の道具だということを忘れてはいけない。

形式的モデルに過度に依存する危険性

  • モデルを現実と混同
  • 形式化できない特徴を低く評価
  • 個人の自主性を否定する行動を許可
  • 初心者に味方して、経験豊富な熟練者を疎外
  • 説明が細かすぎる(無限後退の可能性)
  • 複雑な状況の過度な単純化(いかなるプロジェクトも現実はより複雑なもの。「必要なのは……だけ」「これさえすれば……」と切り出す人がいたらそれは間違っている可能性が高い
  • 極端な画一化の要求
  • コンテキストの微妙な違いに対する配慮不足
  • ルールに従うべき時とそれを破るべき時の判断の誤り
  • 標語化
    exp)「我々は顧客中心の組織です!」というスローガン

基準となるルールの確率は技能レベルの低い者にとっては有用かもしれないが、ルールは判断の代用にならない。
判断力が向上するにつれて、ルールへの依存度をゆるめ、それとともに制度上の強制も少なくする方向に移行していく必要がある。

達人への道しるべ

  • さらなる直感力の育成
  • コンテキストの重要性の認識、およびコンテキストのパターンに対する重要性の認識
  • 自分自身の経験のさらなる活用

追記:参考文献も大変役立つシェル芸本とはこの本ですよ。