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

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

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

「YAPC::Asia Tokyo 2013 特別座談会 「Rubyの良いところ語ってください ~そんなPerlで大丈夫か?~」

Rubyから良い所を盗む,RubyのひとにもPerlに触れてもらおうテーマで,伊藤直也氏司会のもとRuby界の重鎮の方々を招いての座談会でした。

登壇者紹介

  • 卜部氏(@shyouhei) ⁠個人として来ました。Rubyのコアコミッタです。」
  • 舘野氏(@secondlife) ⁠はてなにはいって一週間でRuby使ったといわれましたが,ただしくは一ヶ月後です。」
  • 増井氏(@masuidrive) ⁠風呂の人,IKEAの人です。」
  • 松野氏(@tokuhirom) ⁠Perlは詳しい方だと思います。Amon2などCPANモジュールを多数開発しています。」

言語の比較

まずは言語そのものについての話題からです。なぜRuby(Perl)を始めたかや好き(嫌い)なところ,言語自体の生産性について話し合われました。

─⁠─ はじめたきっかけ

増井氏「Perlはバージョン4ぐらいのときに使っていました。オブジェクト指向をやりたくてJavaを始めたが,すぐ嫌になってRubyを始めました」

卜部氏「現在は仕事でPerlを使っています。Rubyは2003年頃のブログブームでtDiaryのプラグインを書くところから始めました。コミッタになったのは不満があってパッチを送っていたらなりました。」

舘野氏「tDiaryから。Railsコミュニティのエコシステムがよかった。Rubyは趣味で,自分の考えたことがすんなり表現できるのが気に入っています。」

松野氏「15からRuby/Pythonをやっていました。LLの実行委員をやっていたら誘われて仕事でPerlをつかうようになりました。Blog Hacksが面白かったことや,いろんな言語を触ってみたかったというのもあります。」

─⁠─ 具体的にRubyの好きなところは?

舘野氏「標準ライブラリのセンスの良さがいい。ArrayとかHashとか。Perlでもやろうと思えばできますが,探してこなければいけない分学習コストが高いと感じます。」

卜部氏「Perlは最近はじめました。今日はあえて差分について話しますが,PerlとRubyは似ているところが多く,差分に関してナーバスになる必要はないと思います。Rubyにあるのは未来。Rubyはプログラマに対して押し付けがましい言語です。Hashのキーワード引数は昔からありましたが,これは推奨されるべきものだと思ったのでRuby2.0では文法にしました。Rubyは世界を変えることに積極的で,そのために言語を変更します。後方互換性を重んじるPerlはそういうことはやらないイメージです。」

増井氏「Rubyは肌にあいました。Rubyは処理系の実装が多く,組込み向けにmrubyなどもあります。Perlにはあまり無い?」

