LoginSignup
8
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-04

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
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2