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

YAPC::Asia Tokyo 2015 1日目レポート[更新終了]

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

ジンジニアさん「⁠⁠sponsored contents】若手エンジニア達の生存戦略」

このセッションは,座談会形式でPerlに関わりのある若手エンジニア達の話を聞くというものでした。仕事で人事をされているジンジニアさんがファシリテータとなり,他4人のパネラーの話を聞くというもので,登壇者全員がビールを飲みながらのゆるふわな雰囲気でのトークセッションとなりました。登壇者は全員26歳で,社会人歴も2~4年の若手達です。

最初の話題は,若手にとってPerlという言語はどういうものかということでした。ほとんどの登壇者は記号が多いなどはあるが,特に違和感はないと答えていました。周りで影響を受けた人については,@hisaichi5518さんは@songmuさんであったり,@dankogaiさんにブログを通して勝手に添削された経験などを語り,よい先人たちに恵まれたことが伺えました。

画像

コミュニティへの関わり方について,@mihyaeru21さんは積極的に関わることはできてないと述べたうえで,ほとんどの若い人は@mihyaeru21さんと同じようにコミュニティへの関わりは薄いだろうとしながらも,新潟県のエンジニアコミュニティへ参加したのをきっかけにIT業界へ就職したという自身のエピソードを元にコミュニティ活動の魅力を紹介していました。

若手であることで苦労した点を聞かれると,@zoncoenさんは逆に若手であることを利用しているという話をされました。若手だからこそ自由に言える様々なことをどんどん組織にフィードバックしているということを話すと,登壇者からも同意する意見が相次ぎました。

画像
最後に会場から10年後にどういう風になっていたいかを聞かれると@__papix__さんから「今の会社がエンジニアにとって最高であるような会社にしたい」という意見が出たり,⁠IT芸人ではなく技術的に有名な人間になって,お金を儲けたい」という率直な意見が挙がったりしました。筆者は長年IT業界に携わっていますが,このような若い人々の前向きな決意を聞いて,今後のIT業界も期待ができる有望な業界になりそうだなと感じました。

画像

趣味はマリンスポーツですさん「Perlの上にも三年 ~ ずっとイケてるサービスを作り続ける技術 ~」

Perlの上にも三年,ずっとイケてるサービスを作り続ける技術を,Hatenaでの歴史を紐解きながら,@hitode909さんが紹介されていました。

画像

冒頭では,イケてるサービスを作りつづけるための条件として,継続した開発,迷わず書ける状態,一貫した指針,それも最新の指針が必要だと述べられました。では,これらはどのようにして得られたのでしょうか。

まず紹介されたのはHatenaでのフレームワークです。初期のRidge+Mocoの構成は,複雑性による高い学習コストや予期せぬ不具合が多いという欠点を抱えていました。そこで,⁠読むコードが最小=安全」という考えの元に,ブログでは非常にシンプルなフレームワークが採用されました。

このようなシンプルなWAF上では否応なしにコピペが発生します。これに対する対抗手段として,MVC横断の機能毎に別れたサービス層の導入が行われました。これにより,コピペの削減された簡潔なControllerになりました。

次に紹介されていたのは,オブジェクト指向です。サービス層が導入された当時はステートレスなクラスメソッドばかりが好んで利用されていました。しかし,クラスメソッドのみでは,ブログの複雑で多岐に渡るユースケースには耐えられません。そこで,丁寧なオブジェクト指向を導入して,シンプルに実装を行うことになりました。

画像

この後に行き着いたのは,ドメイン駆動設計(DDD)です。Controllerから脱出したServiceは,DDDでは一般的な概念でした。そして,DDDに基づき,はてなブックマークは,Scalaでフルスクラッチ中です。

また,チームメンバー全員が同一の言葉を用いることで,開発効率が上がることも触れられました。その為の手法としては,言葉の選定をきちんとやることや,コード上のコメントとして管理していく重要性が述べられました。

ここで重要なのは,長年の知見に基づく新しい方針に合わせて,あとから変更可能な構造にしておくことです。これにより,過去を捨てて,最高の設計に向かう事ができると述べられていました。

実際に,これらを組み込んだはてなブログは簡潔に保たれています。インターン生でも理解が容易であり,チーム配属から3週間のうちにリリースできる物になりました。

最後の締めくくりでは,⁠いちどPerlから出て,オブジェクト指向やDDD等,外の世界の知見をPerlに持って帰る」ことが重要だと述べられていました。

Ben Ogleさん「Electron: Building desktop apps with web technologies」

GitHubのBen OgleさんによるElectronのプレゼンテーションです。まずはElectronを使って実装されているAtomの紹介から。Atomはつい最近1.0がリリースされた,GitHubが開発したオープンソースのテキストエディタです。通常のデスクトップアプリケーションと同じように,メニューやファイルシステム,クリップボードへのアクセスが行えますが,HTML,CSS,JavaScriptといったWebの技術を用いて実装されています。

画像

通常のChrome上でシングルページのWebアプリケーションを開いた状態に似ていますが,ファイルシステムやクリップボードへのアクセスといったOSとの統合という点で,はるかにパワフルなものとなっているそうです。これはWebとデスクトップアプリケーション,両方のいいとこどりになっているからだ,とBenさんは言います。

画像

Electronは,ネイティブのアプリケーションをWeb技術で作成するためのフレームワークです。作成されたアプリケーションはクロスプラットフォームなアプリケーションとなります。AtomはElectronの上に実装されており,ElectronはOSの機能にアクセスするためのAPIとブラウザエンジンを提供しています。これはChromiumとio.js(Node.js)を組み合わせることで実現されています。このため,公開されたnpmモジュールを使ってアプリケーションを実装することが可能です。

