2012年7月1日日曜日

Perl Beginners #3 開催しました



6/29(金)19:00~20:30(実際は10分ほどオーバー)にかけて、Perl Beginners #3を開催しました。

ビギナーズセッション


今回は、ビギナーズセッションでの発表者は@studio3104_comさん1名でした。若干さみしいなーとは思ったものの、テーマが「データベース」ということもあって、質問すること自体が割りと難易度高めだったのかな、と反省しております。
さて、@studio3104_comさんの発表ですが、まさかのfluentd!!!なんというガチ!!!(githubはこちら。)

※彼は事前に主宰にリンクまで送って、「こういうのでOKですか?」って訊いてくれてたにもかかわらず、僕のほうできちんと確認しきれないまま(要するにもちょっとソフトに!とかいうツッコミを入れないまま)OKだしちゃったので、その辺はまあなんと言うか、ごめんなさいです。。。

やりたいこと&質問事項を、掻い摘んで書き出すと、

 やりたいこと
  • MySQLのslow-logを監視して、slowなクエリを抜き出す
  • use db_nameのようなDB変更クエリを元にDBを選択し、 抜き出されたslowクエリに関するEXPLAINを実行する
  • 実行結果を別ログに吐き出す
質問事項
  • DBがシャーディング(このブログが詳しい)されているので、異なるDBでもテーブル構造がまったく一緒だったりする。
  • どのDBに関するslowクエリなのかを判断する方法が、知ってる限りuse db_name を見つけるくらいしかない。
  • 特にプログラム起動直後は、use db_name が見当たらないケースが発生するので、DBの特定方法でもっと良い方法は無いだろうか。
というもので、ものすごくガチではないものの、beginner向けとしてはなかなかパワーのある内容でした。



ある程度質問内容を噛み砕いて説明した甲斐もあって、聴衆からはさまざまな意見が出てきました。最初のほうは、

 「クエリのコメントにDB名を書いておけばログにコメントが出てくるんじゃないのか?(実際はログに載らなかったのでダメ)」
 「当たり障りのないwhere文にDB名を書くのはどうか?(一同爆笑。クエリに手を加えられないのでNG)」
 「プログラム側で各DBのスキーマを持っておいて、クエリ内のテーブル名を元にスキーマを漁り、DB名を持ってくるのはどうか?(シャーディングのものがあるので、あまり意味が無い)」

というバッドノウハウかつ、あまり効果の期待できないものが色々挙げられたのですが、クエリを発行するシステムがwebアプリということもあって、最終的には

 「EXPLAINを行う直前に、どのDBを使っているのかを問い合わせる別のwebアプリを用意し、間に挟みこむ」

という方法がベターであろうという話になりました。

あと細かいところで、

my ($foo) = $str =~ /^foo:(\w+)/ if $x;

のような書き方は$fooがそもそも定義されないケースがある(modperl)ので、オススメできない、という意見もありました。

ちなみに@studio3104_comさんは、perlは3ヶ月くらいしか触っていないとのことでしたが、ほかの言語の経験がかなり豊富な様子でした。
※本人曰く「「他の言語は経験豊富」は誤報です!!! 他の言語はHello Worldしか出来ませんー 」だそうです。そんなまさかーw

休憩


ライトニングトークまでの10分間、休憩をはさみました。その間も、一部では先ほどのDB名特定について議論していたり、主宰による雑多な質疑応答を交えたりしました。

ライトニングトーク



ライトニングトークの一発目は、主宰による「Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話」と題して、過去の恥さらしとORマッパー利用遍歴の紹介を行いました。(スライドはこちら)
言いたかったこととしては、DBI+MySQLにまず慣れよう。ORマッパーはその後でいい、ということですね。 


続いて@maka2_donzokoさんのLT。手始めに自己紹介として「薄い本作っています」と言いながら「Acme大全」や「Parumon」の宣伝を行った後、「MySQL使ってる方ー(多数挙手)」「PostgreSQL使ってる方いますか?(2~3名挙手)」「僕もPostgreSQL使ってますけど。少ないですねー」という感じで、いろんなデータベースがありますね的な話をしてたところ、突然スライドの題字「データベース」がもぞもぞ動き出し、いつの間にか「ダースベーダ」になってしまい、下の写真のように。。。


