YAPC::Asia 2014 スペシャルレポート

YAPC:: Asia 2014 2日目レポート[更新終了]

この記事を読むのに必要な時間:およそ 11 分

あらたまさん「モバイルアプリとAPIのありかたを考える2014」

あらたまさんは,モバイルアプリとAPIのありかたにについて発表しました。

iOSやAndroidのモバイルアプリの開発ではありがちな,1アクションのたびに通信中,似たようなバックエンドを毎回作っているといった問題を解決する必要があります。そのために,モバイルアプリのバックエンドをまとめて面倒を見てくれるMBassSの代表格のParseというサービスと,JSONを一度の通信で複数回メソッドの実行を行い通信コストを下げることのできるJSON-RPC 2.0 Batchを紹介しました。

これらを使用することにより,サービス・プロダクトにフォーカスして開発でき,一度にリクエストをたくさん送ったり,分析のログを送りやすくなるとのこと。また,その結果,理想とするユーザ体験を最大化するためのアーキテクチャーに近づくことができると述べていました。

最後に,JSON-RPC 2.0 Batchに対応したiOSのAPI Clientを,GitHub上で近日公開する予定であると述べていました。

画像

画像

Perlあるある

@lestrrat, @takesako, @miyagawa氏をゲストに迎え,あらかじめ質問しておいた内容を題材にしたトークセッションでした。主催の株式会社オモロキからは@yusukebeさん,@kamadangoさんが登壇しました。

最初の質問は「このCPANモジュールがすごい」で,登壇者の経験からすごいと思ったモジュールを紹介しました。Web::Scraper, DBI, Jcode.pm, Carp::Always, awstatsの名前が挙がりました。Web::Scraper, DBIは実用性はもちろんですが,特にその実装がPerl的な変態コードになっているそうです。ただ真似するのはお勧めしないということでした。Jcode.pmはPerl4時代のjcode.plからみてとてもイケていたということ,Carp::Alwaysは単純に知ってると便利ということでした。awstatsは古くからあるPerl製のアクセス解析ソフトで,10万行ほどの1cgiファイルのみというレガシー構成にもかかわらず,今でもメンテされているそうです。また,RubyでDSLが流行ってるというとPerlプログラマもやりたくなるといった,Perlあるあるも紹介されました。

「コーディングに欠かせない飲み物と食べ物」では,飲み物はコーヒー食べ物は不要という方が大半でしたが,Background Videoが捗るといった面白いスタイルもありました。

「その昔勘違いしていたこと」では,POEをポエと呼んでいた(ポーと呼ぶそうです)ことや,YAPCをワイエーピーシーと呼んでいた(ヤップシーが一般的)など読み方についての話題が多めでした。

「大切にしている言葉」では,⁠コードを書くのに許可はいらない」⁠コードも作文と同じ」⁠基礎が大事」⁠Done is better than perfect」といったそれぞれ印象深い言葉を紹介していました。

最後の質問「エンジニアになって良かったこと」に対しては,食いっぱぐれないという現実的な意見から,趣味を仕事にしているので毎日が休日といったポジティブな意見,自分の生活だけではなく世界を良くすることができるといったスケールの大きい意見まで様々な視点が語られて終了となりました。

画像

Perl入学式 in YAPC::Asia Tokyo 2014

プログラミングに興味がありつつも未経験の著者が初めてプログラミングを学ぶため,Perl入学式に参加しました。

Perl入学式とはプログラミング初心者が,1年間Perlについて学び,最終的に簡単なWebアプリを作成できるようになることを目的とした勉強会です。YAPCでは過去にも開催されており,今年も開催されました。

今回のテーマはBotで,2時間半で基礎的な部分を学んだ上でBotを作成しました。しかし,先に述べたように著者はプログラミング未経験者です。何をどうしたら良いかサッパリ分からなかったのですが,サポーターの方がマンツーマンでついてくれたので非常に心強かったです。

さて,肝心の内容ですが,最初は基礎を学びました。変数,スカラ変数,変数の出力,文字の入力,配列,forループなど。聞いたこともない言葉がたくさん出てきました。時間の都合上,駆け足での説明でした。

一通り説明があった後に,用意されていたコードを用いて練習問題を解きました。printを使うと変数を出力できる,sortを使うと配列の並び替えができるのだなと,部分的にぼんやりと分かりましたが,もちろん全く解けず,解説を聞いても分からず,サポーターの方に聞いても分からなかったのですが,とりあえず分からないながらも話を聞き,手を動かし,サポーターの方についていただき練習問題を解くということを繰り返しました。この時点では全く解けず,本当に落ち込んで来て諦めて帰ろうかと思ったくらいでした。

基礎の学習と練習問題を終え,今回のテーマであるBotの作成です。まずはBotの仕組みを学び,練習問題を解いた上で簡単なBot作成できるようになるのが最終目的です。BotとはTwitterで自動的で呟くアカウントで,とても馴染みがあります。Botが動く仕組みは,入力を待ち,入力に応じてあらかじめ指定された動作をするというものであり,それを繰り返すというものです。Botは馴染みもあるせいか,取り組みやすかったです。Botのベースコードを用い,おみくじ機能を追加して,おみくじBotを作りました。これは,⁠おみくじ」と入力すると,⁠大吉」⁠中吉」⁠小吉」とランダムに出力する仕組みです。ランダムな値は乱数といい,randを使うことで表現できることが分かりました。