Atomの他にも,すでにElectronを使ったアプリケーションは数多く開発されており,Visual Studio CodeやFacebook Nuclideといったエディタや,Slackのデスクトップクライアント,FIREBALLというゲームエディタ,Electronで作成されたアプリケーションを動作させることのできるJiboというロボットなど,様々なプロダクトがElectronを使って作られているようです。

次に,Electronを使ってデスクトップアプリケーションを作成するデモが行われました。画像を表示するだけの簡単なアプリケーションからはじまって,猫の画像を認識するアプリケーションベクター描画アプリケーションなどが紹介され,複雑なアプリケーションも簡単に実装できるということが示されました。猫の画像を認識するアプリケーションは2時間程度で実装できたとのことです。

最後に,PerlでElectronのアプリケーションを開発する,というチャレンジが提示されました。Perlitoというコンパイラを使うと,PerlをJavaScriptにコンパイルすることができるそうです。これをelectron-complieに統合すればPerlでElectronアプリケーションを開発できると思うので,会場の皆さんには是非挑戦してほしい,とのことでした。

Atsuo Fukayaさん「esa.io - 趣味から育てたWebサービスで生きていく」

ドキュメント共有サービスesaを開発されているFukayaさんは,esaの事例を元に趣味で作ったプロダクトを育てていく方法について話されました。esaを始める前は様々な仕事を経験しながら,趣味でもスマートフォンアプリやChrome拡張を開発してきたそうで,当時の経験から「いろいろ試すことが大事」であり,失敗しても成功しても得るものはある,そのためには「公開することが大事」だと述べられました。

画像

esaを作り始めてからは自分自身が毎日esaを利用し,開発のモチベーションを維持していたそうで,最初の1,2ヵ月はコミット量も多かったとのこと。開発を進めるうちに企業から使ってみたいという声をいただくようになりました。サービスに対して責任を持って運営していくことを表明するために,運営会社を立ち上げるに至ったそうです。

普段から「楽しく開発できること」を大事にしているそうで,意識的にモチベーションを維持するために制御可能な事柄に注力しているとのことです。他にもリリースノートをesa上で書くことの楽しさ等もモチベーションにしているそうです。

画像

自身の5年前の日記を引用し,色々な試行錯誤を経て当時やりたいと思っていたことができている,と振り返り,⁠どんどん試行錯誤しよう。自分のやりたいことをやって生活できて,それで周りの人を幸せにできると最高!」と締められました。

moznionさん「Yet Another Perl Cooking」

@moznionさんにより,Yet Another Perl Cooking とは,Programmable Cookingのことだと提唱されていました。それは,API Basedで様々なデバイスから操作でき,誰でも同じ料理を作れる再現性があり,自動化された料理のことです。

画像

その例として,Low-temperature Cookingによるローストビーフの作成を紹介していました。構成としては,水槽の中に,真空パックした牛もも肉を投入し,投げ込みヒーターで加熱をします。ヒーターは,Raspberry Piを用いて,設定温度に対するON/OFF制御をします。また,Raspberry Pi上にはAmon2::Liteを用いたサーバを立てており,JSONで利用可能なWeb APIが提供されていました。

curlコマンドから電源を投入し,待つこと4時間,非常に美味しいローストビーフが完成しました。

画像

安全上のリスクが高いので,もし挑戦する場合も,安全に対する充分な配慮を行い,あくまで自己責任でお願い致しますとのことです。

著者プロフィール

青木大祐(あおきだいすけ)

茨城県在住。個人的な用途では主にPerlを使うが,業務では残念ながらC#とTypeScriptしか触らない。大学在学中からPerl6が気になっており,Tsukuba.pmを開催して布教もした。

Twitter:@VienosNotes


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

京都市出身のプログラマ。仕事はPerlでサーバサイド開発がメインだが,必要に応じてiOS/Androidアプリの開発やインフラ周りの整備も行っている。趣味は写真とボルダリング。

Twitter:@usuihiro

Web:http://d.hatena.ne.jp/usuihiro1978/


越智琢正(おちたくまさ)

愛媛県西条市出身。大学進学を機に上京。在学中は超小型人工衛星の研究開発で,ハードウェアをいじったり,C++やC#を利用。就職後にPerlと出会う。仕事ではPerl製フレームワークやゲーム用のBaaS開発,とあるゲームの海外版開発等に従事。人に喜ばれるものを作るのが好き。


田実誠(たじつまこと)

某クラウドインテグレータのデベロッパー。Web技術全般に興味があり,プライベートではRuby,Node.js,Python等で個人ツールやOSSのプラグインを作っていたり。Perlはド初心者。

Twitter:@tzm_freedom

Web:http://freedom-man.com/blog/


中村浩之(なかむらひろゆき)

Spiber株式会社勤務。バイオベンチャーで,生物学実験を行う研究者が使うアプリケーションの開発を行っている。Ruby,Pythonを書いていることが多い。グリッチに興味がある。


野田大貴(のだだいき)

株式会社技術評論社、雑誌編集部所属。主な業務は書籍の編集。

Twitter:@nodawep


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

神奈川県在住。ソフトウェア開発や周辺業務に携わっている。長年 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/


安武貴世志(やすたけきよし)

現在は大手Web系IT企業のインフラエンジニアとして,幅広いシステムの構築・運用を担当。インフラ以前はソーシャルゲームのサーバサイド開発をしていたことも。最近,趣味でKoyomiというジョブスケジューラをPerlで書いた。福岡出身。

Twitter:@key_amb

Webサイト:http://keyamb.hatenablog.com/


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

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

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