さらに、これだけだとPerlとの関連性が薄いのでという理由で、Perlにはsort()などで登場する「スターシップ演算子 <=>」があるよ(ベイダー卿が<=>に搭乗している!?)という話と、CPANモジュールの1つ、Lingua::Alphabet::Phonetic::StarWarsを使って、ベイダー卿(Vader)が"LOVE"の中に居るんだよ、という話で締めくくりました。まかまかしい!


3人目は@toku_bassさんによるMySQL::Diffの紹介です。開発->検証->本番という3つの環境について、DBのテーブル構造をあわせたい、という、おそらくある程度経験を積んだ開発者なら誰もが思い悩む部分を、「diffをつかってpatchを作るかの如く」解決してしまおう、というものとのこと。


Beginnerにとってだけではなく、Regularな方にとっても細かく役に立つモジュールの紹介でした。
本番DBと開発DBが異なる、という割とカオスな状況は往々にして遭遇する状況ですので、このようなツールの存在はとてもありがたいですね。


最後のLTを務める@hirobanexさんは、Beginner向けにTengを紹介してくれました。
DBIをある程度使えるようになった後は、開発効率を劇的に向上してくれるORマッパーを使いたくなるだろうということで、「作者が日本人」で「割と広く使われており」「そのため日本語で質問しやすい」という感じの利点を前面にTengをオススメしていました。




あと、素のDBIではどうしてもセレクト系メソッドがたくさんあって、Beginner的には混乱しそう、ということもあって、このあたりの事を考えなくてもよいTengのお手軽さをアピール。
「Tengのdoわかりやすいね。」という感想が出るほど、良さが伝わった様です。


ブルガリア料理のお店で懇親会の様子