松野氏「PerlでもgoccyさんのPerlMotionのような動きはあります。Perl6の実装はバリエーションはありますがどれも…(会場笑⁠⁠。Perlの文法が複雑なのが問題なのかもしれません」

増井氏「Rubyも昔は他の処理系がでないと思われていましたが今は増えてきています」

─⁠─ 言語を変えて生産性はかわるか?

増井氏「変わると思います。一つに集中している間はいいですが,スイッチすると効率が落ちます。個人的にはPHPは引数の順番など覚えることが多くて辛いです。肌に会うのが一番だと思います。ただRuby検定は落ちました(笑⁠⁠」

卜部氏「適材適所だと思います。場合によってはcapistranoにコマンドを並べるよりシェルスクリプトの方が簡単だと思うなど。生産性を考えるのであれば最適な言語を選ぶことが重要です。」

─⁠─ Webアプリで比べた場合は?

卜部氏「わかりませんが,ツールによる差よりもプログラマのスキル差の方が大きいと思います。」

舘野氏「Webアプリを作れと言われた場合,Rubyの場合はツールがそろっているので大多数の人には生産性が高いと思います。ハッカーでなんでも自分で作ってしまう人は違うかもしれません。」

松野氏「言語レベルでいうと生産性の違いはたいして無いと思います。ライブラリの充実度,たとえば行列計算ならPythonなどそういった点が大きい。Perlでは自分がほしい機能はたいてい自分でつくってしまっています。」

フレームワークやライブラリ

─⁠─ Rubyの良いツール・ライブラリは?

舘野氏「Rails,capistorano,bundler。githubが登場してからWebでのコミュニティが発達してきて,使う側としては非常に探しやすいです。」

卜部氏「自分自身はあまり感じたことは無いですが,周りに聞くとRails以前から使っている人が多いです。Rubyにはスレッドがあると言っていた人がいます。」

増井氏「Rails以前から使っていましたが,本格的に仕事で使い始めたのはRails以降。HerokuやNew Relicなどビジネスになってきたのが大きいと思います。SAASなどはRubyが最初にサポートされるものが多いです。」

─⁠─ Perlとビジネスの現状は

松野氏「Heroku,DotCloudぐらいしか使えるところがなく,サポートの流れがよくないです。」

増井氏「もともとRubyの人がビジネスを始めている印象です。」

Perlの場合はコミュニティが先導して切り開いているが,Rubyの場合ははじめからビジネスとして動いている印象とのことでした。

エコシステム

─⁠─ CPAN vs rubygems

舘野氏「github以前はイマイチでしたが,githubができてからエコシステムがまわりまじめました」

卜部氏「RailsはSVNでしたがgithubに移行しました。新しいモノ好きが多き気がします。その分旧いバグチケットが放置されていたりもしますが…。」

松野氏「CPANにRTとかありますが,最近はgithubにモジュールを置いている人も多いです。」

増井氏「githubによりコードとコミュニケーションの距離が近づきました。コードにコメントが書けたり。それがライブラリの開発速度を高めていると思います。」

松野氏「その点PerlはCPANがよくできていたのでgithubに移行する必要性が低かったのはあるかもしれません。」

─⁠─ 使おうとしているツールがRubyばっかりだったりするのですが,DevOpsとの関わりは?

舘野氏「仕事として使う人が増えてきたのでツールがRubyになっているのでは。」

増井氏「一昔前まではRubyをサーバに入れるというと嫌がられましたが,Perlはどこでも入っているので5年前にDevOpsツールがつくられていたらPerlばかりになていたように思います。」

コミュニティについて

卜部氏「コミッタのコミュニティはPerlにはないですね。Rubyは比較的簡単にコミット権をもらえます。開発者コミュニティ・地域コミュニティにふらっとコミッタがあらわれたりします。」

増井氏「Seattle.rbは日本人にやさしいです。matzさんを中心にしたコミュニティがアプリ開発者側にもあるように感じます。」

松野氏「Perlには日本人のコミッタはほとんどいないし,言語コミッタを優遇する文化もあまりないですが,CPAN authorに感謝する文化があります。」

卜部氏「コミュニティというのはふわっとしているもので,Ruby会議にきているYAPC参加者もたくさんいると思います。所属しているコミュニティを自分で思うのは自由ですが,他を排斥すべきではないと思います。」

Perlリスク論について

最後のテーマはすこし前にブログで話題になったPerlリスク論について,それぞれどう思うか,その上で何を学ぶべきかというテーマでした。

卜部氏「Rubyは今は盛り上がっていますが,10年後20年後は衰退していくであろうと思っています。Rubyにこだわるのはよくないです。ゴールはプログラミングを良くすること。Perlが衰退しているとかはどうでもいいです。」

舘野氏「これから先もRuby/Railsを使い続けるのかと聞かれますが,それは現在生産性が高いと判断して使っているだけです。5年後10年後によりよいものがでてきたときに移る決断ができるか。Perlコミュニティは他のものから学ぶ文化が強くて,宮川さんがRubyのbundlerを参考にしてcartonを作っているとか,そういったところが重要です。そういう人はどこにいっても活躍できると思います。」

松野氏「自分が始めた7,8年前からいわれていることで今更感があります。プログラミング言語は仕事をする上での一要素でしかないので,そこを取り替えられたぐらいで役に立たないエンジニアにならないことです。」

Perlリスク論に対してPerlでもできるよといって反論するのもひとつのやり方ですが,他の世界をみて学び続けていきましょうと締めくくりました。

質疑応答

Q. Perlは性能が良くて楽でしたがRubyは遅いイメージがあります。性能面での苦労はないですか?

A. 舘野氏「一般的なWebアプリだとI/Oが支配的なのでRubyとPerlでは差がでないです。数十台程度のサーバ数差ならコスト的な負担も小さいです。Ruby2.0でかなり速度もあがりました。」

A. 卜部氏「GCの速度を速くしてくれというのは言われています。チューニングができないのが課題です。」

A. 増井氏「そういった点もあるので実装が多数生まれている面もあるかと思います。」

Q. FreeBSDのRubyバージョンを1.9にあげたらいろいろ壊れて困ったのですが,バージョンを上げるとここが壊れるとかのチェックはしてないのでしょうか?

A. 卜部氏「なにもしていません。いろいろなものが壊れるのはわかってやっています。これから書くことを楽しくすることを重視しています。」

A. 舘野氏「Ruby1.9.3から2.0は簡単にあげられました。最近はバージョンアップしやすくなっています。コストを払っても将来の新しいものを取り込めたほうがトータルでプラスになると判断しています。」

画像

画像

画像

画像

Daisuke Muraseさん「Emacs実践入門 Perl編」

Daisuke Muraseさんは「Emacsの実践入門」をテーマに話しました。

最初は,Emacsのインストール方法とサンプルのダウンロードの紹介から始まり,インストール方法,キーバインドの説明,設定ファイルの場所からel-get, exec-path, heml, perl-completion, flymake,quickrun, heml-projectといったおすすめの詳細設定を解説しました。特にキーバインド周りは面と向かってテンポ良く説明があり,とてもわかりやすかったので,Emacsの入門を考えられている方におすすめのセッションでした。

画像

画像

Toshinori Satoさん「Perlでレコメンデーション」

Toshinori Satoさんは「Perlでレコメンデーション」をテーマに話しました。

前半は初心者向けに,レコメンデーションを「ユーザーが価値を感じそうな情報を提供すること」と説明し,その実現方法や必要な道具,実例などを紹介しました。

後半は,ユーザーの価値観にどう近づくのかという話しを行い,⁠バイヤーの作るリスト」を例に出されて説明したり,ルールベース,コンテンツベース,協調フィルタリングといった様々手法や実際にPerlで処理をするために用いることのできるモジュールの紹介,Jubatusというツールを説明しました。

最後に手法は様々あるがユーザーに取って価値がある情報を提供できることが重要であるとまとめていました。

画像

画像

Daisuke Makiさん「本当にあったレガシーな話」

Daisuke Makiさんは10周年を迎えたlivedoor blogをレガシーな環境から環境改善させていく「本当にあったレガシーな話」というテーマで話しました。

最初にperlのバージョンを上げる,パッケージングをcartonにする,mod_perlから脱却する,将来の変更を妨げになりそうなものを排除すると行った目標をかかげたと言います。そして,現状の分析とどの作業から手をつけるのかという話からはじまり,実際に修正していく過程で,ログの重要性の説明と追加,特定の環境(mod_perl)への依存性の排除,perlのバージョンアップとcartonの導入,SledgePSGIなどを話しました。

また,実際に本番へ投入される際に起こった問題点などにも言及し,レガシーコードとの戦いの困難さが感じ取れました。

最後に自分たちの望むスタート地点に立てたことのメリットと,大規模なクラスタリングや完全自動テストなど将来への展望を述べていました。

画像

画像

著者プロフィール

東聡志(あずまさとし)

北海道函館市出身。都内大手IT企業でプログラマーとして勤務。Perl Beginnersという勉強会を主催。 最近では,麻疹にかかったようにWAFのようなものを書いている。

Twitter:@ytnobody
Web:http://ytnobody.net/


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

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

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


川上大喜(かわかみたいき)

北海道函館市出身,Hachioji.pm所属。大学院在籍の傍らアルバイトとしてソフトウェア開発に従事。ここ最近の趣味はVimプラグイン開発とChrome拡張開発。今年から始まる就活のことを考えると胸が締めつけられる。

Twitter:@moznion
Web:http://moznion.hatenadiary.com/


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

神奈川県在住。本業はプログラマーではないが,心はプログラマー。仕事でもプライベートでもプログラミングをする日々。 長くPerlを愛用している他,ここ数年はPerl 6にも挑戦している。

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


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

北海道苫小牧市出身のプログラマー。好みの言語はPerlやPython, Haskell, Scala, Objective-Cなど。在学中は数学を専攻しており,今でも余暇を利用して数学を嗜む。現在はFreakOutに在籍し,自社システムの開発に力を入れている。

共訳書に「実用Git」(オライリー・ジャパン),共著書に「FFmpegで作る動画共有サイト」(毎日コミュニケーションズ)がある。

Twitter:@hiratara
Web:http://d.hatena.ne.jp/hiratara/


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

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

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


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

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

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