2013年5月13日月曜日

Perl Beginners #8 開催します

Perl Beginners 主催のytnobodyです。皆様、いかがお過ごしでしょうか。

さて、告知が大変遅くなりましたが、当初予定しておりました通り、5/24(金)にPerl Beginners #8 を開催致します。

  • 日時:2013年5月24日(金) 19:00 〜 21:00
  • 場所:東京都渋谷区代々木区民会館 3F集会場 (図書館と併設) 
    • 代々木駅から徒歩7分
    • 地図こちら
  • テーマ:電子メール
ATNDはこちらです。皆様のご参加をお待ちしております。

また、Perl Beginners #8で、ビギナーズセッションに登壇してくださる質問者および、ライトニングトークをしてくださる発表者の方を募集しております。こちらもぜひふるってのご応募をお待ちしております。なお、現時点では以下の通りの状況となっております。

  1. ビギナーズセッション(15分程度) 
    1. @__papix__氏 (関西から、オンラインでの質問。機材的な意味でうまくいくかわかりませんが、挑戦的な試みです。)
  2. ライトニングトーク(5分程度) 
    1. メルマガシステム失敗談 @xtetsuji氏 [対象Perlレベル 多分2〜3くらい?※勝手な予想]
    2. ものすごく単純なメールの送り方 @ytnobody [対象Perlレベル 3〜4]
    3. 大規模○○メールシステムとPerl @sora083氏 [対象Perlレベル 2〜3]
    4. ながーーいコマンドを実行して終わった時にメールで通知してくれる君 @mackee_w氏  対象Perlレベル 3くらい]
    5. Perlでカジュアルにメールを送る(Gmail編) @moznion氏 [対象Perlレベル 2〜3]
応募方法は、以下のいずれかでytnobodyにコンタクトを取っていただく形となります。

  1. twitter で @ytnobody にリプライを送っていただく
  2. info@perl-beginners.org にメールを送っていただく
  3. 直接ytnobodyに面と向かって伝えていただく
なお今回より、ライトニングトークについては「対象Perlレベル」というものを設けさせていただくことにしました(Perlレベルについてはこちらの記事をご参照ください)。
これは、発表内容について対象となるPerlレベルを明記し、おおよその難しさを事前に知っていただくためのものです。発表者の方には若干のご負担が追加されてしまう旨、あらかじめご了承ください。

それでは、5/24(金)にお会いしましょう。

2013年4月6日土曜日

Perl Beginners #7 開催しました


Perl Beginners 主宰の@ytnobodyです。気象予報では春の嵐で大荒れだそうですが、皆様いかがお過ごしでしょうか。

さて、去る2013/03/29(金) 19:00、東京都中央区京橋区民館にて、Perl Beginners #7 を開催いたしました。当日は裏番組に PerlCasual#5 があったわけですが、(どう見ても規模的にはこちらが裏番組ではありますが)それにも関わらず、なんと19名もの方(主宰含む)に参加いただくことができました。ありがとうございます。

ちなみに、既にいくつかのレポート等が公開されておりますので、そちらもご参照いただければ幸甚です。
突然の差し入れ(clicktxさん、ありがとうございました!)

今回のテーマは「Webアプリ(CGI含む)」というもので、いつもの通り、オープニングトーク からの ビギナーズセッション -> 休みはさんでLT という流れで進行する予定でした。後々、主宰の不手際で発表順序が若干ずれてしまったのですが・・・
また、今回はテーマのせいか、普段のPerl Beginnersよりも大幅にレベルが高め(つまり割りとガチュアルなほうだった)という点について、反省を兼ねてここに明記しておきます。

ビギナーズセッション

実は当初、ビギナーズセッション登壇希望者がいなかったのですが、その場で募集したところ、@CLCLCLさんが挙手、急遽ビギナーズセッションに登壇いただくこととしました。ありがとうございます。

登壇して早々にスクリーンに映し出されたのは、某ニコ○コ動画風にコメントが流れていくwebアプリ(これかな)。どうやらMojolicious::Liteで作られているらしく、AnyEvent::Twitter::Streamで取得したツイートを、websocketをつかってリアルタイムに流していく、というもののようです。

質問の内容は、このwebアプリを起動する方法によって、コメントが流れないケースがあって困っている、との事。細かく言うと、Mojoliciousに付属しているMojo::Server::Morboを使って起動すると正常に動作するけど、Mojo::Server::Hypnotoadを使って起動すると、AnyEventのイベントが拾えなくなってしまうらしく、結果的にコメントが流れてこないという事が起こるそうで、これについて何か解決策を知らないか、というものでした。ちなみに主宰はMojoまともにさわってないので、この件については完全にお手上げ。サーセン・・・

