Kansai.pm 第16回ミーティングとキッカソンの話

高砂 (@sago35tk) です。

2016/03/20のKansai.pm 第16回ミーティングに参加してきました。

また、その直前のキッカソンというイベントにも参加していたので、実質3/19~3/20の2日にわたりPerl Mongers達と飲んだりプログラムしたり飲んだり食べたり飲んだりしてた感じです。

キッカソン (2016/03/19 13:00~2016/03/20 12:00)

f:id:sago35:20160321173756j:plain

京都市太秦(うずまさ)にある@xtetsujiさん御用達の宿「菊香荘」に宿泊し、1泊2日でアプリケーションを開発したりPerl入学式1年間完走の成果を試してみたりetc...コードを楽しくゴリゴリ書くイベントです。
キッカソン(第1次募集) - なにわPerl | Doorkeeper

ということで、総勢13名で盛大に飲んで書いてしゃべってという形となりました。

自分は、

のどちらかを作ろうと思ってたけど、結局kingpinのperl版を作ることにしました。 まだ中途半端な実装ですが、以下のように書けるライブラリになります。 kingpinを外から見て、欲しい部分だけperlっぽい感じになるように作っていってます。

use Getopt::Kingpin;
my $kingpin = Getopt::Kingpin->new;
my $name = $kingpin->flag('name', 'set name')->string();
$kingpin->parse;

# perl sample.pl --name hello
printf "name : %s\n", $name;

GitHub - sago35/Getopt-Kingpin: perl command line and flag parser (like golang kingpin)

14:30の時点で、既に日本酒を飲み始めてましたが、1杯飲むたびに1コミットする自分ルールでハッカソンしてたらぼちぼち進捗できました。

ちなみに隣に @karupanerura 氏がいたので色々質問してたんですが、即答でなんでも答えてくれました。 邪魔ばっかりしてしまった感じがありましたが、とても参考になりました。

今回作ってる、Getopt::Kingpinの参考として「コマンドラインオプションのパーサーでお勧めは?」と聞くと以下が。

Smart::Optionsが「Getopt::Kingpin作らなくてもいいんじゃ?」って感じの完成度ですが、作りたいから作る、という方針で進捗続行してました。

ハッカソンの醍醐味としては、

  • もくもくとソフト作る
  • 時々発生する雑談に混ざる
  • いつでも質問できる(←迷惑を考えてないともいう)
  • 美味しいお酒

というあたりですね。

次回も是非参加したいです。

Kansai.pm 第16回ミーティング (2016/03/20 16:00~20:00)

f:id:sago35:20160321180437j:plain

2016/03/20 16:00~18:00に発表、18:00~20:00で懇親会(立食パーティ形式+LT)という形でした。

当日の資料や感想エントリ等は以下に追加されていきます。

自分のトーク

www.slideshare.net

「サンモクを通して学んだ話」というタイトルですが、

  • 車載組込ソフトウェア開発におけるperl
  • 三目並べを題材にした勉強会の紹介+学んだこと

という形でしゃべりました。

普段は人命直結となる車載組込の仕事をしているため、不具合を出すわけにはいかず、いかに「楽しく失敗体験する」かというのを考えることが多いです。 そんな中でサンモクを使った勉強会は、いい線いってると思います。

サンモクを使った勉強会は以下を使って実施する事ができます。

実際に対戦させているデモはこちら。 Enterを押すたびに次の一手を表示していく形となります。

f:id:sago35:20160321180151g:plain

他の人の発表

@karupanerura さん

Timeを扱うモジュールは各種ありますが、DateTime、Time::Piece、Time::Momentのそれぞれの残念な所を説明したのち、karupanerura氏のTime::Strptimeでどのように解決していくか、という話でした。 Time::Strptimeは、strptimeするformatをpre-compileすることで、pure perlでありながらとても高速に動作するモジュールとなっています。

高速化についての話は、本人より前日のキッカソンにて説明してもらい手法については何となく理解できました。

@azumakuniyuki さん

PerlモジュールをRubyに移植する時に落ちた穴々というタイトルでの発表でした。 基本的には、Perlソースを.rbなファイルに全部コピペして、一行一行直していく戦略をとったとの事ですが、nilの扱いや後置ifなどはまりどころは多かったとの事。 でも、移植が終わるころに振り替えると、そんなに穴でもなかった、ということでした。

移植の中で、全行自分でレビューしなおすこととなり、コード品質は上がったとの事。 しっかりコードを読みつつ移植することになるので、納得。

@xtetsuji さん

WordPressMovableTypeなお話し。 アクセス過多で苦しんでる場合のパッチとして、アクセスが多いときに.htaccessを自動生成して制御、というのを紹介してた。 確かに十分に効果を発揮しそう。

@papix さん

15分ぐらいで「ORMであるAnikiのDB移行を行うAniki::Migratorを作る」、というライブコーディング。 内容的には、分野が違いすぎるのと、そのモジュールを知らなさ過ぎてついていけない部分が多かったです。 でも、参考になる部分もたくさんありました。 設計もPGもキー入力も速いのも印象的でした。

素早く作るには、過去の自分の資産なども最大限活用し、似たような事例からのコピペも重要との事。 まったくの同意。

あと、懇親会にて、「人が作っているのを見るのも面白いので今度ライブコーディングナイトみたいなのやりたいなぁ」という話がありましたのでそちらも期待です。

懇親会+LT

f:id:sago35:20160320181145j:plain

立食形式で本編についてしゃべったり、次回のKansai.pmどうするのか、とか、Perl入学式について話したり。

その中でLTやライブコーディングの続きがあったりという感じでした。 飲んでてメモ取ってないので断片的ですが、こんな感じでした。

@papix さん (LT)

自動化スクリプトを書いたが、一か所のタイプミスによりサーバー上のファイルを紛失した、という事例。 自分も同じような事をしてしまうケースが考えられるので気を付けないと。

@karupanerura さん (ライブコーディング)

本編でpapixさんが作っていたAniki::Migratorを、妄想でイメージコピーしたので続きをやる、という内容。 既にイメージコピーもできている上に、「ここはこうしたほうが良いよ」というレビュー付き。 素直に凄いな、という感想。

@tomcha_ さん (LT)

キッカソンの主催者として、キッカソンを振り返ってました。 tomchaさん自身、夜3時までハッカソンを続けていて得られるものも多かったとの事。 本当に楽しかったので、次回も是非よろしくです。

@sago35tk (LT)

www.slideshare.net

ちょうど2年ぐらい前に作ったbtdozar(Bluetoothで操作できるショベルカーなラジコン)の話をしました。 Perl要素が途中に出てくるPerl/Tkによるシミュレーション部のみという内容ですが、「YAPCPerlの文字が入ってたらOKだし、イケルイケル」と言ってもらい発表しました。 回転運動を上下運動に変換するクランクという機構についての説明をしたりと、Perl関係無い率が極めて高かったですが自己満足ということで。

@muimiPro さん (LT)

xtetsujiさんの発表にも出てきていたMovableTypeについての擁護セッション。 MovableTypeをさらに拡張したプロダクトについても話をされていました。

まとめ

ということで、キッカソンから始まりKansai.pmと、Perl+お酒三昧で楽しめました。 技術的な刺激も多かったので、充実した二日間となりました。 次回のKansai.pmは、2016/08付近との事でみんなで盛り上げていけたらと思います。