YAPCレポート(2):PerlコミュニティにとってScalaやSwiftが意味するものは? #yapcasia

渋谷のウェブ企業でWebエンジニアをやっている、@siedieと申します。Perlを始めてまだ半年で、今回のYAPCが初参加ですが、YAPCのレポートをさせていただきます。ちなみに好きな言語はHaskellです。これは「YAPC::Asia Tokyoレポート(1):1300人超が参加したYAPC、他言語トークがアツかった」に続くレポート第2弾です。

001

はてなのScala利用、コンパイル時間の長さが新たな課題?

ほぼ全てのプロダクトでPerlを使ってきた、はてなで、新規プロダクトにScalaを導入した事例を@hakobeさんが紹介していました。

Perlは「新しいものを高速に創り出せる言語」ではあるものの、誤った型の引数指定や、変数名の変更によるエラーなど、予期していない所での問題が比較的発生しやすいです。そのため、ソフトウェアが大規模化した場合に、安全にソフトウェアを進化させていくことが難しいと感じていたようです。そのような問題をコンピュータによるチェックで防ぐため、表現力豊かな静的型システムと型推論を持ったScalaを新規プロジェクトで採用しています。Scalaの導入によって、変数名や関数シグネチャの変更漏れがないことが保証されたものの、新たな課題としてコンパイル時間が長いことが挙げられていました(フルコンパイルでは数分かかるようです)。

プロジェクトの立ち上げ時には高速に開発できる生産的な言語を使い、ソフトウェア規模が大きい場合は安全性をある程度担保できる堅牢な言語が好まれるかと思いますが、近年は型推論のおかげで堅牢な言語でも簡便な書き方が出来るようになってきており、Scalaのような言語を導入する事例が今後増えていくのではないかと想像します。コンパイル時間がボトルネックとなるため、今後はコンパイルしてもしなくても動く言語が出てくるのではないかと、妄想が膨らむトークでした。

Swift登場に見る、プログラミング言語の人気とOSSのトレンド

Appleが新たにリリースした注目の言語「Swift」について、Perl界の著名人、 @dankogaiさんが発表するセッションもありました。

前半はFizzBuzz問題を用いたデモとチュートリアルで、Swiftが持っているコンパイル言語の利点と、スクリプト言語のような簡便さが紹介されました。後半では「the Sunset of Our Culture?」というテーマで、オープンソースコミュニティによってボトムアップ的に作られてきた言語(Perl、PHP、Rubyなど)よりも、企業によって提供された言語(Java、JavaScript、Go、Swiftなど)の方が近年は伸びているという指摘もありました。

002その1つの要因として、世のエンジニアの仕事を創出している企業が提供している言語である、ということが挙げられています。

近年はスマートデバイス向けソフトウェア需要が高まっており、デバイス作製元の企業の言語が強くなることは確かに自然に思われます。

Perlはデフォルトで Macに入っているから、Swift(Xcode付属)よりも人気がある!というジョークを飛ばしつつも、「mind the mindshare and mindshift」という言葉で締めくくられていました。

企業から出てくる新しいデバイスに対しては後手に回ってしまうのは仕方ないため、今後、企業のデバイスに対抗できるくらいの品質を持ったオープンソースハードウェアが出てくると、コミュニティベースのプログラミング言語が先手を取ることができるかもしれません。今年のYAPC::Asiaでは、Raspberry PiやArduinoを使ったローレベルプログラミングのトークもあり、今後の発展がますます期待できそうです。

オープンソースの開発現場

Perlに関数シグネチャを導入するために戦ったPeter Martini氏とPerlコミュニティの間の論争についての、@lestrratさんによるトークでした。Perlへの関数シグネチャの導入は過去にも何度も試みられてきたようですが、実装がなかなか難しいらしく、今年5月にリリースされたPerl 5.20.0で初めて導入されました。この機能の開発期間はなんと2年強(議論の期間を含む)で、時間がかかった1つの要因がp5pというPerlのメーリングリスト上での(時に非生産的な)議論だったようです。p5pに限らず、OSSコミュニティでは多かれ少なかれ、細かい部分へのツッコミや話の脱線によって、開発者のやる気が削がれて開発が頓挫することがあります。特に、Perl5では後方互換性を厳格に重んじるためか、さまざまな懸念が提案され、例えば、Perl 5.0(20年前に作られた)インタプリタでも動くことが要請されたりもしたそうです。

slide_top

Perl5は歴史が長くて民主主義的な側面が強く、言語の進化速度はどうしても遅くなりがちです。一方、そのおかげで10年前のプロダクトでも簡単にPerlをアップグレードできるほど後方互換性が保たれているようです。また、オープンソースコミュニティでうまくやっていくには、自分のやりたいことのプライオリティをはっきりさせ、ネガティブな意見はうまく流すことが必要であるとのことでした。

Perlコミュニティはオープンソースコミュニティの中でも長い歴史を持っており、その中で培われた知見は他のコミュニティにとっても有用なものかと思います。Perl5に限って言えば、様々なトークでその後方互換性の高さが強調されており、それ故、言語の進歩が遅くなっている印象を受けました。その状況を打破しうるのがメジャーバージョンアップであると思うのですが、今回はPerl6やPerl7のトークは見受けられませんでした。

まとめ

YAPC::AsiaはPerlに限らず幅広い分野のトピックを取り扱っており、Perlを普段使っていない方でも楽しめるカンファレンスとなっていました。

また、長い歴史を持ったコミュニティ内で育まれてきた思想の片鱗がトークの端々に感じられたことも、今後の自身の開発者としてのあり方を考える上で参考とできそうです。

レポート/@siedie