今日は YAPC::Asia Tokyo 2014 の前夜祭です

今年もYAPCの季節がやってきました。本日の前夜祭から3日間参加しますので、後学のために聞いたセッションについてはメモを残しておこうと思います。

今年も縁あって、gihyo.jpさんにレポートを寄稿できることになりました。もちろん、例年通りリアルタイム更新で行います。メンバーは去年からのメンバーと新しいメンバーを加えた計7名です。こちらもページが公開され次第紹介しますので、どうぞお楽しみに!

とりあえず会場入りして、DMMかき氷を頂いております。一部の内容は gihyo.jpさん にも掲載していますので、併せてご覧ください。

欲しいものは作ればいい! 〜Webアプリ10連発〜

オープニング / yusukebeさん

  • 今日からYAPCです
  • 前夜祭の内容は、yusukebeさんがやりたかったこと
  • 乾杯!!
  • 飲食はホールのみ、飲み残しの無いよう、ストラップは明日以降も忘れずに
  • もっとアプリケーションをつくろう
    • 環境揃ってる - VPS, AWS, OSX, VM, Web
  • 使った技術、こだわり、魅力
  • 実際に触って見れるアプリばかり

__papix__さん「GeekDojo」

  • プログラミングを学ぶ障壁
    • どこから手を出すか
    • すごいエンジニアに学びたい
    • 質問しにくい
    • perl入学識も有るけど
  • GeekDojo
    • 師匠と弟子
    • face to face
  • シェア研修 - 合同新人研修 - に優秀
    • そのまま技術研修で開発
    • 5週間 → 実装できた
  • なんで実装できたのか → テスト、属人性をなくした、 Bot
  • テスト → 凡ミスに気がつける
    • 最初からやったのがよかった。「書いて当たり前」
    • Test::mysqld, DBIx::FixtureLoader など、予め仕組みを作った
    • PAmon2 っての使ってる
    • App::Prove::Plugin::MySQLPool
    • DBIx::FixtureLoader
  • ブログ記事を参照した
    • sngmuさん、hisaichi5518さん、hirobanexさん
  • 属人性の排除
    • サーバ構築、DB操作、デプロイなどを、コマンドで自動化。誰でもできる
    • Daiku → Teng::Schema::Dumper
  • BOT - GaiaChan
    • UnazuSan + APp::Ikachan
    • 通知系のタスクを任せた
    • Bitbucketの通知で不足している部分もサポート
    • Wercker → マスタのテストが通ったらstagingデプロイ
  • GeekDojoのイベントも開催されたが
    • 開発の資源不足。新機能追加が困難
  • @geek_dojo へメンションすると、師匠になれるらしい
  • 質疑応答
    • Q. 師匠をやってるが、通知が全然実装されない
    • A. 明日、進展があるかもしれない

hondallicaさん「hrhm.info」

  • 「不適切な発言があったらピー音入れてください」
  • ハードロック、ヘヴィメタルが好きな方は?
    • ボーカルがモテるのがハードロック、ギターがモテるのはヘビーメタル
  • ヘヴィメタルとは → 写真で
    • 社会に馴染めない人、重低音、ファンタジー、効いてる人が少ない
  • hrhm.info
    • ヘヴィメタルに特化したサービス
    • YouTubeの動画探すのに楽。自分用
    • デモ
  • 構成
    • Digital Ocean, nginx, Starman, Mojolicious::Lite, node.js, SQLite
    • 自分の既存の知識で扱える構成
    • インフラ構築の勉強も
    • 公開優先。個人サービスなので後から直す
  • データの収集
    • PCを使っている。常時稼働がよい
    • 根こそぎデータを集める、という強い狂気が必要
    • Scraping, WEB API
      • Last.fm, SoundCloud, MusicBrainz, Bandcampなど
  • Last.fm → APIが充実。150個以上
    • Net::LastFM, WebService::LastFM
  • MusicBrainz → 音楽のwikipedia
    • Music Brainz ID(MBID)。バンド名など、一意にできる
    • 音楽系ではよく使ってる
    • CPANモジュールもある。VMがダウンロードできる。12GBくらいある。マスタと同期できる
  • Artist (500K records), Discography(240K), Track(1.7M)
  • Bandの関連性の集計
    • 複数Web APIが得られたスコアや、一緒のライブに出てたか、または独断と偏見
  • 副産物
    • ヘビメタをヘヴィメタと置き換えるモジュール
    • WebService::BandCamp
  • 95カ国から利用されている。公開することが大事
  • 質疑応答
    • Q. ヘヴィメタルとヘビメタルの発音の違いを出して
    • A. わかりました!
    • Q. term of service とか読んでると使う気が
    • A. 気にすると負けです

