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

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

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

ライブコーディング 2014

イベントホールでは,songmuさんによるライブコーディングも行われました。実況と解説はmoznionさんです。今回は1時間という限られた時間の中で,誰かがTwitterアカウントでログインして「Ya」とツイートすると,⁠Ya」という音声を流すWebサービスを作成しました。

Web FrameworkにAmon2を採用し,amon2-setup.plを使って雛形を作成するところからスタートしました。次に雛形から今回は不要なDB関連の実装や設定を削除して,必要なものだけがある綺麗な状態にしました。ここから,TwitterのOAuth認証を用いたログイン機能,ツイートの投稿機能,連投してもTwitterにはじかれないような対策,音声ファイルの再生処理と,怒涛の勢いで実装が進みました。

途中,HTTPステータス500のエラーが出たり,ツイートが上手くいかなかったりと,実際の開発でもあるような躓きもありましたが,最後にはぴったり1時間で実装を終え,観客から盛大な拍手が贈られました。

画像

画像

tcnksmさん「コマンドラインツールについて語るときに僕の語ること」

「CLIツールにもUI/UXが存在する」という言葉が印象に残る「コマンドラインツールを作るときの注意点/意識している点」というタイトルの@deeeetさんの発表です。

世の中のCLIツールには良いツールとそうでないツールがあり,それらの違いは単純で,その単純な約束を守っているかいないかであると言います。これらの7つの約束はスライドをご覧ください。

発表では,特に次の4つの点で「自動化」⁠ユーザの利便性」⁠メンテナンス性」を重要視していると感じる内容でした。

  • 1) よく使われているCLIの慣習に合わせる
  • 2) cronなど他のスクリプトから利用された後でわからなくならないようにロングオプションを用意する
  • 3) README -> USAGE -> MANPAGEという順に利用頻度に合わせたドキュメントを用意する
  • 4) 適切なデフォルト値を持ち,設定もできるようにする

7つの約束を紹介した上で,実際にツールを作る際に行っている方法も紹介しました。⁠ツールがほしい!」という初期衝動が発生してから,まずはREADME(注:GitHubのリポジトリを開くと見ることができる最初のドキュメント)を書き始める「RDD(README Driven Development)⁠ を実践しているそうです。この方法のメリットはドキュメントを書くことで,⁠なにを実現するものなのか」⁠どのような使い方(インターフェイス)をするのか」など,開発者目線ではなく利用者目線で整理することが可能になり,それによって「なんとなくツールを作っているうちに機能が増えてしまう」⁠ほんとに欲しかった機能がなくなってしまう」⁠使い方が複雑になってしまう」などを抑制する効果があるそうです。また,ツールを作ったことで満足してしまいREADMEを書かずに放置してしまいがちな状況を,最もテンションが高い時に書くことで抑制することができると述べていました。

最後にご自身が作った「cli-init」⁠ghr」とgolangのクロスコンパイラである「gox」というツールを使い,GitHubにアップするところまでのデモを行いました。

私自身ツールを作ることも多いので,ためになる話を聞くことができました。

画像

画像

Atsushi Katoさん「継続的翻訳活動をささえる技術」

Atsushi Katoさんの発表です。まず始めに,2002年頃からのJapanized Perl Resources Project(JPRP)などで行っている翻訳活動について,活動グラフを交えて紹介しました。そもそもKatoさんが翻訳活動を始めったきっかけは,Perlが好き,英語の勉強になる,好きなモジュールの紹介したい,仕事がキツいと他所事をしたくなるという理由だと言います。特に2013年はよく翻訳活動に勤しんだ(=仕事がキツかった)と述べていました。最近は余所事すらしづらいぐらい,忙しいとのことです。

次に,実際にPerlの翻訳活動で何が大変なのかという点を紹介しました。CPANからのファイルの取得,ファイルの展開,ソースコードからのPodの取得,メタファイルなど,翻訳をしたいという目的だけを考えると,そもそも翻訳作業に行き着くところに大変な手間がるそうです。他にもディレクトリ構造,Perlのソースダウンロード,コアモジュールかそうでないか,更新への追随等も大変だと言います。これらの問題に対応するために,2010年あたりからtranを開発していることを紹介しました。tranを使った翻訳のワークフローを取り上げて,更新の際のmergeの仕方や,内部構造で最初はCPANを使用していたが今はMetaCPANのAPIを使用しているということなどを説明しました。

最後にデモの他,VCSへ勝手にコミットする機能やメール送信等の機能といったTODOを挙げていました。

画像

画像

Kentaro Kuribayashiさん「いろんな言語を適材適所で使おう」

HUBで飲み過ぎてしまい,若干酔っ払っている状態という,GMOペパボのあんちぽくんさん(@kentaro)の発表です。

まず,Webアプリケーションに要求される水準はますます高まっていくばかりですが,技術は一旦選択してしまうとなかなか変えることができないという問題意識があります。プログラミング言語などの技術はいろいろな選択肢がありますが,どういう基準で選んでいるか議論したいとのことでした。また,選択の目的は,ユーザーに提供する価値を最大化することと継続的に高い価値を提供することだそうです。

適切な言語を選択するために必要なことを言語の決定要因,決定要因に基づく評価,変化への技術的対応,組織能力を涵養する,という4点に分けて説明しました。

言語の決定要因としては,言語自体の特性,コミュニティ,エコシステムの3つの評価軸を挙げ,それらに応じて決定要因に基づく評価を行うそうです。決定要因に基づく評価では,継続的に価値を提供しなければならないため,撤退オプションも考えておくことが重要だと指摘しました。変化への技術的適応として,Microservicesを例にあげ,不確実性に対して,分散化(ポートフォリオ化)で対応することの重要さを説明していました。

組織を涵養するという話では,変化への組織的対応について説明し,組織能力には,組織が技術を受け入れるための能力と,技術やコミュニティへの影響を及ぼすことができる能力の2軸があることを紹介しました。特に,直接自分たちが使っている言語に影響力を及ぼすため,新人研修で求められるスキル水準まで伸ばすことや,OSSアクティヴィストが大事だそうです。

最後に,技術選択はシステムがユーザに提供する価値を最大化することが目的で,選択には3つの評価軸があり,ある時点で確定することはなく,時間の経過と共に何度でも選択を行うことと,将来は見えないため技術的分散,変化に対応でき,技術に影響を及ぼすことができる組織能力が大事だと述べ,話をまとめていました。

画像

画像

著者プロフィール

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

京都府京都市出身のプログラマ。仕事では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

コメント

コメントの記入