読者です 読者をやめる 読者になる 読者になる

YAPC::Kansai 2017 OSAKA前夜祭で開発環境発表をした話

YAPC::Kansai 2017 OSAKAにコアスタッフとして参加してきました。 また、前夜祭では「突撃!隣の開発環境!」で発表を行いました。

本エントリーでは、前夜祭では「突撃!隣の開発環境!」について書きます。 コアスタッフについては前エントリーで書きました。

前夜祭について

blog.yapcjapan.org

これまでのYAPCの前夜祭では、惜しくも本編に採用されなかったトークを聴きながらワイワイするのが通例ですが、YAPC::Kansaiは一味違います!

「突撃!隣の開発環境!」と題して、5名の方に開発環境を晒していただくことにしております。

ということで、他人の開発環境は気になるけど、なかなか見る機会がないので、という事でそれらを発表するイベントとなります。 事前に発表者を決めていたのですが、さほど内容は絞ってなかったので各々が各々の考えで発表することとなりました。

自分の発表

前夜祭の番長もしている@nqounetさんから、Windowsカスタマイズ厨的な感じでという指示?があったのでいつもの環境を持ち込んで発表しました。 当日使っていたスライドデータは以下になります。

ここでは、もう少し補足というか言い残したことを書いていきます。

Excelアドイン「正規表現で色付け」

そのまんま、正規表現で色付けするアドインなのですが、少しデモしました。 なんだかウケが良かったので、github入りさせる事にしました(近日公開予定)。
→ 2017/03/13 公開しました https://github.com/sago35/excel-regex-colorize/

Excelに張り付けたソースコードのうち、コメントだけ灰色にする、とかがとても簡単にできます。

Windowsらしさを出すべく、直前でスライドに追加しましたが、皆さんExcel好きですねー(違
注)自分もExcelの呪縛から逃げられない仕事をしています・・・

rapture

画面上の一部を切り取って付箋化するアプリ。 こう書いてもあまりピンとこないと思うので、前夜祭でやったようなデモは有効なのだと思います。

発表では、以下のような「1文字だけ「ね」になっている画像(を想定したテキスト)」に対し、raptureを半透明ウィンドウにして差分を見つけるデモを行いました。 文字で説明しようとするとさっぱり伝わらないなー、という所。

わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわねわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ
わわわわわわわわわわわわわわわわわわわわ

macな人は、(少し機能は少ないそうですが)Maptureが良いらしい。

ThumbSense

タッチパッドに触れている」時のキーアサインを変更するソフト。 「タッチパッドに触れている」+Fで左クリック、というのがとても便利。 タッチパッドホームポジションと相性悪いと思ってましたが、このソフトで当時すべて解決しました。

が、その後別メーカーのノートPCで使えなかったりとデバイス依存があったためautohotkeyでなんちゃって版(スライド参照)を作って今に至ってます。

macな人は、Karabinerにほぼそのものが入っているらしい。

タイトルバーやWindow枠を消す

autohotkey使ってこんな感じの関数書いておけばタイトルバーやWindow枠を消せます。 同じようなソフトは他にもあると思いますが、自分はautohotkeyで完結させている感じ。 なお、タイトルバーが無いと通常Window移動ができなくなりますので、そのあたりの準備を忘れずに。(拙作のtsense-ahkとか)

ToggleWinStyle() {
   ; 0x00800000 : WS_BORDER   : +/-Border. Creates a window that has a thin-line border.
   ; 0x00400000 : WS_DLGFRAME : Creates a window that has a border of a style typically used with dialog boxes.
   ; 0x00080000 : WS_SYSMENU  : +/-SysMenu. Creates a window that has a window menu on its title bar. The WS_CAPTION style must also be specified.
   ; 0x00040000 : WS_SIZEBOX  : +/-Resize. Creates a window that has a sizing border. Same as the WS_THICKFRAME style.
   WinGet, WID, ID, A
   WinSet, Style, ^0x00CC0000, ahk_id %WID%

   ; リサイズしておくと、Windowがリフレッシュされる
   WinGetPos, X, Y, W, H, ahk_id %WID%
   WinMove, ahk_id %WID%, , %X%, %Y%, %W%, %H%
}

ToggleWinStyle2() {
   ; 0x00400000 : WS_DLGFRAME : Creates a window that has a border of a style typically used with dialog boxes.
   ; 0x00080000 : WS_SYSMENU  : +/-SysMenu. Creates a window that has a window menu on its title bar. The WS_CAPTION style must also be specified.
   WinGet, WID, ID, A
   WinSet, Style, ^0x00480000, ahk_id %WID%

   ; リサイズしておくと、Windowがリフレッシュされる
   WinGetPos, X, Y, W, H, ahk_id %WID%
   WinMove, ahk_id %WID%, , %X%, %Y%, %W%, %H%
}

検索語を複数色分けして表示