また,Perlのモジュールを使えば,Twitter用BotをはじめSkype用Botを作れることを知りました。

最後は校長の@papixさんがデモンストレーションを行い,Perl入学式は無事終了しました。

感想としては,コードは残念ながら書けるようにはならなかったものの,Botに関しては仕組みを理解し,コードのほんの一部ですが書けるようになり,本当に嬉しかったです。最初は全く分からず,ついていけなかったのですが,諦めないで本当に良かったです。プログラミングは奥が深く面白いものだと実感しました。次回もPerl入学式に参加したいです。また,自分でも勉強しつつ積極的に勉強会に参加しようと思いました。

画像

画像

Andy Delcambreさん「Changing the tires on a moving car: a case study in upgrading legacy architecture」

GitHubのAndyさんは,GitHub内のgitのデータにアクセスする処理の改修の変遷について発表しました。GitHubではPerlは数百行しか使われていませんが,とは言え,Perlで書かれているもので重要なものも多数あるそうです。

GitHubでは27台のファイルサーバで100TBのデータを扱っており,これらのデータに高速にアクセスするのは重要なタスクとなります。初めのうちは,GritというRubyのgitのラッパーと,Smokeという分散ファイルアクセスを行う仕組みを用いてこれを実現していたそうです。しかし,Chimneyという管理サーバがボトルネックとなり,この仕組みはスケールしないことから作りなおす必要が出てきました。

また,Gritにもgitの最初の実装が共有ライブラリとして実装されていないために例外処理に問題があったり,ライセンスに難点があったりしていました。そのため,libgit2というライブラリを一から作り直し,これをラップしたRuggedというライブラリも用意しました。PerlにもGit-Rawというlibgit2のラッパーがあるそうです。さらにSmokeの問題を解決したGitRPCという仕組みを使った,新しいシステムを作成しました。

しかし,作った新システムを旧システムに差し替えるのに,すべてを一度に差し替えることはできません。Andyさんは両システムを並列に走らせ,状況をきちんと計測しながら切り替えていくのが大切だと述べていました。最後に残った数%の利用については,丁寧にtracingをして対応していくのが大切だとして,トークを締めくくりました。

画像

画像

karupaneruraさん「Perl5 meta programming」

karupaneruraさんは,サブルーチンやパッケージを動的に定義したりするプログラムを生成するプログラムであるメタプログラミングについて発表しました。

メタプログラミングを使うことでDRYなコードやInnerDSL, PreProcessingを手に入れることができますが,自由度の高い世界を手に入れる代わりに使い方を間違えると酷い目に遭います。そこで,その危険性を回避するために,テストを書く,既存のモジュールで解決する,シンプルに作れという方法論を説明しました。

その後,string eval, UNIVERSAL, symbol table, AUTOLOAD, Package::Stash, B.pm, Class::Inspector, Class::Method::Modifiers, Mo[ou]se, Mooという具体例を,デモを交えつつそれぞれの特徴などを分かりやすく解説しました。

画像

画像

著者プロフィール

臼井洋文(うすいひろふみ)

京都府京都市出身のプログラマ。仕事ではPerlでサーバサイドを書きつつ,Objective-CでiOSアプリの開発をしている。週末はボルダリングに勤しむ日々。

Twitter:@usuihiro
Web:http://d.hatena.ne.jp/usuihiro1978/


日下部雄也(くさかべゆうや)

仕事はニフティクラウドのネットワーク関連の機能の企画・開発・運用で,運用自動化のためのプログラムを書いていることが多い。言語は,Perl,Python,Ruby,C,Goなど。最近,Vyatta CoreからフォークされたVyOSという仮想ルーターのユーザー会を設立し,第1回目のミーティングを主催した。

Twitter:@higebu
Web:http://www.higebu.com


滝沢玲美(たきざわれみ)

千葉県在住。仕事はITとは全く無縁な事務職だが,プログラミングに以前から興味があり。今回,Perl入学式にてプログラミングを初めて学ぶ。

藤沢理聡(ふじさわまさあき)

神奈川県在住。仕事でソフトウェア開発をしつつ,余暇にも友人たちとソフトウェア開発をする日々。長くPerlを愛用している他,ここ数年はPerl 6にも挑戦している。

Twitter:@risou
Web:http://www.risouf.net/


本間雅洋(ほんままさひろ)

北海道苫小牧市出身のプログラマー。好みの言語はPerlやPython, Haskell, Scala, OCamlなど。在学中は数学を専攻しており,今でも余暇を利用して数学を嗜む。現在はFreakOutに在籍し,自社システムの開発に力を入れている。 共訳書に「実用Git」(オライリー・ジャパン),共著書に「FFmpegで作る動画共有サイト」(毎日コミュニケーションズ)がある。

Twitter:@hiratara
Web:http://hiratara.github.io/


森藤大地(もりふじだいち)

ISP勤務。卒研でPerlのプログラムを組んで以来, Perlを利用している。 CROSSというエンジニアイベントを主催していたりする。 d3の翻訳やひとりアドカレなど,解析・可視化業務を行っている。

Twitter:@muddydixon
Web:http://muddydixon.hatenablog.com


山中裕之(やまなかひろゆき)

ドラゴンズファン。某会社のプログラマとして活動中。好きな言語はPerl, Ruby, C, C++, Haskelなど。武術が好きで休日はいそしんでいる。

Twitter:@hiroyukim
Web: http://hiroyukim.hatenablog.com