ppworksさん「pplog」

  • http://pplog.net/
    • つながれない、のこせない、しゃべれない
    • ユーザの最新の一件のみを表示
    • 自分だけ過去の記事が見える
  • 5人で開発している
  • モチベーションが大事
    • 飽きる前に小さく作る
    • 小さい挑戦を繰り返す
  • サービスのREADMEを最初に書く(POEMと呼んでいる)
    • 迷走しなくて済む
    • 思いを文章にしておく。ポエム風でよい
  • 手慣れた道具を使う
    • Rails + heroku
    • いつもどおりに実装。仕事と同じクオリティで。なんなら仕事より本気で
    • futureテストを書く
    • railsテンプレートでなく、ベースアプリを用意 ppworks/rails4base
  • github flowとpull req開発。一人の時も
  • 一日で作るのが大事
  • 使ってもらうより、使う(仲間うちとかで)
    • ユーザは勝手に増える。ユーザの声は聞かない
    • サービスが勝手に成長する。サービスの声を聞く
  • 様子を見る
    • GA
    • 自前の通知ツールなど (テスト、運営、などのコメントを拾って管理者へ通知)
  • ツイッターアカウント
    • 管理者のようなことはあまりしない。favしたりする程度
    • メンテ画面にツイートを出すようにしておくと便利
  • グッズを作る。シール欲しければあげるよ!
  • 質疑応答
    • Q. マネタイズは?
    • A. 考えてない
    • Q. 最高のモチベーションは?
    • A. ザッピング機能。いろんな人のポエムが見える。誰かの一面を見たい

syachiさん「Perlで挑む ゴミ収集カレンダー」

  • 「号泣県議コンバーター」を作った
    • Mojolicious::LiteとText::Mecab
    • 旬は3日
  • (札幌市の)ごみ収集カレンダーのical版 gomical.net
    • Hokkaido.pm casual のごみカレンダーPDFからデータを抽出、がきっかけ
  • 札幌市が提供しているもの
    • PDF、音声読上げ用カレンダー(HTML)
    • 46パターンほどある
    • 他にやった人もいるらしい → 人力でやたらしい
    • pdftotextで変換してもきつい
  • 音声読上げ用データ(HTML)があるじゃない!
    • 自然文になっている。
    • 「。」で分ける。その後、日付、単語を抽出、曜日を抽出
    • Date::Manip → 特定の日付などを一覧でとれる
    • 元データは手作業で作ってそう
    • 全部のパターンを正規表現で作る
  • WWW::Mechanizeを使ってクロール
  • csv、json、iCal、SQLなど、お好みの形式で
    • データをgithubで公開したが、文字化けした
    • charset=utf8 が必要だったので、 heroku にした
  • 札幌以外の地域のカレンダーのpull-reqを募集中
  • 次回更新は9月だが、スクリプト(正規表現)が動くのか・・・
    • おたのしみに!
  • 質疑応答
    • Q. きっかけは?
    • A. 勉強会で興味を持った