vimの人は、mark.vim便利。 とにかく便利。 これを使うと、コードレビューで「xxx_yyyyyy_foobarbazをxxx_yyyyyy_foobarxyzに代入する」とか言わずに「緑を黄色に代入する」という事ができます。

f:id:sago35:20170305231524p:plain

便利。

当日紹介し損ねたのですが、他のエディタでも同じような事ができます。 該当エディタの人は試してみると良い気がしますし、そうじゃない人も探すか作るかしとくとよさげ。

しゃべり終えての感想

Windows使っている人の割合はそんなに多くなかったけど、結構皆様の反応が良くてびっくりしました。 公開側としては、反応があるとやっぱりうれしいですね。

他の人の発表も、見ていてとても面白かったので、他の人Versionも見てみたい。

最後に

当日の様子はtogetterにまとまっているので、適宜参照してみてください。

togetter.com

YAPC::Kansai 2017 OSAKAでコアスタッフをした話

YAPC::Kansai 2017 OSAKAにコアスタッフとして参加してきました。 また、前夜祭では「突撃!隣の開発環境!」で発表を行いました。

本エントリーでは、コアスタッフとしての振り返りを書きます。 前夜祭については、別エントリーで。

コアスタッフとして

カンファレンスへの参加経験もあまり多くなく、さらにはスタッフはしたことが無いので、なかなかに不安でした。 が、スタッフ向けマニュアルなどが整備され、それなりに安心した形で挑めたと思います。 以下、細々とした事を。

準備関連を振り返る

主にgithubのissueとslackを使って、当日までの準備を行ってきました。
YAPC::Kansaiが3月開催という事で予想はできていたのですが、個人的には年度末で相当バタバタしました。 大き目のタスクには手を付ける勇気が出ず、小さなタスクを無理しないペースで実施する、という事を続けてしまいました。 なかなか仕事との兼ね合いはうまくいかないなー、という所。

前日準備

3/3はなんとか年休取得して、14:30にMOTEX集合→準備という流れをとれました。
なるべく準備も最初から参加したほうが、連帯感というかうまくいくだろう、と思ってましたが、予想通り良い形で進めました。 前日準備は、ノベルティ詰めたり、バックパネル作ったり、前夜祭準備をしたり、という所です。 時刻指定した荷物の到着が遅れた、とかを除き、大きな混乱なく進めれたのは良かったと思います。

当日(~始まるまで)

朝08:00集合で前日に用意したノベルティ等を受付に運ぶなど、09:30受付開始に向けて準備が始まりました。 自分はC会場の番長/進行役という役割だったので、C会場の設営+C会場担当と役割の再確認もしました。 プロジェクタの具合や、電源コンセント類等はその場で考えるしかないので、なかなか難しい所。 実は、C会場のプロジェクターはVGA端子しかなかったので、「miniDisplayPort⇔VGA」と「USB-C⇔VGA」はあったけど、 HDMIオンリーなWindowsノートPCとかだと結構困る状況でした。 一応、私物のDisplayLinkな「USB A⇔VGA変換」を当日来場する人に持ってきてもらう事で最悪の自体は防げるようにしましたが、 結局のところは全員Macという嬉しい(のか悲しいのかWindowsノートPCな自分には分からないですが)誤算があり問題ありませんでした。

そんなこんなで思ったより時間が無くて、結構ぎりぎりまで準備をしていましたが、何とかなった感じです。

当日(本編)

開会式を少しみて、持ち場のC会場へ。 その後は、基本的にはC会場での番長/進行役としての役割をこなしていきました。 スタッフ全員とのやり取り、C会場内スタッフ間のやり取りはすべてslackを使って行いました。 タイムキーパーがスタートした時刻+終了予定時刻をslackに書き込むことで、少し時間が押したりしましたが、 お互いの時間感を合わせつつ進行することができました。

とはいえ、良いことばかりではなくいくつかのマイナーな問題はありました。 後悔しているのは「○○さん、よろしくお願いします」というような定型句において、名前の読み方を事前確認できてなくて/聞いたのに失念してうまく読めないのを後半に複数回やってしまいました。 すみませんでした。

後は、立ちっぱなしになってたので、普段立ちなれてない自分は足が痛くて後半はかなりつらかったです。 初のスタッフ参戦だったので、体力配分に完全に失敗した形。 スタッフマニュアルや事前のブリーフィングでは、番長含めしっかり休みをとるように言われていましたが、結局うまく自分をコントロールできず。 次回、スタッフするときは気を付けよう、と思った。

クロージング終わってから、受付に移動し参加された方をお見送り。 Okinawa.pmの@masakystさん、同じくOkinawa.pmの@CodeHexさん、サンプルコードPerl入門の木本さん@yukikimoto2さんとほんの少しだけお話。 自分は、懇親会に行かずに片付ける役割だったのでちょっと寂しい部分もありましたが、それはそれ。 次回以降も色んな人と絡んで/話していきたいと思います。

