@kazuho → @kazeburo → @nekokak → @hiratara → @comewalk → @aloelight → @sartak → @Yappo → LT → @hidek → @lestrrat
雨大丈夫かなーと思って家を出たら、いきなりザーザーで折り畳み傘をさしたものの、ちょっと濡れたかなって感じで、着替え調達を口実に昨日ちょっと欲しいなと思った Perl T シャツを買ったんだけれど、そのあとは雨はあがりましたとか。
IPC::Open3 の話とか。
過去 Log::Log4perl とかをチョイスしていたけど、より Log::Minimal の方が手軽そうでいいな。
DevOps なお話。
開発と運用のコミュニケーション大切。開発だけれど障害出ると「ヤバい俺か?」といつもビビる。
モナド。
今までスルーしてたので参考になった。「Perl でモナドってみた」については理解するのに良いけど、(Perl において)プラクティカルかというと微妙だなという第一印象。まだ掘り下げて学ぶ必要あり。
Blog をとりまく今までの歴史など。
私的開発スタイルの変遷について。
DTrace で何かごにょごにょやってた。
スピーカーが一方的に話すだけではない YAPC らしいセッションを試みるなど、チャレンジングな良いトーク。
いろいろ。
マネージメント視点での話。他に無いトークで良かった。 DeNA にもってかれた。
時間もおしてたので、マキで。
トークとしては、やはり聞いてる自分が「お、これは自分でもやってみたいな」とか「ここに生かせるな」と思えるものが印象に残るし満足感が高いね。ここは落とし穴だから注意ねとか、ハマッたのでこんな工夫してみたよとかも引きこまれる。
逆に Perl 的な話だったとしてもモジュールの羅列紹介とかだとちょっと退屈。
内容レベル的には、浅すぎず、後半だんだん高度な話になってきたところでギリギリついていけるぐらいがいいかなと。
以上はもし自分がトークする立場になった時の参考用のメモ。
YAPC::Asia Tokyo 2012 もぜひ開催を!
いよいよ YAPC::Asia Tokyo 2013 スタート!
今回は席に電源があるので安心してノート PC・スマートフォンを使えるので嬉しい。 Wi-Fi がつながっても DHCP で アドレスがもらえなくて通信できなかったりすることがあるのでちょっと注意。いったいどれだけ接続してるんでしょうね。これだけ geek の集まる会場で Wi-Fi 環境整えるの相当ノウハウがいるのだろうなあ。
Perl の今後の機能追加・変更(experimental features)についての話。まだまだ Perl 5 は Perl 5 のまま変わっていくと。便利になったり直観に反するものが減ったりとか良くなっていく。シンタックス/セマンティクスがさらに肥大化していくのは初学者にはちょっと厳しくなるのな。
この話につきものの互換性の話もあった。去年のスピーカーは互換性を大事にするという話だったけれど、今回は互換性を恐れずに改良していくというニュアンスに感じられた(聞き間違えでなければ)。個人的には Perl は古いスクリプトがそのまま動くのがとてもいいと思っているので、そのあたりも引き続き大事にされると嬉しいな。
LINE株式会社では mod_perl から PSGI/Plack にほぼ移行済みとのこと。Starlet を使っている。
今回はリバースプロキシとアプリケーションサーバ間の大量のリクエストを捌くために Monoceros を開発しているというお話。あと PSGI/Plack の基本概念の解説もあって嬉しい。 Perl で書かれた HTTP サーバがハイパフォーマンス出せるなんて、昔は自分は考えもしなかった。
PSGI/Plack のサーバを書く人必見な、中身の濃いトークでした。
RTB システムに Riak を使ってみたというトーク。良い Perl モジュールが無いので作ったとのこと。
DeNA の Perl エンジニア初心者研修プロジェクトについて。Class::Data::Inheritable がコードリーディング教材とし良いらしい。
高速化されたプロトコルの話かなと思っていたけれど、ドヤリングから暗号化という導入で引き込んでいく手慣れたトーク。本格的に使われ始めるのは来年以降?
たまにお名前が話題にあがることのあった @bonar 氏と初対面のご挨拶をさせていただきました。今後ともよろしくお願いします。
社内の Perl 技術動向について談議。最近は解き放たれてきたねとか。
Perl 6 の話など。
Google 翻訳を使ったキュートなスライド(ほとんど聞いてなかった)。
@kazuho 氏の prove のトークで始まって、最後日本人による中国語(のような違うような)でのトークでシメ。
乾杯。
多目的教室3は常に人気で入ろうとしたけど1度も入れなかった。部屋遠しが近いので人気なトークがあるとさっと集るのかもね。
そういえば今年の T シャツ、背中に pixiv って大きく書かれていて着用できないものだということに気がついた。残念。 ピクシブが T シャツスポンサーだからなのかな。スポンサーのおかげで運営ができたりチケット代が抑えられたりできていると思うので素晴しいと思うのだけれど T シャツについては有無でチケット代が違うので、大きく広告が載りますよってチケット発売時に明記してくれるといいと思う(自分は先行販売で買ったので T シャツの有無は選べないから関係なかったけど)。
Mojolicious に限らず Web アプリケーション開発のかなり基礎のところから解説。ビギナーが「書けそう」って思えるトーク。
今年のベストトーク賞で2連覇達成。聞いた人が「帰って自分で何かできそう/やろう」という気持ちを起こさせる要素がきちんと入っているので yusukebe 氏のトークはいつもいいなと思ってます。
プログラムを書いて AWS の管理を自動化できるという話。API もあるけど CLI もあるよと。AWS 使ってねと。
Carton:
ローカルで
git commit cpanfile.snapshot
デプロイ先で
carton install --deployment
cpanm、 Carton の最新の機能今後入れる予定の機能の紹介。テストに Travis CI を使い始めたとのこと。
おとよさんと学食。自分が通った大学もこれぐらい学食充実してくれてたら良かったなー(久しぶりに喫茶鳩のおじや(だっけ?)食べたい)。
tDiary から Ruby に入った人が多いのかな。 Perl Monger にはザワザワする刺激のあるいい座談会。
結論的にはプログラミング言語の選択というのはプロダクト/サービス開発の一要素でしかないし、優れたエンジニアならどの言語でも書けるよねという無難な落とし所でまとめ。
10周年目を迎える livedoor Blog の裏側。 エンジニアの総意工夫があったコードだけれどだんだんレガシーになってメンテナンスコスト大きくなるよねという話は mixi もそうで非常に同感。
同一端末内の複数のアプリで、シングルサインオンする仕組み。
日吉キャンパス、第1校舎と高等学校グランドの間の階段を降りていくとなんか田舎な風景が広がっていてトリップした感じになれて良い。
一昨年の Hideo Kimura 氏、昨年の Gosuke Miyashita 氏と同様にマネージャーというポジションでのトーク。
今年は参加者1,131名。
牧氏・櫛氏の運営参加は今年が最後とのこと。お疲れさまでした。 なにか組織的にもいろいろな動きが裏でもあるのかもしれないし、あるいは新しい世代への交代を意図しているのかもしれない。
JANOG + LLNOC により構築されたネットワークのおかげで今年は昨年に比べて非常に快適だったことにも感謝。
今年は例年に比べてプログラミング言語 Perl についてのトークが多かったように思う。同時に今年はなんとなく Perl の人気の陰りを感じもした。昨今のネットサービスで Perl が対応言語に含まれてないこともよくあるとかそのような。
Perl コミュニティとしてコミットしたりいろいろ働きかけていきましょうという話はあるし、次の世代による新しいコミュニティの立ち上がりもある感じだし、Perl 言語自体もまだまだ貪欲に機能改良が進んでいるという話もあるし悲観することはないのだけれどもね。
ここ数年とは違う空気感だったことは確か。Perl 的にも YAPC::Asia 的にも新しい時代が来るのかな。
Happy programming in Perl!
LINE株式会社で開催された Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon 「秋のPlack/PSGI祭り」に参加してきた。今回は YAPC::Asia Tokyo でもよくトークされている masartz 氏とご一緒させていただいた。ここの会場にくるのは「第3.5回 データ構造と情報検索と言語処理勉強会」「PerlCasual #05」に続き3回目。
開催を知った時には定員60人すでに埋まっていて補欠だったんだけれど、その後定員80人に増やしてくれたようで参加できるようになった。当日時点ではキャンセル等で定員切っていてきたい人はこれるようになってたよ。
会場アンケートをとりつつ、必須な/便利なモジュールや Plack::Middleware の紹介。
Plack/PSGI のパフォーマンス向上の取り組みが進めば Perl の適用領域を広がるし(リアルタイムな広告系とか)、Perl 使いの仕事も増えるよ。
など。プラクティカルなトーク。
リクエスト中のパラメータの decode を Plack で一箇所でやってしまう話。
「YAPC::Asia 2014 やります!」とのことです。
@bayashi 氏の plackup -e でちょっとしたこといろいろできて便利だよという話や、@azumakuniyuki 氏の Haineko の話や、 @hkoba 氏のコントローラを書く人がいないプロジェクト向けのテンプレートエンジンの話や、@songmu 氏の .psgi からの卒業の話とか、@tasukuchan 氏のきまぐれオレンジ☆ロードについてのラジオみたいなビデオ LT とか。
空気を読まない(読めない)一方通行なビデオ LT は新しく。
SEO 的に重要なキーワードが前の方にあった方がいいらしいので「【日記】」というのは後ろにもってきてみる。
今日は久しぶり通勤時に冬の土砂降りで、家を出て2分で靴とジーンズがズブズブ。もうこれはどうしようもないレベル。やはり会社に靴と靴下置いておいた方が生産性に寄与する気がする。
あと昼に Plack Handbook を一読。今まで読んでいなかったのでモグリだった。チーム内の持ち回りのプチ勉強会で CGI・PSGI とかの話を担当する予定なんだけれど、Plack の部分はこれ読んでねで終わりな気がする。
あと技術交流的な LT 、交流がメインならトーク + 懇親会に一工夫なにかできないかなと考えたり。トークの後の懇親会でエンジニア同士交流ご自由だけでなくて、何か強制的にグルーピングしちゃうような。とか、名刺交換じゃなくてその場で強制友人申請大会にするとか。自分自身、社交型エンジニアじゃないのでそういう仕組みがあると出会いがあっていいなあと。
2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システム の DiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には
などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。
CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。
Plack::App::Directory::Markdown をベースにちょっと手を入れた Markdown ビューアを使っている(記事)んだけれど、閲覧要認証なシチュエーションが出てきた。
自分のみ閲覧のものは builder で Plack::Middleware::Auth::Digest を enable にして Digest 認証をかけ、htdigest コマンドでパスワード管理とかで済ませているのだけれど、複数人に閲覧してもらうのにこれは嫌だ。人のパスワード管理はしたくない。
OAuth で Google アカウントとかの認証を使うというのもあるけれどキーとか面倒くさいので、せっかくだし mixi OpenID を使うことにした。Perl モジュールは Net::OpenID::Consumer::Lite を使用。
とりあえずやっつけで以下のような感じ。いきなり mixi OpenID 認証させるしエラー・キャンセル処理もほとんどないし、call の中にネジこんだりしてあるので、まだまだダメダメだけれどとりあえず認証はできた。後で整理する。
$app = builder { enable 'Session', store => 'File'; $app; };
my $session = $env->{'psgix.session'}; my $request = Plack::Request->new($env); unless ($session->{openid}) { unless ($request->parameters->{'openid.mode'}) { my $check_url = Net::OpenID::Consumer::Lite->check_url( 'https://mixi.jp/openid_server.pl', $request->uri); return [302, ['Location' => $check_url], []]; } return Net::OpenID::Consumer::Lite->handle_server_response( $request->parameters => ( not_openid => sub { return [503, [], []]; }, setup_required => sub { my $setup_url = shift; return [302, ['Location' => $setup_url], []]; }, cancelled => sub { return [403, [], []]; }, verified => sub { my $vident = shift; my $identity = $vident->{identity}; # %member に閲覧 OK の OpenID を入れてある。 if (exists $member{$identity}) { $session->{openid} = $identity; return [302, ['Location' => $vident->{return_to}], []]; } else { return [403, [], []]; } }, error => sub { my $err = shift; return [503, [], []]; }, ) ); } # 以下は認証済みの場合の処理を書く。
[ Naney と mixi ]
ノート/メモははライティングアプリ Ulysses を使い Markdown で書いていて、検索・閲覧・整理も Ulysses で基本済ませています。ただいくつかの良く参照するファイルはブックマークやハイパーリンクから Web ブラウザでさっと表示させたかったりします。なので以前は Plack::App::Directory::Markdown を使った自作 PSGI アプリケーションを使ってました。
が、セットアップしたり保守したりという手間を今とれないなと思って、 Markdown ビューアを探してみたところ MkDocs が良さそうなので試してみました。
MacBook Pro に Homebrew で入れて動かしてみます。
$brew install MkDocs $mkdir -p ~/var/mkdocs $cd ~/var/mkdocs $mkdocs new local $cd local $mkdocs serve
で Web サーバが立ち上がるので http://127.0.0.1:8000/ にアクセスすると ~/var/mkdocs/local/docs/index.md の内容を HTML に変換したものが表示されます。お手軽! 設定変更は ~/var/mkdocs/local/mkdocs.yml できます。
あとは docs の下に Markdown ファイルを置いておけば Web ブラウザで閲覧できます。docs の下に既存の Markdown ファイルノートディレクトリへシンボリックリンクを作ればそれらも辿って表示されます。
試していてブラウザでのレンダリング表示が重いなと思って HTML ソースを見たら同じ JavaScript ファイルを何十回も読み込んでいて何か変ぽかったので Homebrew のをやめて pip で入れなおしました。どちらも現在 mkdocs 0.17.2 ですが pip で入れた方は問題なかったのでこちらを使うことにします。
$brew uninstall mkdocs $brew install python $pip2 install mkdocs
MkDocs は静的サイトジェネレータで、プレビューサーバは補助的機能ですがまずまず使えそうです。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。