※何度も言いますが、ガチホモ合コンではありません!!!11(こことか



写真持ってる人、居たらシェアしてくださいね!
ブルガリアンカクテルは、飲んでるときはそんなに強いと思わなかったけど、後でものすごい酔いが回って、かえる頃には見事なヨッパライになっておりました。。。

次回は8/24(金) 19:00開始の予定です。場所は銀座周辺で考えています。


参加した方のまとめやレポート

@xtetsujiさんによるtogetter 
@penguinJr1さんによるレポート
@toku_bassさんによるレポート
@take4_kさんによるレポート
@hirobanexさんによるレポート



2012年5月12日土曜日

Perl Beginners #3 開催いたします



さて、前回の開催からまだそんなに時間がたっていませんが、Perl Beginners #3の会場を押さえましたので、お知らせいたします。

日時

2012/06/29(金) 19:00~20:30

場所

東京都中央区京橋区民館会議室 3号室


大きな地図で見る

テーマ


今回のテーマは「データベース」です。とはいえ、いつもの通りテーマにとらわれすぎず、自由に発表していただいて結構です。

タイムテーブル

19:00-19:05 主宰挨拶
19:05-19:20 ビギナーズセッション1
19:20-19:35 ビギナーズセッション2
19:35-19:50 ビギナーズセッション3
19:50-20:00 休憩
20:00-20:30 ライトニングトーク
20:30- 片付け, 懇親会

ATND

懇親会について


今回の懇親会は、非常にめずらしいブルガリア料理のお店を予約しました!

参加希望の方は、こちらのATNDに登録してください!

2012年4月28日土曜日

Perl Beginners #2 開催しました!

4/27(金) 19:00~ 文京シビックホール 会議室1 にて、Perl Beginners #2 を開催しました。
会場設営直後の様子。


悪天候にもかかわらず、19人の方が参加してくださいました。ありがとうございます。
今回はJPAよりスペシャルゲストとして、@zigorouさんが参加してくださいました。

また、今回は女性の方の参加もあり、Perl Beginnersのひろがりが感じられました。

※この記事については後日、内容を補足いたします。不足などありましたら、@ytnobodyまでご一報を。
※発表に用いられた資料については、発表者の方から共有があり次第、リンクを設けさせていただく予定です。
※各参加者の敬称は省略させていただいております。ご了承ください。

ビギナーズセッション

質問 by @c_tyo

CGI+jQueryでfacebookのような動的に変遷するページを作りたいが、いくつか悩ましい点がある、と言う質問。
- リクエストごとにif文による条件分岐が多くなってしまうが、うまい取りまわし方はないか?
- ajaxを実現する上で、他にもっとよい方法はないか?

回答

@irmr_log
WAF(=Webアプリケーションフレームワーク)を使うと、リクエスト毎の条件分岐を書く必要がなくなる。

@ytnobody
JSONを出力するのにはJSON.pmを使うと非常に楽。場合によってはWAF側でJSONの出力をサポートしている場合もある。

質問 by @i4djunichi

「デプロイの方法について」というようなタイトルの質問だったけど、内容はモジュールの依存性解決についての質問だった。
- cpanm + local::libで対応する方法があるようだが、他にどんなやり方があるのか。

回答

@zigorou
DarkPANを使ったやり方があると言うことを紹介。local::libを使う方法と同じくらいにカジュアルに使える、など。

@ytnobody
DarkPANのマネージャ実装として、OrePANを紹介。

LT

@ytnobody
PSGIへの誘い、と題して、CGIとの比較、ライブコーディング(実はすっかり忘れていた)を交えて、「これからCGIを学習するのなら、先にPSGI/Plackを触ってみよう」というメッセージをこめた発表。

@poohtarou
Kossyのサンプルか何か?(←ごめんうろ覚えで申し訳ないです。資料希望。)で404 Not Found がでていたのを、片手間レベルで修正/実装したという発表。Kossyが非常に簡単であることを強調していました。

@irmr_log
LWP::UserAgentの文字エンコーディング自動判別ロジック(主にdecoded_content() あたり)が、裏でどれだけがんばっているのかについて解説。webコンテンツの文字エンコーディングに関わる闇(?)の部分に着目した、割と玄人向けの発表でした。

JPAセッション

JPA(=Japan Perl Association)の@zigorouさんから、今年度のJPAの活動に関する発表をしていただきました。

まず最初にJPAという組織に関する概説にはじまり、活動内容として、perl関連イベントへの講師派遣や金銭的支援、perl導入企業のリクルーティングに関する広報、YAPC::Asiaの企画/運営を行っていると説明。

そしてYAPC::Asia 2012 Tokyoについての紹介を行い、発表が締めくくられました。

懇親会

思い思いに語らう参加者

懇親会への参加者は12名(全員男性)でしたが、予想以上に他の言語に触れている方が多く、perlは趣味で使っていたり、第2言語としての用途であったりして、メインでperlを利用されていると言う方はだいぶ少なかったように思えました。

今後はぜひメインでもperlが利用されるよう、そのメリットを知らせるとともに、はじめの一歩としての勉強会であり続けたいと思いました。

資料


次回

6/29(金) 19:00開催での計画を立てております。
詳細が固まり次第、当ブログ/twitterで告知をさせていただきます。


2012年3月5日月曜日

Perl Beginners #2 開催します。

※写真はイメージです


JPAさんにご協力していただきます!

Perl Beginners #2 ですが、 JPAさんにご協力のお願いをしたところ、OKの返事とともに、スペシャルな方がゲストとして登壇して下さることになりました!

日時・場所

日時:4/27(金) 19:00~
場所:文京シビックホール 第1会議室

タイムテーブル

19:00-19:05 主宰挨拶
19:05-19:20 ビギナーズセッション1
19:20-19:35 ビギナーズセッション2
19:35-19:50 ビギナーズセッション3
19:50-20:00 休憩
 20:00-20:15 ライトニングトーク
20:15-20:30 JPAセッション
20:30- 片付け, 懇親会


ATND

Perl Beginners #2 本会
ビギナーズセッション枠
ライトニングトーク枠
懇親会

アンケート結果

まず会場ですが、文京シビックホールがダントツの1位で、その後を渋谷区勤労福祉会館と渋谷区初台青年館が同票数の3位、きゅりあんは最下位でした。

そして会場代ですが、皆さん大体500~1000円の間なら手伝っていただけるとの事でした(中には全額出してもいいぜ!というツワモノも居ましたがw)
しかし!せっかくアンケートにご回答頂いておきながらアレなのですが、なんとJPAさんのご協力により、今回も会場代無料で開催できる見込みです!JPA++

次にテーマですが、順位としては、Web>DB=ツール>テスト=正規表現 という結果となりました。
ということで、今回のテーマは「Web関連」でお願いします。

そして今回はLT・ビギナーズセッションともに発表希望者が2名ずついる模様です。今回はLT/ビギナーズセッション ともに別個でATNDを立てますので、発表したい方のATNDに登録をお願いします。

最後に、開催時刻は皆さんおおむね19:00で問題なしとのことでしたので、今回も19:00開始とさせていただきます。

カメラスタッフをしてくれる人募集

当ブログに掲載するレポートに、より雰囲気を伝えやすくするための写真が欲しいと思いました。
そこで、Perl Beginners #2の様子をカメラで撮影し、Picasaウェブアルバムにアップしてくれる有志を募集します。
やってもいいよ!という方はぜひ、ytnobody at gmail dot com までメールいただくか、@ytnobodyまでご一報ください。

2012年2月26日日曜日

Perl Beginners #1 開催しました

去る2/24(金)、ついにPerl Beginners #1を開催しました。
慣れない主催の心配をよそに、当日は大いに盛り上がることが出来ました!
参加していただいた皆様、駅から会場が遠いとか、電源&wifiがないという状況にもかかわらず、暖かく見守っていただき、ありがとうございます。
そして、参加していただいて有難うございました。

想定以上のレベルの高さ

正直、僕が想定していた以上に質問のレベルが高かったですね。
ざくっと羅列すると、
・テストの書き方について
・Amon2が最初に生成するテストコードの内訳
・WWW::Mechanizeの扱い方
・日本語(=マルチバイト文字)の取り回し方
・Ruby on Rails並に手早く開発のできる推しWAFは何か
等など。およそ初心者とは思えないレベルですね!

ちなみに、事前にアンケートをとっていたんですが、回答してくれた方の平均的なPerl使用暦は大体1年~2年程度でした。もう中級者を名乗ってもよいレベルかとおもいます。
なお、後で聞いた限りでは、Perl使用暦1年未満の方も結構いらっしゃったようでした。そういった方々に今回の質疑応答を(ぼんやりとでも)把握してもらえたのか、若干気がかりではあります。

※一応フォローをさせてもらうと、ここまで高レベルな質問じゃなくても全然OKですし、そういうのをむしろ歓迎していますので、↑のような状況だからといって、質問控える必要は全くないですよ!

新規のPerl初心者は、実は少ないのではないかと言う話

二次会に向かう途中、参加してくれたメンバーの一人と話していたのですが、実は新規にPerlを学習しようと考えている人は少ないんじゃないのか?という話題になりました。
かつてサーバサイドプログラムに向いた言語がPerl一択だったのが、今ではPython,Ruby,PHP等の選択肢が増えたことが背景にあるのだろうという結論に達し、Perl Beginnersでも「初心者未満」の方にどんどんリーチしていかないといけないな、と感じました。

二次会は大盛況でした!

対面式の長座敷という席で、参加者が全員男性だったので、「ガチホモ合コン」と揶揄される様子となってしまいましたが、Perlや技術的な話題だけに限らず、大いに盛り上がりました。@hattara_tw ++

Perl Beginners #2 やります!

実は質問者が登壇して質問するというスタイルは、僕が1度だけ参加した「Scala勉強会」のやり方を参考にしてみたのですが、今回は思った以上に評判が良かったので、4月の終わりごろに Perl Beginners #2をやろうかと考えています。
また予定が決まり次第ブログ・ATND・ツイッターなどで告知をしていきますので、ぜひよろしくお願いします。

そのほかのレポート

@hsksyuskさんのレポート
@kkotaro0111さんのレポート
@oke_pyさんのレポート
@c_tyoさんのレポート
@irmr_logさんのレポート
@ttak100さんのレポート
@yohei-aさんのレポート

追伸:「ケーキ作る」ってネタで言ったのにwwww

2012年1月17日火曜日

perl-beginners #1 開催します!

会場および二次会のお店をおさえましたので、改めて Perl Beginners #1 開催のご案内をします。

日時と会場


ATND: http://atnd.org/events/24780
日時: 2012/02/24(金) 18:30 受付開始
会場: 品川区立五反田文化センター 第4会議室

※あまり早めに来ても、部屋が開いていないと入れませんので、ご注意ください。
※会場での食事はNGです。

スピーカー枠について

スピーカー枠をおさえたい方は @ytnobody までご連絡ください。

事前アンケート

Google docs上にアンケートを用意しました。
参加者の人となりをやんわりと知っておきたいのと、当日の話題づくりに役立てたいという狙いのものなので、答えてもいいよという方、ご協力をお願いします!

タイムテーブル


19:00- 主催挨拶 @ytnobody (5min)
19:05- ビギナーズセッション 1 [空き] (15min)
19:20- ビギナーズセッション 2 [空き] (15min)
19:35- ビギナーズセッション 3 [空き] (15min)
19:50- 休憩(10min)
20:00- LT
LT 1 @hattara_tw (5min)
LT 2 [空き] (5min)
LT 3 @ytnobody - 大ざっぱにオブジェクト志向 (5min)
20:20- 片付け (5min)
20:30- 二次会 (とりさく 五反田店)

ビギナーズセッションについて

質問者(=大抵初心者)が5分程度で話(というより質問)をして、それについて10分程度で質疑応答をする形式のセッションとなります。
合計15分が割り当てられますので、その範囲内でご自由に質問・発表をしてください。
例えば、「どうやってPerlを習得したのか」とか「おすすめの書籍は?」、「Perlモジュールって何?」のような、直接コードが出てこなそうな内容で全然構いません。

LTについて

いわゆるライトニングトークと呼ばれるものです。
5分間で自分のお好きなテーマに沿って、手早く発表してください。

二次会について


@hattara_twさんに幹事をお願いしましたところ、二つ返事で快諾してくださいました。
@hattara_tw++

2/7(火) 幹事さんがお店をおさえてくれました!

・会場:とりさく 五反田店

2012年1月16日月曜日

3月の頭くらいにperl-beginners #1 やろうかと思います

計画中ではありますが、3月上旬の金曜夜に新宿か品川かその付近(仮)でperl-beginners #1を開催しようと企んでおります。

大まかな枠としては、

・主催あいさつ(5min)
・ビギナーズセッション 1(15min)
・ビギナーズセッション 2(15min)
・ビギナーズセッション 3(15min)
・LT 1(5min)
・LT 2(5min)
・LT 3(5min)
・片付け(5min)
・2次会(2H?)

くらいに考えています。

前回の記事でも書いたのですが、

> 基本的に「質問者側が5分程度で話(というより質問)をして、それについて15分程度で質疑応答」というのを3セッションくらい、できればアンカンファレンス(参考)形式でやりたいと考えています。
> それプラス、5分のLT枠を3つくらい(多すぎるとだれるのでこのくらいがいいかなという主観で)用意して、最後に懇親会(2h)、という流れでできればハッピーですね。

この方式でやれればなーと考えています。(アンカンファレンス云々はさておき。事前に話したいという方がいれば、ぜひ@ytnobodyにご一報ください。)

ある程度企画が固まったらATND立てます。

まだ初回ですので、こだわったことはせず、気楽な集まりに出来ればなあと思いますので、ぜひご協力のほどお願いします。