当日(片付け)

撤収も手際よく進み、1時間ぐらいでほぼほぼ完了まで行けました。 これは、事前に撤収を考慮した形で進めていたこと、最後までチームで動けたことが大きいと思います。 片付け後半は、記念写真撮る係?として、皆さんの写真を撮ったりしてました。

スタッフでの打ち上げ

本編の懇親会には参加できないタイミングでしたので、スタッフオンリーで打ち上げ行きました。 みんなで「やっと終わったなー」というような話をしつつ、激動の半年間に終止符が打たれました。

f:id:sago35:20170304225143j:plain

YAPC最高です。

Perl入学式in大阪 に参加するまでと、講師をした話

これは Perl入学式 Advent Calendar 2016 - Qiita の6日目の記事です


perlコミュニティとの関わり、Perl入学式との関わり、という形で自分の事を振り返ってみる。 結果的には、ここ最近の関西のperl界隈の話になるのかもしれない。

Kansai::Tiny.pm と、最後のYAPC::Asia

去年のYAPC::Asia 2015がYAPC::Asiaとしては一旦最後になるという事で、どうしても直接見たかった。 ので、行くことにしたけど一人で行くより知り合い作ってから行ったほうが楽しいはず、ということでKansai::Tiny.pmに参加。 (ちなみに、最後に参加したのはKansai.pm第7回ミーティング - Plagger World Tour in 大阪なので相当久しぶり)

この作戦はうまくいって、YAPC::Asia 2015も色んな意味で楽しめた。

ちなみにYAPC::Asia 2015本編も面白かったが、本編以外で一番の衝撃を受けたのはBrad Fitzpatrick氏のタイピングの速さ。

そしてPerl

Kansai::Tiny.pm以降、nqounet氏のPerl鍋に参加するようになった。 大体月1回ペース。

もくもくと何かを作ったり、勉強したりしゃべったりという事で、皆様と急速に仲良くなっていった感じがしている。

この頃に、Perl入学式の事は聞いていたが、予定が合わず2015年度は参加できなかった。

perlnabe.connpass.com

キッカソンとKansai.pm

第16回Kansai.pmが2016/3に行われた。 この時の様子はブログも書いたので、そちらも参照いただければ、と。

Kansai.pmの前日に1泊2日のハッカソンであるキッカソンが行われた。 キッカソンでは、以下のいずれかを作りたいと思っていて、気分でkingpinを選んだ。 その後コツコツと200コミットぐらい追加して2016/11にGetopt::Kingpinが出来上がった。

  • 綺麗に整形された/人が書いたようなC言語を出力するためのテンプレートエンジン
  • golangコマンドラインオプションのパーサであるkingpinのperl

Getopt::Kingpinについては、以下の記事を書いたのでそちらも併せて参照してください。

なにわPerl

id:tomcha0079 さんのなにわPerlにも参加するようになった。 もくもくとコードを書いてみたり、人のソースや作っているものを覗いてしゃべってみたり。 参加できなかったPerl入学式の自習や、入学式に参加したけれども分かりにくかった事を質問してみるもよし、そんな感じの集まりです。

naniwaperl.connpass.com

いよいよPerl入学式に参加

Perl入学式を見たこともなかったので、生徒として参加しようかとも思ったのですが、思い切ってサポーター側として参加申し込み。

後はとんとん拍子。 参加してみると、「無料なのが不思議なぐらいサポートが手厚い勉強会」という雰囲気。 このあたりは公式ブログを参照してほしい。

そして、Perl入学式で講師にトライ

受講生の方にどうやったら分かりやすく説明できるか?というのを自分なりに考えて挑みました。 自分の担当は「第4回 サブルーチン/正規表現編」ということで、特に正規表現の分量(≒ページ数)が比較的多め。

サブルーチン部分は、できるだけ「実際に書いて見せる/動くまでの過程を見せる」という事を重視して挑んだ。 正規表現部は、カリキュラム通りにやると「?」ってなる人が多そうだったから、以下で実際に手を動かしてもらう事とした。 とはいえ、説明部はやはり「実際に書いて見せる」という事を重視した。

4時間分の講師をするために、準備をするのは大変だった。 でも、受講生の人に「ありがとう」「分かりやすかった」と言ってもらうととても嬉しい。 slaslaやtwitter等での反応は、講師/サポーターにとって凄いモチベーションになるので、反応いただけると嬉しい。

まとめ

まとまらないけどまとめ。

Perl入学式は、サポートがとても手厚い勉強会です。 プログラミング初心者の人も安心なので、是非参加してみてください。

www.perl-entrance.org

最後に宣伝

YAPCが、来年春に大阪で開催されますのでお楽しみに。 最新情報は以下のURLにて。

YAPC::Kansai 2017 OSAKA!!!

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付近との事でみんなで盛り上げていけたらと思います。