食用ではありません

YAPC::Asia Tokyo 2014 1日目の感想

とりあえず1日目の感想まとめてみました。

1日分でもけっこうなボリュームになったんで、次回はスキを見て書いてpostしたほうがいいのかもしれない。

2日目の感想はまた後日書きます。

インフラエンジニア(狭義)は死んだ / @studio3104 さん

「インフラエンジニア」という自称にとらわれすぎて、コードを書くことを避けるべきではない、というのは、 自分の立ち位置で考えてみれば「プログラマー」「アプリケーションエンジニア」が インフラの勉強や企画運営に関わるのを避けるべきではない、って置き換えられるわけで、 まず「解決すべき問題は何なのか」というところをよく考えたほうがいいんだろうなと思いました。

このトーク大入り過ぎて無線LANが繋がらなくなったり、立ち見ですら収容しきれない感じでした。 他の多目的教室のトークでも大入りで立ち見、ってパターンちょくちょくある感じだったので、 もうちょいキャパの大きい部屋があるといいなという気もします。

あとすたじおさんを海外に飛ばす陰謀は残念ながら失敗に終わりました(ぉ

Go For Perl Mongers / @lestrrat さん

資料

Goの落とし穴とか考え方とかがよく分かるトークでした。 自分も最近使い始めたのでとてもありがたかったです。

お待たせしました。Perl で BDD を簡単に実践する最高にクールなフレームワークができました / @tokuhirom さん

一時期PerlでBDDやりたいと思っていくつかモジュール使ってみたけど、Test::Kantanはわかりやすくていい感じです。 あとPower Assert機能が素敵だと思いました。 Test::Builderに依存してないらしいので、今使ってるTest::Name::FromLineと併用できるのかが気になるところ。あとで試してみます。

ランチ

イベントホール行った時点でランチセッションのお弁当が終わっていたので、 外に出てたまたま見つけた洋食とらひげ日替わりランチのチキンたれカツ&カレースパゲッティを。 美味しくてボリュームあってさすがに学生街の食堂とい感じでした。

いまぐぐってたらステーキが美味しそうなのがちょっと気になりました。

DBIx::Class - what is it and what is it good for? / @ribasushi さん

いままで英語のトークはさすがに100%ヒアリングできなくて、スライドと部分的に聞き取れる単語だけ、みたいな感じでしたが、 今回同時通訳があったので内容がちゃんと聴けて助かりました。

DBIx::Classはだいぶ昔に使ってたけど、未だに改良が続けられてるとの事で、いまもう一度使ってみるのもアリかもと思いました。

ライブコーディング 2014 / @uzulla さん、 @songmu さん

非常にライブ感あふれる感じでした。自分がもしあの立ち位置にいたら倒れるレベルで。

WHERE狙いのキー、ORDER BY狙いのキー / @yoku0825 さん

資料

Indexあったときの挙動がわかりやすく説明されてて、非常に勉強になりました。 普段「とりあえずIndexつけときゃいいんでしょ」的になりがちなので、実際のQueryでどう使われれるかも意識して 使ってみたいと思います。

あとスライドですが、プロジェクターだと背景は黒か暗色のほうが見やすいかなーと思いました。 今回のYAPC::Asia Tokyoの中では2日目の @kazeburo さんの資料が文字色とかも調整してあって見やすい感じでした。

Mojoliciousを使ったwebアプリケーション開発 / @torii704 さん

Mojoliciousはすでに仕事のコードで実戦投入してるので、どちらかというと 「自分変なことやってなかったっけ?」とか「もっといい手法があったんじゃ?」みたいな視点で聴いてました。 APIのまわり同じようなことやってたり、ディレクトリ配置とか自分がやってたより良さそうだったりで、次回に繋げられそうでした。

Java For Perl Mongers / @Yappo さん

資料

最初の出てきたコード、予想通りJavaだけどPerlでも動きますよパターンでしたがlvalueとかB:Deparseとか勉強になりました。 結局Javaの嫌な所がほとんどIDEで解決するのって、もうJava使うのにIDE使わないほうがおかしいってことなんだろうなと。 あとJava 8のStream APIはperlでも欲しいなぁと思いました。

Lightning Talks Day 1

同人活動の報告と今後の展望 / @maka2_donzoko さん

紙媒体はもう終わりということで全巻収納ボックス出すとの事。欲しいけど初期の数冊持ってないのが残念。

2日目には本完売したそうでおめでとうございます。

帰ってきた Top10 Kwalitative japanese authors 2014 / @charsbar さん

半分くらい新規ランクインだった感じでした。

Relocatable perl / @shoichikaji さん

ファイル置いてそのまま動かせるperlは確かに便利そう。

試してないけどcpanmでモジュールインストールしたあとそのままひとかたまりで配布して大丈夫なのかな?

Perl入学式2014年度活動中間報告 / @__papix__ さん

JPAとの連携やスタッフ増えたりと順調に発展している感じでした。

Lens smart setter for immutable data / @hiratara さん

リポジトリ

脳みそが追いつけませんでした(苦笑)

beyond civic hacking / @gugod さん

資料

英語はやっぱり追いつけませんでしたが、資料のスクショの漢字が助かりました(笑)

こういう可視化の試みは面白いなと思いました。

あと@hirataraさんがg0v.twについて教えてもらったという記事を書かれていたのでこちらも。

OSSのりそうとげんじつ / @chobi_e さん

資料と補足

OSS活動はコミットとかできてないので、英語の件についてが参考になりました。

新卒インフラエンジニアがピクシブ新社内広告サーバ構築に挑んだ話 / @catatsuy さん

資料

pixivは全部小文字。覚えました。

Web Framework BenckmarksとPerlの現状報告会 / @kazeburo さん

資料

正当に評価してもらうにはこういうこまめな活動も必要なんだなと思いました。

YAPC::Asia Ramen Challenge / @bayashi さん

資料

ラーメンが好き過ぎる。

HUB

今回懇親会が事前申し込みだったのに気がついたのは申し込み埋まったあとだったので、素直にHUBにいって呑んでました。

1000杯とかわりとすぐなくなるかと思ってたけど、結局自分の帰った23時くらいまで大丈夫だったのが意外でした。


YAPC::Asia Tokyo 2014 0日目メモ

というわけで前夜祭から参加してきました。

Twilogも参照のこと。

受付

17:30から受付という事だったので時間合わせて行ったらまだ準備中でした。

結局だいたい17:45くらいに受付開始。 この時間から来てる人は訓練された個人スポンサーが多かったようで、一般列がらがらなのに個人スポンサー列が行列という不思議な状態に。

開場

ビールやソフトドリンクの他に、今回はDMMかき氷が配られてました。 数日前までならちょうどよかったのかもしれないけど、残念ながら今日はだいぶ涼しかったせいで微妙な感じに。 でも、なかなか美味しかったので、いい時期に売ってたら普通に買うレベルじゃないかと。

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

まず @yusukebe さんから。ライブラリや環境が揃ってきた今だから、ということでこの企画だそうで。

GeekDojo / @__papix__ さん

  • 短期間でのリリースにはやっぱりテストと属人性の排除が重要
  • Botやツールを組み合わせて通知や自動化ってのもよさそう

hrhm.info / @hondallica さん

  • ネットにあるデータを複数収集して組み合わせることで自サービス向けのデータを作っている
  • 収集には専用にPCを用意していて、最初はとにかく集めるのが重要

pplog / @ppworks さん

  • herokuですぐリリースできるベースアプリを作ってテンプレートのかわりに使っている
    • 飽きる前に・小さく・最初は挑戦しない・小さく挑戦する、を実現するのに良さそう
  • 開発者が中の人ぶらない、ってのは情報集約の点でも大事なのかもしれない

ゴミ収集カレンダー / @syachi さん

  • 音声読上げ用のHTMLから正規表現でデータをスクレイピングしているとの事。パターンが多くて大変そう
  • Google CalendarからアクセスするiCalはtext/calendar; charset=utf-8でないと文字化けを起こすそうだ

wri.pe / @masuidrive さん

  • 自分の欲しいものを自分で作った結果としてのサービス
  • データを別サービスにバックアップできるようにするというのはサービス継続の話だけじゃなくて、ユーザー自身乗り換えのときとか、トラブルのときにも有効な気がする
  • ちなみに今回の記事の元になったメモも、この発表聞いてるとき以後はwri.peを使って書いてます

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

  • 単一のサービスじゃなくてチーム開発でいくつかサービスを立ちあげた話
  • とにかくサービスを完成させるのが大事

ttyrecからGIFアニメを作る話 / @sugyan さん

  • ttyrecの出力ファイルをGIFアニメ化するツールを作ってWebサービス化した話

GIFMAGAZINEの話 / @razokulover さん

  • GIFアニメを見られるサイトはたくさんあるけど、GIFアニメを作るところからやりたかったとの事
  • 一番使って欲しいユーザー向けの機能の取捨選択がWebサービスの強みに繋がるようだ

togetter / @yositosi さん

  • もともとはイベントのレポートを用意するかわりにツイートをまとめられるようにしたのが発端だそうだ

クイズを支える技術 / @debility さん

  • スタッフ入りから30min or die
  • 余興に使えるのは30min or die
  • 手書き部分を署名の電子化に使えるんじゃないかとかいう話が出ている

雑感

後半アルコールのせいかメモがまとめきれてない感じになってて薄くなってますが(笑)

とにかく小さくてもとりあえず作って始めてしまうのが大事なんだなという感じ。

ネタもロクに思いつかないのになにか作りたい気分になってくる発表でした。


長いことさぼってました

そろそろYAPC::Asia 2014開催ということで思い出してみたら9ヶ月弱くらいほったらかしだったようで。

今回は1日ごとにblog書いていきたいなぁと。


NudgePadで遊んでみた -1-

JavaScriptをブラウザ上で試すサイト、ってのはよくある(最近お気に入りのPlunkerもそのひとつ)んですが、NudgePadというnode.jsのWebサーバをブラウザ上で試せるサイトがある、ということで、面白そうだったので遊んでみました。

サインアップ

http://nudgepad.com/ にアクセスすると、 http://landing.nudgepad.com/ にリダイレクトされてサインアップ画面になります。

プロジェクトURLは、重複するものがなければ再確認なしで作成されるので、Start Project ボタンを押すときは用心したほうが良さそうです。

とりあえずセキュリティ対策

プロジェクトが無事作成されるとファイル一覧画面になります。

この時点で用意されているのは index.html と nudgepad/ ディレクトリですが、ここにあるファイルすべてがプロジェクトURLから公開されている状態です。

nudgepad/ ディレクトリにはログインに必要な情報も入っているので、ファイル名さえわかっていれば丸見えになります。

とりあえず用心のため、 nアイコン → Labs → Private でプライベートファイルの設定をしてしまいます。(なんでこんな重要な機能が Labs なのかは謎)

テキストエリアに /nudgepad/ を入力して Save して、 Restart でサーバを再起動すると、とりあえずnudgepadディレクトリ以下はログインしているユーザー以外にはみえなくなって一安心です。

まずサーバ側を試してみる

nアイコン → Server でサーバ側のログとシステム情報が確認できます。ここにコンソールもあって、直接コマンドを実行することもできます。

ここで Menu → Edit App.js すると、以下の内容の app.js というファイルがWebサーバのひな形として作られます。

module.exports = function (app) {
  app.get('/hello', function (req, res, next) {
    res.send('Hello world')
  })
}

Restart でサーバを再起動すると、 app.js が起動時に読み込まれます。

ひな形には /hello へのリクエストに文字列を返す処理が入っているので、試しに http://プロジェクトURL/hello にアクセスすると、 app.jsに書いてある処理の通りに “Hello world” が表示されるはずです。

ちなみに、フレームワークはexpressの3.1.1が使われているようです。

あと、 app.js はさすがに特別扱いされているようで、 http://プロジェクトURL/app.js にアクセスしても、 "app.js is private" と表示されるだけで中身は見えませんでした。

GitHubとの連携

nアイコン → Labs の一覧に Git とかあったので試してみました。

Commands メニューにgit関係のコマンドが用意されています。

まず、 Install でgit initが(あとたぶんgit add .も)実行されて、リポジトリが初期化されます。

実行結果にも書いてありますが、ユーザー名とメールアドレスを設定しろ、と言われるのですが、 Git 画面からは設定できないらしく、コンソールから

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

をそれぞれ実行することで設定する必要があります。

設定が終わったら Commit でコミットしておきます。

次にGitHubにリポジトリを用意して、 Create Deploy Key で SSH Key を作るんですが、ポップアップに小さく Key が表示されます。うっかり閉じてしまった場合は /nudgepad/deploy.key.pub に Key が格納されてます。

お察しの通り、 Private で隠しておかないと、Private Keyともども丸見えです。

GitHubのリポジトリの Deploy Key にこの Key を設定すれば、NudgePadからGitHubにアクセスできるようになります。Connect to GitHub でGitHubへの接続テストができますが、 ~/.ssh にディレクトリがないとエラーになるので、コンソールから

mkdir ~/.ssh
chmod 700 ~/.ssh

で用意するのが吉です。

あとは、 Add Origin でGitHubのリポジトリURL(SSHのほう)を設定して Push to Origin すれば、GitHubのリポジトリにファイルが格納されます。

さっき書いたとおり、コンソールから普通にgitコマンド使えるので、いざとなればいつもどおりの運用もできるかと。

ログイン機構

ここまできてもまだ「ログイン」らしい作業をなにもしてないですが、ユーザー認証情報はCookieに入っているだけなので、ほっとくとログインできなくなってしまいます。

nアイコン → Team にユーザー認証まわりの設定がありますが、作りかけ感たっぷりなシロモノで、メニュー名が"undefined"になってたり、メニューの Login Link を選んでも肝心の部分が"undefined"になったダメっぽいURLが表示されるだけだったりします。

普通にプロジェクトを作ったままの場合、ユーザーのメールアドレスは owner@プロジェクト名.nudgepad.com になっています。チームメンバーなら後述するログイン画面でメールアドレスを入力すれば、メールでログイン用のURLが送られてきますが、このままでは当然メールが届きません。

というわけで、 Change Email で自分のメールアドレスを入力するのがここでの正解のようです。

で、 Logout を選んだり、Cookieが消えたりしてログインし直す時はどうするのか、というと、 http://プロジェクトURL/nudgepad にアクセスするとログイン画面が表示されるので、登録しておいたメールアドレス入力して Get Login Link をクリックすると、ログイン用のURLがメールで送られてきます。

お察しの通り、ログイン機構はとても簡易なもので、このURLがバレてしまうとログインできてしまうというレベルのものです。もともと本格的なものに使うサイトではありませんが要注意ポイントです。

今日はここまで

まだほんのさわりだけですが、NudgePadを使いはじめるにあたって必要そうなあたりをまとめてみました。

使ってくうえでいろいろ問題もあったりするんですが、個人的にはそれ込みで楽しめているので、しばらく付き合っていこうかと思っています。


続・FreeBSDのportsを一般ユーザー権限でインストールしてみるテスト

とりあえずblog更新して、ああそういえばgitも入ってないんだよな欲しいよな、と早速流用してmakeしてみたところ、

$ make
===> Cannot create , check permissions
*** Error code 1

おいおい。という訳で再調査。

/usr/ports/Mkをこのメッセージで検索したところ、portsのオプション設定のあたりがどうやら原因のようでした。

NO_PKG_REGISTERを設定したので/var/db/portsはそのままで無視していたのですが、どうやらオプション設定するあたりで参照しているようなので、これをダミーで設定するようにしてみました。

PORT_DBDIR=${HOME}/var/db/ports

これを~/ports/ports/ports.userspace.mkに追加することで無事makeが通るようになりました。

パーミッションでエラーで出てたくせに、ディレクトリが存在しなくても問題ないのは謎、というかそこまで追っかけてません。

次にmake installするとgit_daemon~/ports/etc/rc.d/に置こうとして失敗するので、あらかじめ、

$ mkdir -p ~/ports/etc/rc.d

でディレクトリを用意しておきます。(当然git_daemonは使いませんが)

これで無事にgitもインストールできました。

おそらくportsのシステムで参照しているディレクトリをひと通りチェックして対策していれば、こんなにすぐに引っかからなかったんでしょうけど、最低限必要なものが入ればいいだけなので今後も全チェックまではやらないかと。


FreeBSDのportsを一般ユーザー権限でインストールしてみるテスト

※ この記事の作業だけでは動かないportsもあります。詳しくは次の記事を参照してください。

(論理)今日は朝っぱらから横浜にビールでも飲みに行くか、と思ってたのに、なぜか昔使ってたFreeBSDな環境を気まぐれで再整備してました。

ただviが素のviだったで、とりあえずなんとかしたいなと思ったんだけど、自分の管理してるサーバじゃないのでユーザー権限だけでなんとかできる方法を探してみました。

記事中ちょっと気になったのが、

でもinstallは途中でsuをしようとして失敗するので、手で配置する。

というところで、あのへんいろいろ細工できるようになってた気がしたので、/usr/ports/Mk/bsd.port.mkを読んでみたら、

# INSTALL_AS_USER
#                               - Define this to install as the current user, intended
#                                 for systems where you have no root access.

なんてのを発見。 あとはシステムのディレクトリ見に行きそうなあたりを回避する目的でNO_PKG_REGISTERとかNO_MTREEあたりを追加してみました。

最終的には以下のような感じ。基本的な流れは元サイトそのままです。

1. インストール場所の用意、portsの知恵を借りる

元サイトと配置が違うけど、この辺りはお好みでどうぞ。

vimだけじゃなくて他もインストールする可能性ある気がしたのでこんな感じに。

$ mkdir ~/ports
$ mkdir ~/ports/ports
$ mkdir ~/ports/distfiles
$ cp -r /usr/ports/editors/vim ~/ports/ports/

2. Makefileを編集する

設定を上書きする部分は、あとで他のportsを入れるときにも使いまわせるように、別ファイルにして.includeで読み込むようにしてみました。

INSTALL_AS_USER=yes
NO_PKG_REGISTER=yes
NO_MTREE=yes
DISTDIR=${HOME}/ports/ports/distfiles
PREFIX=${HOME}/ports
WRKDIR=/tmp/work
TARGETDIR=${HOME}/ports

上記の内容で~/ports/ports/ports.userspace.mkというファイルを作成しておいて、~/ports/ports/vim/Makefileの先頭に、

.include "../ports.userspace.mk"

を追加します。

3. makeして、installする

普通にインストールできるようになりました。

$ cd ~/ports/ports/vim/
$ make
$ make install

4. 補足

とりあえずvimに関してはこれで特に問題なかったんですが、その他のportsがこれだけで十分かは不明なので、実際に自分の環境で試してみる場合にはご注意ください。

しかし、vim 7.3のパッチが556個(本家ftp.vim.orgに置いてあるファイルは1,314個)もあって、fetchしてくるときにftpサイトが音を上げてエラーをだしているという……fetchしているときにProtocol errorとか出てても気にしないでください。

これports側でhttpを優先にするかvim.org側である程度の数ごとにtarballにしたほうがいい気が……


YAPC::Asia Tokyo 2013に参加してきました

という訳で、「ブログを書くまでがYAPC」だそうなので感想エントリを書いてみます。

会場

駅からも近くて、会場内の移動が基本フラットだったのが便利でした。

ただ、受付〜メインホール出入口はボトルネックになっていた感じ。 屋台村は通路に設置しないほうが、屋台がみたい人にとっても通路を通るだけの人にとっても良かった気はします。

提灯とか飾ってあってお祭りっぽい雰囲気はなかなか良かったので、次回もうちょっとスペースとってやってもいいかと。

会場ネットワーク

一部のアクセスポイントで、繋がっているようにみえてデータが流れない、という状況が発生することがありましたが、 それ以外は快適で非常に助かりました。

ランチセッション

お弁当美味しかったですw

トーク

自分の興味半分、仕事に使えそうなネタ半分で選んだ感じですが、裏で行けなかったトークにも面白そうなのが沢山あって、今回は特にぎりぎりまでどれにするか迷いました。

多目的教室を使う一部のトークが大入りになっていて、イベントホール使っていれば良かったんじゃないか、という気もしました。 このへんは飲食可なのがイベントホールのみ、という事情もあったのかもしれませんが。

あとはトークとトークの間に休憩時間がもう少し欲しかったですね。 わりとトイレもギリギリという感じだったので。

懇親会

今回は直後に大人の事情があって1時間弱だけ参加でしたが、食事も話も楽しめました。

LT

2日目のLTで時間切り詰めになっても、すごい勢いで発表している様は、まさにLightning。

(個人的な)トラブル

1日目いきなり寝坊+東横線のトラブルでオープニングには間に合わなかったのが痛かった……

次回以降の話

今回で牧さんとくしいさんが引退ということで、次回以降どうなるのか予想つかない状態ですが、また1,000人以上集まるような大規模なイベントになることを期待したいです。

自分もLTソンあたり挑戦してみたいですね。


Riji入れてみた

ちょうどYAPC::Asia Tokyo 2013のLTでSongmuさんが紹介していたRijiを使ってみました。

以下メモと雑感。

  • 依存モジュールのインストールに時間かかるなーと思ったら、50個くらいモジュールが追加された。(plenvで入れた、ほぼすっぴん状態のPerlだったから、というのはあるかもしれない)
  • チュートリアルで言及されていて、TOML(https://github.com/mojombo/toml)ってのがあるのを知った。ぱっと見はデータ構造つきで階層化できるiniファイルっぽい印象。
  • いままでwget入れてなかったのに気がついた。普段curl使ってて困ってなかったし。でもソースざっと眺めてみた感じだとwget使ってないような?
  • GitHub Pages+独自ドメインで使ってみた。チュートリアル003GitHub PagesのHelpを参考に。
    • User Pagesの場合、gh-pagesブランチじゃなくてmasterブランチのファイルを参照するので、riji.ymlへの設定の追加とgh-pagesブランチへの切り替えは不要
    • User Pages用のリポジトリ名の規則は決まっている(username.github.ioというリポジトリを作る)
    • CNAMEというファイルをリポジトリのルートに置いて、使うドメイン名を書く
    • 使うドメインをCNAME使ってusername.github.ioに向ける。CNAME使えない場合は指定のIPアドレスに。
  • チュートリアル002のとおりにサンプル削除してそのままcommitしてしまうと、entryディレクトリが消えてしまうので、.gitignoreとか.gitkeepとか置いておくと吉かもしれない。あとriji new-entryはentryディレクトリ消えてるとエラーでコケる。
  • riji server -R articleでファイル更新に追従してくれる。(メモってなかったけど発表のデモでやってた気がする)
  • デフォルトのテンプレートで使ってるBootstrapは3.0.0-rc1だったけど、既に3.0.0出てたのでテンプレート修正時についでに変更。
  • とりあえずTwitterのWidgetくらいはくっつけてみた。
  • コメントはどうしよう?

実際エントリ書きよりもテンプレート修正とGitHub Pages関係(User Pagesなのにgh-pages作ったりしてハマった)のほうに時間がかかった気がします。

せっかく作ったので、こまめに更新できたらなぁ、と。


ぶろぐはじめました(n年ぶりm度目)

とりあえずYAPC::Asia Tokyo 2013を終わらせるのにBlogつくってみました。

以前のYAPC::AsiaでBlog書いてないので終わってないんじゃないか、という件については気にしないでください。

Blogつくるにあたってのイロイロは以降のエントリで……