最終的にclicktxさんにご意見をいただいたのですが、Hypnotoadのプロセス数が1つの場合どうなるのかを試してみてはどうか、というところで、質疑応答は終わりました。超ガチュアルじゃねーか!ww

LT

トップバッターは、群馬からお越しいただいた@clicktxさんです。ガトーラスクおいしかったです(^q^)

閲覧注意!!!


MojoliciousとLuigi.pmをつかって、おとなのWAFを作ったそうです。割と閲覧注意な内容。
当然というか、会場では大ウケしてました。

次は、ビギナーズセッションでも発表していただいた@CLCLCLさん。


from CL0CL

なんと新潟から最近上京してきたらしく、いままでの経歴と、それにまつわる業務アプリをざっくりとカジュアルに紹介していただきました。WebService::SagawaKyubinなどのモジュールにはただただ圧倒されてしまう勢いでした。


続いて、いつも細かく手助けいただいている@toku_bassさんのライブコーディングです。
(あまり関係ないけど、ちょうどこのタイミングで、裏番組でもライブコーディングをしていたそうです。)



「Plackってこんなに簡単なんだよ」ってことを伝えたかったらしく、手始めに極単純なPSGIアプリを作り、plackup。そして、Router::Simpleを使って条件分岐できることを説明し、肉付け。
時間の都合もあって、最後にいくつかのtypoでエラーのまま終了してしまったのですが、あと5分もあれば正常起動までたどり着けた雰囲気でしたし、実際そのくらい簡単にwebアプリは作れます、というまとめで締めくくっていただきました。
@toku_bassさんには、本人さえ良ければ、もう少し時間をとってライブコーディングをしていただく機会を設けたいと思いました。

次に発表していただいたのは、@dokechinさん。

dokechinさんの画像が見つからないので、MojoHelのサンプル。

Mojolicious + Bootstrapでwebアプリを作る際、MojoliciousにはBootstrapが同梱されておらず、bootstrap導入に手間がかかるし、フォームとか毎回デザインするのもアレなので、はかどる解決法として、MojoHelというものをつくったそうです。
これには、大分助けられる方もいるのではないでしょうか。


その次に、主宰(@ytnobody)が発表しました。


TOK2.comという無料HPスペースで、いかにしてPSGIアプリを動作させるかということに挑戦したのですが、Perl Beginnersの発表内容としては、いささかレベル高めだったなあと反省しています。
スライドこちら

最後に、@moznionさんに発表していただきました。




まずPerl入学式 in 東京の紹介をし、AcmeなモジュールをすべてインストールするというBundle::Acme::Everything および Bundle::Namespace::Everything という自作モジュールについて紹介。いい感じにネタに走ってくれました。

反省と次回への糧

今回、Perlについては良くわからないという方にもお越しいただいたのですが、

  • Perlの簡単さについてイマイチ伝わりにくかった(内容がガチュアルだった)
  • 雰囲気としては非常に柔らかくてよかった
  • wifiと電源があれば、twitterでより拡散しやすいので、お勧め
という感じのご教示をいただきました。これを受け、次回のPerl Beginnersでは、以下のものを設けようと思います。

  1. ビギナーズセッションおよびLTで発表される方は、聴衆のうち、主なターゲットとするPerlレベルをスライドに明記してください(Perlレベルについてはこの辺とか見てもらえると)。また、事前にその辺がわかっている方は、予め主宰にご一報ください。Perlレベルとかわかんない!!!と言う人は、あらかじめ3日前くらいまでに主宰に資料を送ってもらえると、大体の対象レベルをつけます。
  2. がんばってwifiを用意します。電源についてはちょっと保障できないので、許して!
さて、次回は5/24(金) 19:00より開催します。会場は未定、ATND立てましたら、別途エントリ書きます。

2013年3月4日月曜日

Perl Beginners #7 開催します

主催のytnobodyです。こんにちは。

さて、来る3/29(金)19:00~21:00、東京都中央区京橋区民館1号室にて、Perl Beginners #7を開催致します。
参加ご希望の方は、こちらのATNDよりご登録ください。無料です。※カンパ歓迎

今回のテーマは「webアプリ(CGIも可)」です。

そもそもPerl Beginnersとは何か?という疑問をもたれた方は、どうぞこちらの記事もご覧ください。

以上、取り急ぎではありますが、よろしくお願いいたします。

2013年2月5日火曜日

Perl Beginners #6 開催しました


Perl Beginners 主宰の@ytnobodyです。

開催からすっかり時間が経ってしまったのですが、1/25(金)、渋谷区穏田区民会館にて Perl Beginners #6 を開催しました。

