(メモ)今日はYAPC::Kansai 2017 OSAKAの日です

[YAPC::Kansai 2017 OSAKA](http://yapcjapan.org/2017kansai/) に参加しておりますので、自分のためにメモを残しておきます。

## オープニング / nqounet さん

* 第2回 YAPC Japan 開催
* ネックストラップ着けて、飲食禁止（飴ちゃんも）、立入禁止区域、禁煙
* 電源はB会場、C会場。通路、A会場は禁止。赤ストラップの方の撮影禁止
* 会場別タグ: [#yapcjapanA](https://twitter.com/search?q=%23yapcjapanA), [#yapcjapanB](https://twitter.com/search?q=%23yapcjapanB), [#yapcjapanC](https://twitter.com/search?q=%23yapcjapanC)

## 実録！『すぐわかるPerl』 / 深沢 千尋 さん

* すぐわかるPerl、文字コード超研究、すぐわかるオブジェクト指向Perl、かんたんPerl、の著者
    * かんたんPerlがおすすめ
* 今日の話は作業の省力化の省力化について
* 汎用機PG→音楽ライター→ソフトハウス(ローカリゼーション会社に変貌)
* Sprint (Bolandのワープロ) → FrameMaker文書へ
    * 先輩が作ったツールを実行するだけ・・・だけ？
    * awk × sed × sh
* 初めてのPerl: Larry Wall "awk, sed, shのビーズを糸で繋ぐのを止めて、ブンゼンバーナーで溶かしてみたら真珠へ(!!)"
* プログラムの4段階: 自分のため（ワンライナー）、同僚のため(社内ツール)、顧客のため(オーダーウェア)、世界のため(汎用ツール)
* ワンライナー: 拡張子ごとにファイルを集計する例。わからない
    * 10行に書き伸ばせば、意味がわかる : 「テンライナー」
* 正規表現
    * `x` スイッチを使って10行に伸ばす
    * マッチさせたい正規表現ごとに分岐してテストしやすくしておく
    * 代表的なテストデータを付けておく
* すごい正規表現は正規表現しか使えないツールから発生する
    * スーパー検索置換プログラム、オフィスソフト、DTPソフト
* テンライナーの味噌蔵
    * 自作プログラム集
    * 完動するものを集める
* 「emacs は "イイ！MAX" という意味」
* 「すぐわかるPerlはSPEEDだったが、かんたんPerlはきちんとAKBへ対応」
* 味噌蔵の例
    * 「クパン？シーパン？」
    * SYNOPSIS を動くようにしたもの
    * 正規表現テスター
    * 「M-x しぇがshellのエイリアス」「コンタミ」(contaminationのことらしい)
* MS-Officeとの共存 (キセルかお墓か)
* キセル方式: VBA - Perl - VBA
    * マクロ付きdoc(.docm)に、仕様+マクロ
* お墓方式
    * XE (indeX Entry) から索引を作る例
    * そのままだとUnicode順になる (読みフィールドを加えたい)
    * 任意のマクロ文字列で置換（お墓）→処理→処理語をお墓に戻す
* 社内ツールの社会学
    * 開発者にとって: 簡単、再利用性、サポートの手間の削減、スキルアップ
    * ユーザにとって: 汎用ソフトより軽い、小回りがきく、ユーザからパワーユーザへ
    * 開発者にとって: ぎりぎりまで使われない、裏マニュアル
    * ユーザにとって: 品質が低い、予算がない
* 会社の意義
    * 家康(決められた手順)か秀吉(新しい手順)か
* 質疑応答
    * Q. 年間に書くツールの数は？
    * A. お前は今まで書いたワンライナーの数は覚えているのか
    * Q. 味噌蔵の数は？
    * A. 200件
    * Q. 書籍のレビューアは？
    * A. 担当者のみ。ただし、返答は必ず書籍の修正でするようにしている
    * Q. 年数がかなり経っているが、新しくなっている部分は？
    * A. 昔dankogaiさんのブログに影響されて `use strict` を
    * A. 「今井絵理子さんがあんな人だとは・・・」
    * A. 正規表現がUTF-8対応
    * Q. AKBの選抜総選挙の順位が低い人が居ますが？
    * A. 漢字の呼び方の誤りが面白そうなメンバーを選んでいる

## 高速化の初歩 / risouさん

* 「エバーノートでda*nko*aiのIDとったの誰だよ！」
* 高速化したいとき
    * プログラムは高速に動くに越したことはない
    * 定期的に実行するプログラム(10分間隔が10分で終わらない)
    * クリティカルパス(並列実行している中で一番遅いもの)を早くする
    * 短時間で何度も実行 (プロセス作り過ぎでリソースで死んだり)
* 素数判定の高速化
    * 10万までの素数を調べるのに6分かかる
    * 割り算を試し過ぎている
    * 割り切れたら諦める → 10倍の速度に
    * 割る数字は素数だけで良い → さらに10倍の速度に
    * sqrt n 以下だけ試せば良い → 0.126 sec へ
    * この先は、費用対効果が悪い
* エラトステネスの篩 : 0.026 sec
    * 良いアルゴリズムを選ぶことが大事
    * サンダラム、アトキンの篩
* メモ化
    * フィボナッチの例: 545 msec から 0.114 msec へ
    * `Memoise` : Perlに入っているが、手で書いたほうが速い
* `List::Compare`
    * 17msecから35msec(遅くなる) 前処理が遅いため。
* モジュールは汎用性が高い。用途によってはチューニングしきれないことがある
* (ダーティーな)小ネタ
    * `join` より `.` が速い
    * 固定値を先に計算したほうが（20より後のPerlはオプティマイズされる）
    * ループ内で関数を呼ばない
    * SoA(Structure(Hash) of Arrays)とAoSだと、SoAの方がCloneが速い
* 高速化は本当に必要か
    * ボトルネックはコードにないかもしれない。
    * DBのチューニング、CDNの利用
    * NYTProf の利用

## Vue.jsで作るSPAから学ぶMVVM、非同期処理、その光と影 / しんぺいさん

* 牧歌的クライアントWEB : HTMLをレンダリング
    * JS、非同期処理は味付け
* リッチなUX: チャット、動画、音楽
* SPA : 画面遷移で状態がリセットされない
    * 問題: ブラウザはドキュメントビューア。SPA・・・？
* ブラウザを作っている人は自分より頭がいい
    * SPAでページ遷移とかはよくない
    * とは言え、あり得る
* SPAの先輩はGUI
* GUIのアーキテクチャ MVC, MVP, MVVM
    * プレゼンテーションドメインセパレーション
    * UI定義とイベント、以外は全部Modelに書く
* MVVMは、JSだとVue.jsが良い
    * View, VM, Model(usecase, repository, data/domain model)
    * 全てクライアントサイドにある
    * VMはModelの **voidなメソッドを叩く** (密結合しないため)
    * Modelの状態の変化をVMが監視する
    * 状態はすべてModelが管理する
    * プレゼン層は状態の監視に徹する
* 永続化 : Cookie + Session に載るのがいいでしょう
    * CORSの問題 : Safariだとthird partyのCookieが捨てられる
    * CSRF問題 : 普通のWEBアプリケーションと同様
* WAFが脆弱性対策などをしているので、そのレールに乗ったほうが良い
* レースコンディション
    * プレゼンテーション、ModelとAPIを1-1にしない
    * サービス層を作り、VMはサービス層のみを叩く (サービス層で非同期処理の待ち合わせ)
* まとめ
    * SPAはやめよう、やるならGUIを参考に、ブラウザの恩恵は大事
* 質疑応答
    * Q. Fluxとの違いは？
    * A. プレゼン層へのDIをどうするか、あたり

## レガシーな Perl システムに DDD(ドメイン駆動設計) を取り入れる / @sairoutine さん

* 関西人は「～まんねん」とはいわない（「あめちゃん」は言う）
* (PCがフリーズ)「command + option + ESC」
* Mobage 11周年、 1131タイトル稼働中、 5191 タイトルが終了
    * Perl 5.8.8 で動いている。独自フレームワークMobaSiF
* ブラウザゲーム運用 : LAMP + Memcached
    * 月4回のイベント
    * 新規イベントは1からゲームを開発
* MVC
    * Model : O/Rマッパー
    * View : Mtemplate / ガラケー3キャリア対応を1つのHTMLで
    * Controller : "Page層" URLとのマッピング、validation
* 7年のサービス運用
    * 人の入れ替わり (現行メンバーが書いたものは10%程度)
    * 知識の継承ができていない
    * 仕様の肥大化 (既存仕様との不整合。タスクの見積もりが難しい)
* レガシーPerl特有の辛さ
    * euc-jp, Shift_JIS : 最近のエンジニアには通じない
    * 引数がなんだかわからない(引数のデータ構造をコードから推測)
    * 神クラス、addXXXInfo、巨大if、グローバル変数
    * 超モノリシック: タイトル1つが壊れるとmobage全体が壊れる
* きちんとOOPする
    * DAO層の追加 : コントローラにSQLを書かない
    * Model層の追加 : fatコントローラの解決
    * Logic層の追加 : fatモデルの解決。ゲームロジックのみ
* OOPで足りない部分
    * OOPについての指針
    * DDD
* 書籍: ドメイン駆動設計と、実践ドメイン駆動設計
* 哲学と戦術に分かれている
* 今回はドメインモデルとレイヤ化アーキテクチャ
* レイヤ化アーキテクチャ
    * View / Controller(入出力), Controller / Service(ドメイン層のオブジェクトの協調), Domain(ロジック), DAO(インフラ)
* Domain層とService層を追加した
    * Domainは状態を持つ、Serviceは状態を持たない
    * ロジックをDomainとServiceへ分離
* 例: ボスへの攻撃処理
    * Domain::User, Domain::Boss, Domain::UserItem, Domain::UserItem, Domain::BattleField の発見
    * 発見されたものをさらに詳しく見る : Domain::Deck, Domain::Card, Domain::Boss::* の発見
    * Service::Attack ドメインを組み合わせて、攻撃時に起こる状態の操作
    * 難点: 状態を持てないので、引数が長くなりがち
    * Service が処理の順番を担保
* エンジニアが考えること
    * ドメインモデルの発見
    * ワークフローを考える
* DDDについて議論になったところ
    * 古いコードとの接続 : リファクタリングするか、ラッパーを書く
    * サービスは状態を持つべきか : Serviceをシンプルにするため、制限した
* チームメンバーの巻き込み
    * 新規イベントで個人的に採用
    * コードをベースにメンバーに伝達(口頭/レビューでの摺合せすべきだった)
    * 勉強会で広める (コードを書く前の勉強会ではピンと来ない)
* 解決したこと
    * 静的関数、生のデータ構造はドメインモデルに
    * ifはポリモフィズム
    * 戦術だけ見るとただのOOP。大切なのは哲学
    * 大切なのは理論ではなく、チームで共有できた認識の方
* 展望
    * 既存のコードを置き換えたい
    * ユビキタス言語も取り入れたい

## Mojolicious で Web開発のすべてが「簡単」に / 木本さん

* サンプルコードPerl入門
    * 初心者の本が少なかった
    * 初心者のために役に立つサイト

* Mojolicious
    * WEB開発に使う機能が詰まっている
    * 今日はGitPrepの中身を
    * `cpan Mojolicious` で簡単にインストール (cpanmじゃない？)
    * 1ファイルでWEBアプリケーションが(数行でも)
    * 最初のステップが小さいと楽

* `param`、`every_param`(チェックボックスなど)
    * 値の復元 ( `HTMLFillInForm` 的なもの)
    * `QUERY_STRING` も `POST` 文字列も意識しなくていい
* `url_for`, `query`
    * `url_with` クエリ文字列の改変
* PHPみたいにHTMLの中にPerlのソースコードが書ける (初心者向き)
* セッション : CookieとJSON
* Mojolicious は「小さく初めて」大きく成長させる
* GitPrepのソースコードの例
    * ルーティングの定義は階層的に
    * テンプレートの中でパラメータなどにアクセスできる
    * `session` の例: ソルトがある、`https` を使う、なのでパスワードをCookieに入れても安全
    * その他、リバースプロクシ、ログイン、など様々な疑問をMojoliciousが解決
* 自社製の古いフレームワークのMojoliciousへの置き換え
    * PHPとPerlの混在
    * PHPからPerlを呼び出したり
* リファクタリング : 小さな作業をコツコツと
    * Shift_JISをUTF-8へ
    * アプリをEUC-jpからUTF-8へ
    * MySQLをEUC-jpからUTF-8へ
    * 自社製WebをMojoliciousへ
    * ソースコードが半分以下、保守性は5倍に
* テンプレートの独自記法 → Mojolicious でPerlへ
* HTML::FillinForm → Mojoliciousへ
* セッション情報をファイルに保存していた → Mojoliciousセッション×HTTPSへ
* 辛かったこと
    * 文字コードと独自フレームワークの混在との戦い、クリティカル
* 面白かったこと
    * 新しいことへのチャレンジ
    * リファクタリング(家のリファクタリングは無理)
    * 緊張感
* WebSocket
    * クライアントとサーバの双方向通信
    * 接続の開始はクライアントだが、その後は対等な関係
    * リアルタイム性
* リアルタイムチャットはHTTPでは難しい
    * ポーリングになるので時差が出る
    * ロングポーリングは実装が複雑
    * WebSocketでは簡単
* 大量接続をさばけるのか？
    * Mojoliciousは非同期I/Oをサポート
* 問題点
    * F/Wのパケットフィルタリングなどで弾かれる(SSLを使うといい)
    * リバースプロクシが難しい(nginx または AWS)
    * 到達は保証できない(順序は保証される)
    * ポーリング、ロングポーリング、EventSourceなどのほうが適することも多い
* リアルタイムチャットのデモ
    * 「こんにちわ」「こんちちわ」「やぷし」
* リモートコントローラーのデモ
    * ボタンを押すと、別のブラウザの猫が動く
    * `events->on` `events->emit` `send`
* 質疑応答
    * Q. 引き継ぎ前のシステム書いた者だけど、PHP部分のパフォーマンスは悪化してない？
    * A. アクセス数少ないから断定はできないけど、恐らく大丈夫

## mail_form.cgi reboarn / dankogaiさん、moznionさん

* 個人的にはSMTPは生まれる前に消し去りたい
* アカウントを作成する時に必要なもの（代替がない）
* 受け取ったコード
    * `cgi-lib.pl` `jcode.pl` が今のUbuntuでは動かない
    * `CGI.pm` と `Encode.pm` に置き換えた
* 使ってるマシンは普通の 2014 Mac Book Pro
    * ZFSでパーティションを切っている
    * ZFSだと圧縮がきくので、VMも省スペースになる
* 現在の mail_form.cgi を動かした(拍手)
* ここからは筋書きなしの本番
* CPANモジュールをインストールしようと思ったが、wi-fiのない会場なのでパケ死が怖い
    * 宿のwi-fiも死んでた( `apt update` で30分とか)
* HTMLが大量に埋め込まれてる 「PHPerなら普通でしょうけど」
* `sendmail` は入ってない環境もある
    * `ssmtp`
* `Encode::from_to` はイミュータブルではないので使いたくない
* サブルーチン先頭の `&`
* ファイルハンドル `MAIL` を `my $fh` へ
* 「テスト無しで触るのは怖い」「昔はよくやってた。心臓止めないで心臓摘出手術するようなもん」
* `open` にリスト形式でコマンドを渡すと、shellが起動されないので安全となる
* 「送ってみましょう・・・あれ？」元に戻すと、メールが来る
    * 時間もないので諦め
* `print` がたくさんあるのも・・・ → ヒアドキュメント使いたい
* ページの処理毎にサブルーチンを分離 `sendmail` `print_form`
* 「弾さん、セミコロンがありません」「よくやるよね」
* 「いやあ・・・これ辛いなあ」
* エンコーディングを UTF-8 に
* このスクリプトの美しい点 : 1ファイルに全てのdataが入ってる
* 「1時間のリファクタリングで10年戦えたら虫が良すぎますね」
* メアドの正規↑表現↓がガバガバ → http://emailregex.com/ からすごいのをコピペ → シンタックスエラー
    * 「コピペプログラミングは良くないという見本」
* 「だいぶよくなってきましたね」「だいぶよくなってきたけどこんなので10年戦いたくない」
* `$cgi->Vars` を `$cgi->param(...)` へ
* 「こういうの(リファクタリング)は恨み言を言いながらやるとよかったりしますよ」
* 「現状どのくらい戦えますか？」「３日？」
* 5.24 から CGI モジュールは標準ではなくなりました
* (ここでプロジェクターの電源が落ちる)
* 「ライブコーディングには魔物がすんでますよ！」
* 「(話を)つなげますか！どうつなげますか！」「(HDMIが)いや、つながってるよ」
* あと180秒！
* 「弾さん、ここらでまとめを」「まとまるの？これ」
* `use strict` `use warnings` しちゃったので、後十年は持つと思います
* プロジェクタは時々壊れるので注意を
* 仕事を安請け合いしないようにしましょう！

## Perl ウェブ開発の中世 〜CGI と Plack の間〜 / OGATA Tetsuji さん

* 歴史と歴史から学べることの話
* 1991年WEB誕生、1993年CGI誕生
* 1995年Win95、1999年i-mode で日本でのインターネットの普及
* 1990年代にCGIの誕生とウェブ人口の急増
* CGIが高コストなことが問題
    * CGIスクリプトの実行が重い
    * シェルでのコマンド実行と同じ
    * Perlは初期のCGIで絶大な支持
    * 大航海時代の会社は案件が終わる度に終了していた → 無駄を省くために東インド会社の誕生
* CGIとしてのPerlの利点
    * ISPがトラブルに対応しやすい
    * Perl以外のスクリプト言語は対抗馬が黎明期
    * 会社でも利用されるようになった
* 大手企業、中小企業がCGIの遅さに耐えられなくなる
* Apache mod_perl の登場
    * 海外で生まれたのは1997年
    * PerlでApacheモジュールを書けるようにする仕組み
    * CGIが速く動く、のは副次作用
* FastCGI
    * CGIとは違うメカニズム
    * 言語の種類は問わない
    * Apacheではmod_fcgi
    * PerlではFCGI
* SpeedyCGI
    * Perlに特化したもの
* mod_perl VS FastCGI
    * mod_perl はApacheNi依存したチューニングが可能
* WEBサーバの形態
    * prefork, イベント駆動, スレッド
    * Apacheは MPM の差し替えで prefork, event, worker
* PSGI / Plackの誕生
    * WAF開発者が様々なWEBサーバに対応するのが苦しい
    * CGIの仕様と寄せている
* PSGI / Plackへの学び
    * あえて簡単にして支持を得る
    * 競争すべき以外の部分では協力
* 現代の選択
    * 周囲の人に支持されてるもの (Mojolicious, Amon2)
* 古いものが悪、新しいものが善、とは限らない
    * 新しい技術の豆乳が直接利益につながるわけでもない
    * 他人の意見を尊重し、自分に自身も持つ

## はてなシステムの考古学 / motemen さん

* あるPerl企業の15年を追うケース・スタディ
* 老舗ベンチャー 2001年から。2016年上場
* 古代 2001-2004
    * エンジニア2名
    * この頃はPerl企業 (すぐわかるPerl、プログラミングPerl, Apache 拡張ガイド)
    * CGI → Apache::Registry 2001年。`use strict` `my`
    * OOP、フレームワーク、CVSの導入
    * Hatenaフレームワーク : mod_perl の MVC、HTML::Template
    * 人力検索サイトはてな、はてなダイアリー
* 中世 2004-2007
    * Hatena2 フレームワーク : mod_perl2、ヘルパースクリプト、ローカルサーバ
    * 早ければ1日でサービスインしていた
    * はてなブックマーク 2005-02-05 合宿開始、 2005-02-10 ベータリリース
    * はてな匿名ダイアリは1日でリリースされた
    * はてなグループ (2004)
    * 開発スタイル : 情報公開、50%(の完成度)ルール、1人1プロダクト、立ったまま会議、フリーアドレス
    * オープン戦略
    * インフラチーム 2007 : チームらしいチーム(この時のツールがマカレル)

* 近世 2007-2011
    * エンジニア20人。ソフトウェア的に反映していた時期
    * 京都に戻って、開発に集中
    * はてなブックマークリニューアル : AI手法、負債返却
        * チーム開発とフレームワーク
        * エンジニア4、デザイナ2、9ヶ月
        * Ridge, DBIx::MoCo, Ten.js => modules-Hatena
    * Ridgeへの道
        * Hatena2.5、RoR、Catalystなどが候補に
    * サマーインターン (2008年から)
        * 成功体験を持ち帰ってもらう
        * リクルーティング
        * 副作用: ドキュメント、社員教育の体制の整備
    * 新しいサービスを作りやすかった
        * Ridge + Moco、RPM管理
        * forkの蔓延
* 近代 2011-2014
    * はてなブログ (2011) (はてなダイアリーのリニューアル)
    * 何も実装がないフレームワーク
        * フレームワークは設計指針
        * Plack/PSGI, Router::Simple, DBI::SQL::NamedPlaceholder, Text::Xslate, JSON::XS
    * 現在の基盤にもなるもの: Plack, Starlet, Carton, daemontools, nginx, MySQL, Redis
    * 洗練されたチーム開発 : 開発フローについて話すのが流行った
    * 2012 : GitHub Enterprise : PRレビュー、wikiは未使用
    * 開発フローの伝搬 : IRC/Slackでの口コミ、異動に伴って伝搬
* 現代 2014-
    * 多様化 : エンジニア50人
    * mackerel (2014)
        * 当時CTOの肝いり
        * Scala / Go / PostgreSQL
    * Perlによる大規模開発の課題
        * 長命サービスの保守、大規模Perlの難しさ
        * DDD用語が使われるようになった
    * 2015 はてなブックマーク in Scala
    * Perlも健在 : 開発の高速さ、知見、枯れてる
    * BrandSafeはてな (2014)
    * 東京オフィス、シニアエンジニア制度(エンジニアのメンタリング)
* ここまで見てきた歴史とフレームワークが対応している
    * フレームワークは何をしたか : 開発の加速、技術スタックの規定
    * 近代以降は設計指針になった (指針を開発の枠組みとして共有)
    * 明示的(コード、日記)、暗黙的(経緯、空気)によってもたらされた
    * 知識は暗黙知と形式知の間を行き来
        * カンファレンスで発表→聞いた人が実践→・・・
    * 過去と比較をすると、現在を語ることができる
    * 10年後の未来を語ることができる
* スライド作成にYAPCのスライドとインタネットアーカイブが便利だった
* 質疑応答
    * Q. 上場によってエンジニアに変わったことは？
    * A. セレモニーに出た程度。とくにない
    * Q. perlcodesample書いてるんですが、はてなダイアリは開発続いてますか？
    * A. 新規機能はやってない。要望があればはてなブログに追加される


## Lightning Talks

Perl流では5分でドラで強制的に切りますよ。

### 沖縄でPerlに入学したので勢いでLTしてみた / 八雲アナグラさん

* 2016年のPerl入学式で衝撃を受けた
* ハッシュリファレンスがかっこいい
* Perlを書いていたら成人していた
* Acme::MadokaMagika を作った
* マミられる機能はありません
* `->qb` メソッドで色が `black` に変わる
* READMEが適当、バグが多い、メソッドが動かない
* 「Perlたのしー！」

### Twitterの非ブロック数可視化ツールを作ってみた / おささん (@osaponさん)

* ブロックとは？ 嫌な人が見えないように
* 広告の報告
* 先行ブロック : そりの合わなそう人を先行してブロック
* ブロックした人数はわかるが、ブロックされた人はわからない
* 自己申告してもらうと良い blolook
    * 2億件くらい
* ブロックをバラすのはよくない
    * 誰からブロックされたか気になる、という声はあるが、対応しない

### Hokkaido.pm 参加報告 / azumakuniyukiさん

* 参加したいなと言っていたら papix さんに行くとツイートされた
* 北海道いいよねって話をしてきた
* ytnobody さんの Azure Functions の話が面白かった
* 翌日 小樽のはやしや食堂、ホッケ定食
* 飛んでいたら Sisimai が Azure Functions で動いていた
* Perl入学式札ｐ(ドラ「ごーん」)

### 仮想環境でWindows版Perlをビルドする / 白方 健太郎さん

* 「最新版のWIndowsでは動きません」「環境がない」
* 仮想環境でWindowsのPerlをビルドする
* Windows10評価版を使うと良い
    * MSアカウントを作ってアンケートに答えれば
    * 英語版を使うこと
* Visual Studioも無料の英語版
* VS2013にはgit機能があるので、Perlのソースを落としてくる
* Makefileの中の、CCTYPEを使うコンパイラについてコメントアウト
* Visual Studio Tools の Native Tools Command Prompt を使う
* `nmake` を使ってビルド
* 「`-g` オプション対応してますよね？」(ドラ「ごーん」)

### スケジュールに意志を込める / i47_rozaryさん

* Project Monaging よりの人間
* 1週間ごとにリリースび固定
* 予定タスク ＜ 差込タスク だった
* タスクを事前に聞きに行って、計画を立てる
* 納期と成果物の乖離
* ステークホルダーの意志を入れる
* 懸念点を出しておく
* チームで合意を取る
* 問題を隠さない、説明を尊重する
* こうありたい、という意志を持つ
* (ドラ「ごーん」)

### 驚くべきことにPerlの話 / makamakaさん

* 酔っ払わないほうがいいでしょう
* Time::Pieceに `yyyy-mm-dd` などを生やす
* 無理じゃね？ => 演算子overload
* `yyyy/mm/dd` はできない (m//) とかぶる
* 「ページがたくさんあるけどパラパラ漫画なのでご安心を」
* Acme大全2016
    * 615個のAcmeモジュール
* Parumon カードゲームをボードゲームに移植
* ゲームバランスが悪い (納期が襲ってこない)

## 温故知新 / 竹迫 良範さん

* 未踏
    * [Dripcap](https://github.com/dripcap/dripcap)
        * packet analyzer
        * Electron ベース
        * JSでプラグインを書ける
    * [Noah](https://github.com/linux-noah/noah)
        * LinuxバイナリをMac上で動かす
* UNIX、アセンブラ、昔の技術を若手に伝承したい
* アセンブラ短歌
    * アララギ派 : 命令を流れるままに扱う
    * .comバブルの再来
* どうやって若い人を育成？
    * アセンブラかるた
* 日本でいちばん有名なハッカー 「下村努」
    * Take downで映画化
* MITの鉄道模型クラブが発端
    * ありものから便利なものを作ること hacking
* ソフトウェアのハッキングは目に見えない
* FORTRAN
    * IBM 704 パンチカード
    * 72カラムでの折り返しの起源
    * 紙テープ節約のコードゴルフが行われていた
* KT-80
    * メモリの値を直接読み書き
    * 設計図も添付
    * (最近) 大人の科学 : 4bit マイコン
* Harvard Mark I Computer
    * ループはなかった (物理的に紙テープを輪にする)
    * データと命令が完全に分離されていた
    * 世界最古のバグ (蛾が挟まってた)
* COBOL
    * 実は自然言語で処理を記述できる
    * `.` で終わるのは古い言語、 `;` で終わるのは新しい言語
* データとコードが分離されていない == セキュリティリスク
    * HTMLにJSが書ける
    * 文字列の組み合わせでSQL文を生成
    * データ領域でコード実行を抑制(ハーバード・アーキテクチャの復権)
    * 実行されないと思っているデータに実行コードが混入する
* `0` `1` を実践的に学べる場所が必要
    * 公道でこれらを試すと逮捕される時代
    * コンテストで伝授する
* ローマは一日にして成らず → せめて2日は欲しい
* FM TOWNS
    * 最初から 32bit
    * LSI C-86 試食版
    * アーケードで100円使うのが勿体無いので、ゲームを作り始めた
* シュレディンガー方程式を調べるために図書館に行ってた
    * 今の基礎
* Silicon Graphics INDY
* Sun SPARC station LX
    * 50M Hz (CPUのクロック数)
    * 学生1人辺り 10MB HDD容量
* C, X11 programming
* ロボットの制作
* Namazu の改良 (初めてのオープンソース)
* JavaかPerlかで、Perlを選択してしまった
* Shibuya.pm のリーダーの引継 : 「バソキヤを食べる」
* Perl Cookbookの監訳
* 2003年 Shibuya.pm で初登壇
    * mod_perlにおける C10K Problem
    * 推測するな、計測すべし
    * 適切な MaxClient値の設定
    * KeepAliveはoffにすべき
    * Esehttpd + Pound
    * ETagが効くとか効かないとか
    * `disable_ssl.h` を作るhackとか
* 正規表現でマインスイーパー
    * YAPC Asia 2011 のマインスイーパーのソルバ
    * 画像処理と `Win32::GuiTest`
    * デバグが大変(キーボードとマウスの制御が奪われている)
    * Perl Killer USB!!
* 高専生による Bad USB の自作
    * Alpine Linux / 10MBくらいでツールを配れる
* 最近はマネージメント業務
    * Perlの知見 : 自動化、一元管理
    * Excel 方眼紙の自動化
* 動機と能力が被っていると、幸せな仕事
    * 就職してから能力を増やす
    * グルー人材が重要
* 50代には社会を良くすることに取り込みたい
    * Audrey Tang の入閣
    * Perlコミュニティの良いところ
* 10年後、100年後を考えて成長していくとよい

## クロージング

* かんたんPerl当選者発表
* ベストトーク
    * Webエンジニアに知ってほしいRDBアンチパターン
        * 賞品 "RICOH THETA S"
* ベストライトニングトーク章
    * 驚くべきことにPerlの話
        * 賞品 "HHKB Pro Bluetooth"
* 参加者は180人
* スタッフ写真撮影
* 今後の予定
    * 2017年7月1日 YAPC::Hukuoka 2017 HAKATA
        * トーク応募も始まってます
    * 2018/XX/XX YAPC::Okinawa (!!)
    * 201[89] YAPC::Tokyo