masuidriveさん「wri.pe」

  • wri.pe とは
    • WEBベースのテキストエディタ
    • facebook or github。スマホ対応
    • GWで開発
  • 作りたいものをWEBにまとめている
  • 今まで → memo.txt
    • 何万行にもなってる
    • markdown使えない、リンクも使えない → github使ってたけど
    • プログラマなら markdown
    • archiveして検索したい
    • カレンダーで見たい
    • キーボードオペレーションやmobileのサポート
  • 欲しい物が見つからない → プログラマだから自分で作れる!
  • モデルが単純。UserとNoteのみ。2日程度で作れる
  • 2007年に作って、実は一度クローズしている
    • サーバの管理が面倒だった → herokuなどに任せる
  • 新しい技術を試す
    • localStorage, Rails 4, heroku への課金など
  • 適当にツイートして、そのまま寝た
    • 200人ほど登録してしまった
    • もう一回仕切りなおし! 仕事以上に本気で
  • 仕切りなおす
    • 英語については英語が喋れる友達にお願い
    • デザインはdribbbleを利用
    • アイコンは知り合いにお願い
    • herokuは $200/mo → メモをとるのに・・・?
    • 毎年、MBPが買える。が、「自分の欲しい物はお金では買えない」
  • 一番の問題点 → 運用が続くのか不明
    • dropbox, evernote との連携機能がある。データは手元に残してね
  • Seleniumのテストも作っている。SSLもきちんととってる
  • プレスも出した。「個人の時間で」
  • 飽きてきたので、オープンソース化
  • 作った理由
    • 作れるのはエンジニアの特権
    • 自分の苦手な部分を知り、きちんと人に頼る
  • 質疑応答
    • Q. heroku 以外に乗り換える先は?
    • A. AWSのsmall instanceとかもあるけど、修復コストを考えると。

<! - こちらは、 gihyo.jpさん に掲載させて頂いてます。 ->

