PHPカンファレンス2014に行った
すでに先々週のことだけど、ついでに餃子を食べてきた。
蒲田来たらほぼ確実に餃子食べてる pic.twitter.com/QpDkXeiwhx
— 深澄りぜ (@Misumi_Rize) 2014, 10月 11
そしてチャーハン pic.twitter.com/XWJWcfLTjT
— 深澄りぜ (@Misumi_Rize) 2014, 10月 11
餃子とチャーハン、最高のユーザエクスペリエンスだと思う
— 深澄りぜ (@Misumi_Rize) 2014, 10月 11
今年が初参加だったけど、去年のプログラムと見比べると「PHPではこんなことができる」という紹介より、PHPのコアやPHP互換環境などの芯に近い解説の方が増えたように感じた。
PHPがゆるふわ言語だというdisりはたびたび耳にするし、PHPエンジニアも危機感を持っている。それでもPHPでコードを書かざるをえない。PHPとうまくやっていくためにも文化(TDDだったりコードレビューだったり)が必要だったし、今あるツールセットでどうするかが重要だった。
今回メインテーマの一つと言ってよいHHVM/Hackが出てから状況が変わりつつあって、PHP言語仕様の策定が進んでいるのは基調講演で話題に上ったとおりである。PHP互換環境というPHPの世界に存在する他者によって、PHPそのものをどうするかという議論へと深化したように感じた。
PHPは人口の割にカンファレンスや勉強会の盛り上がりが今ひとつなので(逆に言えばそれだけ間口が広くて敷居の低い言語であるとも言える)、もっと大勢でドッカドッカできるとめでたいと思う。
コルセット
最近常にコルセットをしてます。入浴時、ライブと屈んで作業する時間だけ外しているので、生活中の75%程度は着用している計算になります。
コルセットと言っても医療用ではなく、補正下着の方なので下記のような効果を期待することになります。
- 痩身効果
- 体型補正効果
- 姿勢矯正効果
当然ながら着用しただけでは痩せません。食生活を含む習慣を見直した結果痩せるのであって、コルセットは銀の弾丸ではありません。ただし暴飲暴食を行った際歩行が困難になるレベルで多大なる苦痛が発生するので、学習効果は絶大です。
体型は締めた量に比例してそれなりに補正されます。永続的な補正となるとまだ着用期間が短いので経過観察が必要そうです。
元々猫背の上に背骨が湾曲しているので、姿勢矯正は苦痛以外の何者でもないです。常にしゃちほこばった体勢でいるのは休息時間がないのと同じで、急速に集中力が失われます。
加えて体幹部が常に固定された状態になるので、支える筋力が低下した結果腰に負担がかかります。これは座り方が下手で腰が悪いことによるものが多いですが、体幹部は適宜運動をして筋肉量維持に努めましょう。
あと、汚い話ですが上と下からやたらガスが漏れます。常時内蔵が圧迫された状態にあり、発生したガスの行き場がないのでやむなしだと思います。
上記を総合して、特段の理由がない限りコルセット着用ではなくトレーニングによって痩身を目指した方がよいです。特段の理由があるのでコルセットを着用していますが。
— 深澄りぜ (@Misumi_Rize) 2014, 10月 9
JSパッケージ管理Duoの使い方(DuoとD3を使ってビジュアルプロトタイピング)
Component, Browserify, Goに影響を受けたパッケージ管理。平たく言うと、Go方式でrequire
したものがComponentのようにビルドされる。
Duoのインストール
$ npm install -g duo
パッケージ取得時にGitHubのAPIを利用するので、API制限を緩和してプライベートリポジトリを利用できるよう、~/.netrc
に認証情報を書き込んでおく。
machine api.github.com login <username> password <token>
使い方
var uid = require('matthewmueller/uid');
ビルドを実行するとmatthewmueller/uidリポジトリからコードを取得し、結合したコードが出力される。
$ duo index.js > build.js
結合後のコードは即時関数でラップされるので、CommonJSに準拠していることが求められる。
@import 'necolas/normalize.css';
CSSも@import
によってリポジトリからコードを取得し、結合できる。
var js = require('./relative'); var text = require('./relative.txt'); var html = require('./relative.html');
相対パスを使用することで、ローカルに存在するファイルをrequire
できる。テキストやhtmlを読み込むとStringとして展開される。
D3を使った実例
上記をふまえると、D3本体と集計対象データを含んだJSが生成できる。
var _ = require('lodash/lodash'); var d3 = require('mbostock/d3'); var dataset = require('./dataset.tsv'); var svg = d3.select('.target') .append('svg') .attr({ width: 640, height: 480}); svg.selectAll('circle') .data( _.map(dataset.split('\n'), function(v) { return v.split('\t'); }) ) .enter() .append('circle') .attr('cx', function(d) { return d[0]; }) .attr('cy', function(d) { return d[1]; }) .attr('r', function(d) { return d[2]; });
ローカルでサーバを立ち上げなくてもクロスオリジンを回避しつつビジュアライズできるので、プロトタイピングに大変便利だった。
Componentでビルドしたものをテストする
結論
ビルド後のJSではrequire
がpolyfillされているから、フロントエンド側からrequire
を使って適宜呼び出せばよい。
テストスタックは好きなものが使える。例ではMocha, Chai, Karmaでテストしており、変にロックインされる心配はない。
例
MisumiRize/component-test-skeleton · GitHub
npm install -g component karma-cli
必要に応じてグローバルインストールしたあとで、ビルドとテスト実行。
component install component build npm install karma start
ハマりどころ
component.json
のname
はちゃんとつけておくこと。
ビルドを実行してrequire
がpolyfillされる際、component.json
のname
欄を参照して名前が付けられる。未定義のままビルドしてもエラーは発生しないが、名前がundefinedになってしまう。
補足
パスを指定すればエントリポイント以外でもrequire
できる。同じように、的確に名前を指定しさえすれば、component install
したものもテストからrequire
できる。
発端
component.jsonのspecが合ってないと延々悩み続けたら、1.0.0-rc準拠だったというオチがついて泣いてる、visionmedia氏がnode離れてるし1.0.0出る気配ないけど大丈夫かComponent
— 深澄りぜ (@Misumi_Rize) 2014, 10月 1
いつまでたってもヤクの毛刈りから脱出できない
— 深澄りぜ (@Misumi_Rize) 2014, 10月 1
Componentを3時間ほどいじって、ついに「あっこれ中身ガチャガチャできるやつや」と気づいた感動
— 深澄りぜ (@Misumi_Rize) 2014, 10月 1
ワンダフルステージ!2nd Live! でバー店員兼スタッフやった
南條さんごめんなさい今日ぼくは大阪でコスプレしてます
— 深澄りぜ (@Misumi_Rize) 2014, 9月 27
コスプレバー店員楽しかった
— 深澄りぜ (@Misumi_Rize) 2014, 9月 28
カラフルマスター&ワンダフルステージ終わって撤収しました、お疲れ様でした、楽しいイベントでした
— 深澄りぜ (@Misumi_Rize) 2014, 9月 28
カラマス、ワンステ打ち上げ、全部食います! pic.twitter.com/havlolYR4U
— 深澄りぜ (@Misumi_Rize) 2014, 9月 28
全部食ってやります!! pic.twitter.com/mNKflgblKG
— 深澄りぜ (@Misumi_Rize) 2014, 9月 28
スタッフの男の子の尻触りまくってる
— 深澄りぜ (@Misumi_Rize) 2014, 9月 28
実家に帰った
実家、黒霧島の瓶が置いてあって「やったぜ。」と思わせながら中身は自家製ポン酢という壮絶なトラップを仕掛けてあって気が抜けない
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
実家と言っても特にやることはないのでマチアソビのロケハンした。
いま わたしは まちあそび に きて います pic.twitter.com/xD8R2oMc0X
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
ufotable cinema来たけど絶妙にタイミング合ってなくて泣いてる pic.twitter.com/YwgpvVXNCn
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
一時期この辺は市街中心部空洞化の典型例みたいなもので、平日昼間に行ったらがらんとしてたのに、今日見たらそれなりにテナントが埋まっていて人が来るようになっていた。
地元そごうの屋上、寂寥感がこみ上げて来て胸がつまる pic.twitter.com/rJYtdnmUSb
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
秋の平日ド昼間に子供なんていないよな、と車体の比較的新しい塗装を見て思った、きっと塗装の劣化も早いだろう、振り向いたら家族連れがゴーカートに乗っててなぜか救われた気がした pic.twitter.com/jduy5YcVuc
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
中心市街の象徴たるデパートにもユニクロやらLOFTが入ってて、街の新陳代謝のようなものを感じる。
最高にクールだ pic.twitter.com/eh4A5rszzd
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
DAIGOが来る!!!行きたい!!!! pic.twitter.com/Kq9GVnO2W2
— 深澄りぜ (@Misumi_Rize) 2014, 9月 26
帰宅して親にAmazonの使い方を説明した。親のイメージではインターネットの世界は一枚岩のようで、サービスごとにアカウントを作るのが不便に感じるらしい。
9/27から9/28にかけて大阪です(+告知)
27日の主目的はfripSideの握手会です。夜は多分フリーなので遊んでください。
28日は下記にて終日ウエイトレス兼スタッフなことやってます。
企画のお知らせです!現在書店で頒布中のカタログに記載しておりますが、Culture Bar W@VEが出店します!
メニューとしてμ's9人のノンアルコールカクテルが用意されますので、是非チェックしてくださいね。
— ワンダフルステージ!準備会 (@Wonder_stage) 2014, 9月 15
お待ちしております。衣装は今作ってます。