当日は25名の方々に参加いただきました。ありがとうございます!
既にレポートをブログ等にまとめてくださった方もいるようです。

また今回は、ビギナーズセッションのかわりに、@lestrratさん(Japan Perl Association 会長)によるPerl Q&Aセッションを実施していただきました。途中ライブコーディングも交えての説明もあり、とても内容の濃いセッションとなりました。

Perl Q&Aセッションで、ビギナーからの質問に答える @lestrratさん

おおよその質問と回答は@sasakure_kei さんのブログによくまとめられています。
※といいますか、主宰は@sasakure_keiさんのブログを見て、当日の事を思い出しながらこの記事を書いています・・・

Q:@lestrratさんは英語が堪能とのことですが、コード中のコメントは日本語と英語のどちらですか?
A:業務のコードは日本語(日本語を扱うエンジニアがほとんどの為)。github等で公開するものは大体英語。

Q:CPANモジュールを作るときの雛形は?
A:使わない。但しXSについては、過去に自分が書いたプロジェクトをコピーして適宜修正。



Q:XSについて書かれている書籍について
A:日本語だとモダンPerl入門。英語だとAdvanced Perl Programming

Q:最近見たコードで「これはやっちゃいけない」というものは?
A:定数畳み込みをつかってほしい、というのがあった。



Q:requireの使いどころ
A:遅延評価、外部ファイルの読み込みなど。

Q:アプリケーションの設定ファイルを読み込ませるのにベターな方法とは?
A:requireする。jsonやyamlでもいいけど、.plをrequireすることにすれば、同じような情報を設定ファイルに書くときに、コードで表現できる。


Q:プログラム初心者にはどの言語がオススメ?
A:Perlは・・・初心者にはオススメしないかなw C言語がいいと思う。変に賢くない言語の方が初心者に向いている。

Q:ちょっとしたモジュールなどで、DBとのやりとりはなにかORMを使ったりする?
A:基本的にはDBI。必要に応じてキャッシュ(memcached)など。

@lestrratさん、ありがとうございました!

その後、休憩を挟み、LTへ突入。トップバッターはレポートもきっちりまとめてくれた@sasakure_keiさん。



配列でいろいろやったことをLTにまとめて、発表してくれました。特殊変数 $, ※主宰はこれ知りませんでしたについても触れられていて、かなり凝った内容になっておりました。なお、本人のブログにスライドがアップされております。

次に主宰のLT。ビギナー向けに、配列でよくやることをまとめてみました。が、スライド作るのに時間あまり割かなかったせいで、配列を扱うモジュールの説明が他人任せに・・・><



ビギナー向けに一応補足しておくと、本来ならここでList::UtilList::MoreUtilsあたりの解説もする予定でした。ちなみにスライドはこちらです。

次に、飛び入りで発表してくださった@i47_rosaryさんのLTでは、引数に配列を使うことの利点と、Data::Section::Simpleの紹介をしてくださいました。


最後に@maka2_donzokoさんから「新春初笑いPerlすごろく」「Acme大全2012」の宣伝がありました。



宣伝の中で、非常に高度なギャグ配列パイレーツを引っ掛けてた。何と言ったのか、その部分の記憶だけ都合よく削除されている)で会場の時空を止めるという、常人にはとてもなしえない技を使った模様でした。さすがまかまかさん!

その後、総員総出で会場の後片付けを行い、閉会いたしました。

次回のテーマは"http"です。3月29日(金)に開催できるよう、準備いたします!

2012年12月17日月曜日

Perl Beginners #6 開催します

ご無沙汰しておりました。主催のytnobodyです。
さて、下記の要領にて来年一発目のPerl Beginnersを開催します!

ATNDhttp://atnd.org/events/35182
場所:
  ※都合により開催場所が変更となっております。
  渋谷区地域交流センター新橋 区民交流室A(仮) 最寄り駅は恵比寿
  渋谷区神宮前穏田区民会館 集会場 (最寄り駅・明治神宮前/原宿)
日時: 2013/01/25 19:00 - 21:00

今回のテーマは「配列」です。まあ、いつも通りテーマにガチガチに沿う必要はありませんので、参考までに。

なお、まだ懇親会についてはノープランなので、おすすめとかありましたら、ぜひ@ytnobodyまで。

2012年10月28日日曜日

Perl Beginners #5 開催しました!

開会直前の様子。

5回目の開催!

10/26(金) 19:00、原宿(渋谷区神宮前穏田区民館)にてPerl Beginners #5を開催いたしました。
オシャレな街にひっそりと佇むレトロな雰囲気の会場は比較的広々しており、過去最大級の参加者数が難なく座席を確保できるほどでした。