hika69さん「プライベートで3年間チーム開発した話」

  • プレゼンはstoryboard を利用。いいね機能がうざい(笑
  • REMP
    • iTunes + youtubeのようなサービス
  • storyboard
    • マークダウンでスライドが作れる
    • レーザーポインター的な機能も
  • triph
    • 浅草の地図の上の、音声ガイドを聞けるサービス
  • Casto
    • ライブコーディングを配信できる
  • Mo(開発中)
    • 電子マネー系のサービスをつくろうとしている
  • アプリが増えると、運用は大変
    • storyboardが動かないと、メンションが来たり
    • ビジネスモデルも何もない
    • 実は「いいね」されるとお金がかかる
    • このようなトークの場がもらえるのは、やってていいこと
  • 欲しい物を作る
    • 「ポートフォリオに載せたいものをつくろう」「好きな技術をつくろう」
  • 「スタジオを予約するのがリーダーの仕事」
    • 開発する場を作る。毎週水曜日に開発ランチ
  • 浮き沈みを許容する
    • モチベーションが高い状態は正常ではない
  • スキルから逆算してチームを作る → 声優×ミュージシャン
  • チームが勝手に広がる(作ってもらえる)
    • storyboardのリープモーション対応、REMPのChrome拡張
  • 質疑応答
    • Q. いつも使ってます!
    • A. ありがとうございます!
    • Q. 仕事にも使ってる技術は還元している?
    • A. 実験的に使ってるので、後から仕事に還元することも多い
    • Q. 無償の愛はどこから産まれてくるの?
    • A. 最後のスライドを書いた記憶がない

sugyanさん「ttyrecからGIFアニメを作る話」

  • ttyrecはttyのレコーダーで、ttyplayで再生できる
    • デモ
  • ターミナル操作を他人に紹介したい
    • blogに貼るにはgifアニメがいい
  • LICEcap, Gifzoなどというアプリケーションもある
    • 範囲を指定して録画などができる
  • ttygifもある → ttyplayを再生しながらcaptureする。ImageMagickでgif化
  • が、自分で作ってみた
    • goを勉強したくて
    • ImageMagickへの依存を無くせる
  • スクリーンショットは不要ではないか
    • ターミナルのエミュレート、描画さえできれば、本物のスクリーンショットじゃなくても
    • saitoha/seq2gif ってのが作られた
    • これを参考に実装
  • 結局JSつかってwebでできるのでは
    • term.js, html2canvas, jnordberg などの道具
  • ttyrec2gif.herokuapp.com
    • ttyrecord ファイルを、すべてWEBで再生
    • UIの作成が楽 (端末サイズなど、こだわらなくてもよい)
    • サーバ側がやることなくなった (全部JS)
  • 引き続き開発中
  • 質疑応答
    • Q. 声も入れたいな
    • A. そこまで行くと動画がいいのでは。検討してみます
    • Q. ttyrecordeのフォーマットはバイナリ?
    • A. はい。JSで解析している

razokuloverさん「GIFMAGAZINEの話」

  • GIFMAGAZINE
    • GIFアニメの作成、共有に特化
    • 画像からGIFを作成、YoutubeからGIFを作成
    • Glitch Gifs → ノイズを入れて独特の風合いを
    • GIFに文字を合成、動画からGIF、GIFMAGAZINE TV、などなど
  • 作った理由
    • GIFアニメを見るサイトは多い。作成は少ない
    • 作成から共有までをまとめたかった
    • iOS、android版もある
  • GIFアニメを作る人が使いたいサービスにする
    • GIFアニメの重さを気にしない → 平均1.5MB
    • 通常のGIFのサイトはサイズ制限。Twitterは4MB
    • 「重いからアップロードできない」は悲しい → 圧縮、フレーム数削減などに時間を取られる
    • サイズ制限を 20MB とした
  • 4MB以上のGIFアニメをTwitterで動かせる唯一のサービス
    • 高画質、長いgifに対応
    • 結果的にユーザ数が大きく増加
  • 一番使って欲しいユーザが誰であるか明確にすることが大事
    • 画像サイズ制限は、見るユーザには小さいほうがいい。作るユーザには大きいほうがいい
    • 明確にすることで、webサービスの強みとなる
  • 質疑応答
    • Q. gifのまま? h264は?
    • A. gifのまま。Twitterはmp4にしているが、ドット絵クリエイターを大事にしたい
    • Q. pngの方は?
    • A. 実装していないブラウザがあったりもするので。これから挑戦したい
    • Q. 不便なアニメーションgifにこだわる理由は?
    • A. まだ好きな人がいる。

yositosiさん「togetter」

  • togetter はリリース後5年経っている
    • サービス名は「トゥギャザーしようぜ」より
    • 5年を振り返ってみる
  • 今はトゥギャッターという会社でやっている
    1. togetterを作るきっかけ
    • iPhoneでみんなが実況始めた
    • ハッシュタグがまだなかった頃
    1. エンジニアらしい手抜きをしたい
    • イベントレポートをしろと仕事で言われた
    • ツイートをプレゼン資料にすればいいんじゃね?
    • ツイートをまとめる機能を作り、それを使った
    1. 同僚が製品化への後押し
    1. コアユーザの存在(rkanbeさん)
    • 4000個くらいのまとめを作ってくれた
    • WEBサービスは最初20人いれば大丈夫。5人でもという実感がある
    1. masasonさんによる宣伝
    • サーバがやばくなるレベルのアクセス
    • 「やってみたリスト」をユーザがtogetterへまとめたものを、masasonさんがustで紹介してしまった
    1. 東日本震災
    • 議論の場として利用されるように用途が変わってきた
    1. ツイッター
    • ツイッターがないと根本的にまずい
    • FacebookじゃなくてTwitter使いましょう!!
  • Admins Barというpodcastで話したので、そちらを参照
  • エンジニア、デザイナー募集。週末だけでもOK!
  • 質疑応答
    • Q. togetterのページャーはどうしてああなっている?
    • A. 最初はページャーはなかった。そして、アレは後からすげー使いづらいと思ったので、2週間前に直した
    • Q. なんて言語で書かれてますか? その言語でうまくサービス作れますか
    • A. PHP。ぜんぜんいける。「でも、私もそろそろPH・・・いや、やめておきます」

debilityさん「クイズを支える技術」

  • 「聞こえにくい部分は大人の事情です」
  • クイズダ***風のアプリ: デモ
    • 倍率ドン機能
    • iPadに書いた手書きが画面に反映される
  • お絵かきはHTML5×SockJS-Perl
  • クイズミリ***風のアプリ: デモ
    • 「あ、間違えた」
    • オーディエンス機能はQRコード
    • 余興用アプリ
    • 30分 or die
    • 「暇なんですか」「これは売れる」「著作権法にちょっと」
  • 質疑応答
    • Q. タイムショック対応
    • A. 考えます
    • Q. iPadのデジタイザーはどうしてる?
    • A. 自作。HTML5とJS
    • Q. なんとかダービーとか知らないし、ミリオネア知らない世代来たらまずいのでは
    • A. クイズ研究会ではないので・・・