Perl
YAPC
yapcjapan

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

More than 1 year has passed since last update.

YAPC::Kansai 2017 OSAKA に参加しておりますので、自分のためにメモを残しておきます。


オープニング / nqounet さん


  • 第2回 YAPC Japan 開催

  • ネックストラップ着けて、飲食禁止(飴ちゃんも)、立入禁止区域、禁煙

  • 電源はB会場、C会場。通路、A会場は禁止。赤ストラップの方の撮影禁止

  • 会場別タグ: #yapcjapanA, #yapcjapanB, #yapcjapanC


実録!『すぐわかる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アプリケーションが(数行でも)

    • 最初のステップが小さいと楽




  • paramevery_param(チェックボックスなど)


    • 値の復元 ( HTMLFillInForm 的なもの)


    • QUERY_STRINGPOST 文字列も意識しなくていい




  • 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.pmEncode.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 はイミュータブルではないので使いたくない

  • サブルーチン先頭の &

  • ファイルハンドル MAILmy $fh

  • 「テスト無しで触るのは怖い」「昔はよくやってた。心臓止めないで心臓摘出手術するようなもん」


  • open にリスト形式でコマンドを渡すと、shellが起動されないので安全となる

  • 「送ってみましょう・・・あれ?」元に戻すと、メールが来る


    • 時間もないので諦め




  • print がたくさんあるのも・・・ → ヒアドキュメント使いたい

  • ページの処理毎にサブルーチンを分離 sendmail print_form

  • 「弾さん、セミコロンがありません」「よくやるよね」

  • 「いやあ・・・これ辛いなあ」

  • エンコーディングを UTF-8 に

  • このスクリプトの美しい点 : 1ファイルに全てのdataが入ってる

  • 「1時間のリファクタリングで10年戦えたら虫が良すぎますね」

  • メアドの正規↑表現↓がガバガバ → http://emailregex.com/ からすごいのをコピペ → シンタックスエラー


    • 「コピペプログラミングは良くないという見本」



  • 「だいぶよくなってきましたね」「だいぶよくなってきたけどこんなので10年戦いたくない」


  • $cgi->Vars$cgi->param(...)

  • 「こういうの(リファクタリング)は恨み言を言いながらやるとよかったりしますよ」

  • 「現状どのくらい戦えますか?」「3日?」

  • 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入学式札p(ドラ「ごーん」)


仮想環境で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


      • packet analyzer

      • Electron ベース

      • JSでプラグインを書ける




    • 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