ビギナーズセッション

@sasakure_keiさんによる発表

今回はビギナーズセッション登壇予定が1名のみだったので、時間的に大分余裕がありました。
@sasakure_keiさんは「RESTAPIを提供するために」という表題での発表で、現在作っているRESTAPIではCGI::Application::Dispatcherを使って開発をしているものの、リクエストURLの解析が必要なので、この手間を軽減するための良い方法はないか、というものでした。

URL->ロジックのマッピングをどうにかしたいとの事。

聴衆からは、「Amon2で実装するのはどうか」、「Router::Simpleで解決できる」などの解決案が挙げられ、発表者の@sasakure_keiさんも納得していた様子でした。

時間が余った!飛び入り発表タイム!

ビギナーズセッションは19:05~19:55までの50分間を見込んでいたのですが、予想外にあっさりと終わってしまった(19:20頃)ので、急遽飛び入り発表を募ったところ、関西からお越しいただいた@__papix__さんが挙手。早速発表していただきました。

飛び入り1号! @__papix__さん

「たすけてください!」というスライドで発表を始めた@__papix__さんですが、修論に追われる生活に労苦しているらしく、修論のテーマである「PerlでGPGPUな演算」についての質問をしていました。

「Perlでいい感じにGPGPUな演算をする」

Perlでかかれたプログラムの中から特定のサブルーチンのみを取り出して、CUDAのコードに置き換えたい、という要求だったのですが、これについて、@__papix__さんと同様にPerlでGPGPU演算を試みた経験のある@moznionさんを指名した上で、「何かいい方法無いですか?」と質問。

@moznionさん曰く「裸足で逃げ出した人間なので・・・」

しかし、彼もまた同様の労苦を経験している模様ではあるものの、「裸足で逃げ出した」とのことでした。そこで質問を噛み砕いて、「Perlのコードから特定のサブルーチンを抜き出して解析/変換したい」というものに置き換えてみると、数名のPerlハッカーから、「B::Deparseを使えばいいのでは」という意見が挙げられました。

「Acme大全」の宣伝をする@maka2_donzokoさん

続いて、@maka2_donzokoさんが「Acme大全 2012」の宣伝を行いました。この本は「どんぞこ楽屋」(まかまかさんの同人活動サークル)が作っており、とりわけ数少ないPerl関連の同人誌となっています。名前に違わずAcmeモジュールの百貨店と呼べるほど、Acmeモジュールがたくさん紹介されています。
ちなみに、主宰自身もこの本を夏コミで購入したのですが、特に第1章「Acmeの一歩」は、Perl関連の用語集となっており、むしろPerl初学者にこそオススメしたいものとなっています。

宣伝が終わった時点でまだ時間が余っていたので、さらに飛び入りを募ったところ、@moznionさんが「質問したい」というので、登壇していただきました。


さらに飛び入り!@moznionさん

自作のCLIツールで状況進捗がわかりやすいように、foreachループの中でピリオドを1個ずつ表示していくようにしたものの、処理中にそれらが表示されることが無く、処理が終了してから一気に沢山のピリオドが表示されてしまうそうで、どうすればいいのか教えてほしい、という質問をされていました。
聴衆からは「"$| = 1;"をprint構文の後ろにつける」「むしろprintの前だ」「プログラムの最初のほうでつけるべきだ」などの意見がでてきたのですが、引数なしで実行するとエラーを返す作りらしく、発表者自身がしばらくはそのことに気がつかずはまっていました。最終的に別の問題がプログラム中に存在するっぽい事が発覚し、聴衆からの意見を確認することはできませんでした。
また、主宰自身も記憶からすっかり抜けていたのですが、より近代的な方法として、
use IO::Handle;
STDOUT->autoflush;
とするやり方があり、こちらの方が可読性等の面で、よりベターです。(@charsbarさんにフォローアップしていただきました。ありがとうございます。)

ライトニングトーク

文字コードについてのLT @toku_bassさん

ライトニングトークのトップバッターは@toku_bassさんで、「文字コードについて」という表題で発表していただきました。
初学者がよく躓く文字化けに関する問題を、わかりやすく原因を解説し、どうすれば文字化けを回避できるかを説明していました。
Perl Beginnersとしては、ぜひ取り扱いたいと考えていた題材であり、特に初学者の方には非常に参考になったものと思います。

@moznionさん発表の「なれるCA」

続いては@moznionさんの発表で、「なれるCA」というLTでした。
最近CPAN Author(CA)になった彼は、CPAN Authorになるまでの労苦と、CPAN Authorになることで得られるメリットをアツく語ってくれました。ちなみに彼の処女作は「Acme::AjiFry」というAcmeなモジュールですが、現在はよりマジメなモジュールを開発中とのことです。

「いいえTimeZoneです」 @i47_rozaryさん

次は「いいえTimeZoneです」というタイトルで、@i47_rozaryさんに発表していただきました。
Time::Pieceで、「2011/12/31 26:00:00」 のような24時越えの時刻表記をサポートした「Time::Piece::Over24」というモジュールをCPANにアップロードした後、しばらくして沢山のバグレポート(テストに失敗する)が来た、という時のお話だったのですが、いわゆる「サマータイム」に起因する時間ずれの問題であったらしく、サマータイムに対してどのように対処すべきか、という質問をしていました(LTなのに!)。

Time::Piece::Over24の使い方

対処案としてあげられたのは、「テストをなおして『仕様です!』と言い切る」「テストでタイムゾーンを指定する」「サマータイム関連のテストを追加する」など、仕様の追加や変更ではなく、概ねテストコードを充実させることによる対処が多くあげられていました。
若干ハイレベルな内容だっただけに、初学者の方には理解しづらいところがあったかもしれませんが、主宰としてはまず、「自分の書いたコードで問題が起こった場合に、親切に教えてくれる存在が、Perlコミュニティにはあるんだよ」という事をなんとなく把握してもらえれば、それでいいのではないかと思います。

主宰(@ytnobody)によるLT「入れ子構造を分解する」

最後に主宰発表のLT「入れ子構造を分解する」(スライドこちら)です。
リーダブルコードの受け売りなところがあり、例となったコードもだいぶひどいし(メールアドレスのマッチング部分とかものすごくテキトウ)、ツッコミどころもわりと多め(条件判断のためのサブルーチンにdieを含めるのはどうかとか)だったかと思いますが、言いたかったことは、
  • 長大なサブルーチンには、それを分解できる余地があり、そうすべき
  • 深い入れ子(ネスト)構造を別のサブルーチンとして切り出そう
  • 分散してしまった条件文の統合を行って、コードの見通し良さを挙げよう
  • サブルーチンの名前がシンプルにならない場合は、まだ分解できる余地があるはず

くらいのことでした。Perlというよりも、プログラミング初学者向けに、できるだけCPANやPerl特有の問題から切り離して解説したかったので、そういう話題にはあえて触れませんでした。

懇親会(not ガチホなんとか)

T.G.I.フライデーズというアメリカンなレストランで懇親会を行いました(写真はきっとそのうち誰かが提供してくれるはず!!!!)。

コーラ飲み放題ということもあって、図らずも途中でコーラ.pm(勉強会の後の懇親会でアルコールのかわりにコーラばかりを頼むという珍現象。Takao.mtというイベントにて言われ始めた)の様相を呈し、食べ物もアメリカンなので、さながらアメリカにいるかのような状況になっておりました。
また、先日開催されたChiba.pmの話や、YAPC::Asiaの話など、各々が思い思いの話題で盛り上がっていました。

さて次回は・・・

本来だと隔月開催なので、12/28(金)あたりの開催を狙うところなんですけど、さすがに年の瀬、皆さんゆっくりしたいと思いますので、年明けの1/25(金)開催を目標とします!


2012年9月6日木曜日

Perl Beginners #5 開催します。


主宰のytnobodyです。みなさんコニチワ。

10/26(金) 19:00より、Perl Beginners #5 を開催いたします。
場所は渋谷区神宮前穏田区民舘(原宿)です。

参加ご希望の方は、ATNDから参加登録をお願いします。
ビギナーズセッション及びLTでの発表を希望の方は、その旨をコメントに書いてください。

あと関係ないのですが、今回はYAPC::Asiaの後ということもあるので、テーマを特に定めません。全然関係ありませんね。とりあえず、存分に自由な内容で発表してくださいね。
テーマが無いついでに、初歩的な質問とかもっともっと出てくるといいんじゃないの、と思っています。

タイムテーブル

19:00-19:05 主宰挨拶 + ビギナー向けmini-tips
19:05-19:55 ビギナーズセッション
 @sasakure_kei: RestAPIを提供するために
19:55-20:05 休憩
20:05-20:45 ライトニングトーク
 @toku_bass: 文字コードについて
 @moznion: なれるCA(CPAN Author)
 @i47_rozary: タイムゾーンから逃げられない
 @ytnobody: 入れ子構造を分解する
20:45- 片付け, 懇親会

懇親会

原宿あたりのお店でいま選んでいるところです。
こちらのATNDで参加登録できます。