見出し画像

OSS X Users Meeting #31「オープンソースプロジェクトを支える言語たち」

2021年8月25日に「OSS X Users Meeting #31」を開催しました。 当日は約450名の方々にご参加いただき、誠にありがとうございました。

<OSS X Users Meeting> は、2012年にSCSK R&Dセンターが中心となり「OSSユーザーのための勉強会」として発足したもので、「旬な、注目の OSS」をテーマに開発コミュニティの当事者とこれからOSS を学びたい人との交流・相互理解を通じ、 共に見識を高めるための勉強会&セミナーイベントです。 31回目の開催となる今回は、『オープンソースプロジェクトを支える言語たち』と題し、プログラミング言語 Rubyの“生みの親”である まつもとゆきひろ氏や、日本最大のJavaユーザーグループ代表 谷本心氏、世界最大規模のPythonカンファレンスPyCon JP主催 鈴木たかのり氏といった第一人者の方々に講演いただきました。


開会、ご挨拶

まず開会にあたり、早稲田大学 理工学術院総合研究所 研究院教授の吉岡信和氏にご挨拶をいただきました。

「本日のテーマは言語です。今回、お話しいただくJavaやRubyは、私の学生時代に新たな言語として登場してきたもので、中身を見たり、プログラム解析をしたり、最先端の開発を行ったりとさまざまなかたちで活用してきました。その最先端のお話が聞けるということで、私自身、非常に楽しみにしております」(吉岡氏)

改めて学ぶオープンソースの秘密

一般財団法人
Rubyアソシエーション代表理事
まつもと ゆきひろ氏

第1セッションは、「改めて学ぶオープンソースの秘密」をテーマに、一般財団法人Rubyアソシエーション代表理事で、Ruby言語の“生みの親”である、まつもと ゆきひろ氏にご登壇いただきました。

「かつてプログラミング言語は商品で、FortranやCOBOLなどを利用する際にはコンパイラを購入する必要があり、そうした時代が長く続きました。その後、フリーソフトウェアが登場。1980年代の半ばにはフリーソフトウェア運動が起こりました」

リチャード・ストールマンがソフトウェアは自由であるべきと宣言、実行する自由、(ソートコードを含めて)学ぶ自由、(必要に応じて)改変する自由、再配布する自由を唱えました。それを保証するため、GPL(General Public License)の仕組みを考案したのです。以後、フリーソフトウェアのプログラミング言語は増加の一途をたどり、中でも1995年はJava、Ruby、PHPなどが登場。フリー言語の当たり年と言われました。

「インターネットの一般化も1990年代半ばから始まっており、こうした世の中の変化のタイミングに合わせて登場した言語が今でも生き残っているようです」

そして1998年には、オープンソースという言葉が誕生。その背景にはブラウザ戦争があったといいます。当時覇権を争っていたブラウザのうち、Internet ExplorerはOSの付属でしたが、Netscapeは有償で不利な立場にありました。そこで苦肉の策として、ネットスケープ社はブラウザをフリーソフトウェア化したのです。

「フリーソフトはビジネスと距離を置くものではありません。むしろビジネスに活用することを目的にしていた人が数多くいたため、オープンソース・ソフトウェア(OSS)が生まれたのです」

現在のインターネットはOSSに依存しており、OSSなしに社会は存続できないといっても過言ではありません。ソフトウェア業界においても、フリーソフトも含めたプログラミング言語が果たした役割は大ですが、最近ではオープンソースの限界も見えてきたといいます。

例えば、Elasticsearch、MongoDBという元OSSの存在です。これらをクラウドサービスのトップ企業が自社サービスに採用したことで、開発元企業のビジネスが成り立たなくなってしまいました。そこで、自社と競合するサービスへの利用を禁止したのですが、これはOSSの定義に反するものです。

「開発元の『生活』を保障しつつ、OSSを維持するにはどうすればよいのかは、今後の大きな課題として考えていかなければなりません。ソフトウェアは社会の変化をドライブしてきました。プログラムとはそういうことであり、使うにしろ、貢献するにしろ、支援するにしろ、オープンソースに関わることで、より良い世界をつくる仲間として、皆さんと共に働いていきたいと思います」

改めて学ぶオープンソースの秘密:セッション資料 
:セッション動画 

オープン化が進むC++の現状と展望

cpprefjp(C++)
コミュニティ コアメンバ
高橋 晶氏

第2セッションには、cpprefjp(C++)コミュニティ コアメンバの高橋 晶氏が登壇、「オープン化が進むC++の現状と展望」をテーマに講演いただきました。

「C++はオープンソースではなくISOで標準化されている言語ですが、今ではオープンソースの影響を受けて、標準C++の策定作業が徐々にオープン化してきています」

C++も、2011年のC++11策定までは標準化のメーリングリストがクローズドで、標準化委員会のメンバーしかアクセスを許されず、一般ユーザーは議論への参加が不可能。決定したものを追いかけるしかなかったといいます。しかしC++14以降は、標準化委員会がオープンソース開発者に標準化への参加を依頼しはじめ、メーリングリストもオープン化。誰もが議論に参加できるようになりました。

「オープン化により新機能の提案ができるようになり、分野ごとに20を超える専門グループも作られ、議論が活発化。ハンドリングしきれないほど多くの新しい提案が行われるなど、言語の進化は大幅に加速しています」

オープンソースとの関係では、変わりやすい最新のライブラリとその設計の知見をいかに共有していくか、母国語情報をどう増やすか、ボランティア開発者へのインセンティブをどうするかが今後の課題だと言います。

「C++が活躍する場も変化しています。C++の仕事がなくなったという話も聞きますが、それは活躍するシーンが変化したことによるもの。これは問題ではなく正当な進歩です。これからも必要とされる領域は確実に存在します」

たとえばC++が真に必要になる領域として、高速化のためのバックエンドがあります。近年はフロントエンドには使いやすい (スクリプト) 言語を使い、バックエンドにC++がいるという開発が増えています。他にも、大規模計算・シミュレーション、エッジデバイス上のアプリケーションなどがあります。

「こうした用途の変化に対してどう向き合うべきかですが、道具によって仕事を選ぶよりは、仕事によって道具を選ぶべきです。特定言語に固執せず、いろいろな言語を学び、状況に応じて適切な言語を選択することを推奨します」

オープン化が進むC++の現状と展望:セッション資料 
:セッション動画 

Pythonの現在とこれからと


一般社団法人
PyCon JP Association 副代表理事
鈴木 たかのり氏

第3セッションでは「Pythonの現在とこれからと」をテーマに、一般社団法人PyCon JP Association 副代表理事の鈴木 たかのり氏に講演いただきました。

Pythonは1991年にリリース(バージョン0.9)されてから、現在の最新バージョン3.9.6に至るまで30年経っていますが、現在も開発が活発に続けられています。

「Pythonの特徴は、インデントが構文であるため読みやすいこと、PEP8というコーディング規約があること、後方互換性を維持していることなどがあり、標準およびサードパーティの豊富なライブラリが揃っているため、自分の作りたいものを作っていける環境が整っています。旬なPythonのプロジェクトとしては、FastAPI『API構築のための高速なWebフレームワーク』、JupyterLab『Webベースのプログラムの対話型実行環境』、PyCaret『ローコードのMLライブラリ』、AWS CLI / Google Cloud SDKなどがあります」

Pythonの拡張はPEP(Python Enhancement Proposal)で提案され、かつてBDFLが採用/不採用を決定していましたが、2018年に大きく運営方針が変わりました。現在では、毎年5名のCouncil membersを投票で決め、そのメンバーが提案の採用/不採用を決定しています。

Python言語のアップデートですが、2021年10月に3.10.0がリリース予定で、今後は年1回マイナーバージョンが上がります。また、3.N.0リリースから5年間サポートが続きます。3.10の主な新機能としては、エラーメッセージがわかりやすくなったこと、 構造的パターンマッチング(Structual Pattern Matching)の導入などがあります。

「Python 4はいつ出るのと聞かれますが、現在その計画はなく、3.11、3.12と続いていくようです。また、3から4への移行は、2から3の時のように後方互換性を損ねるようなことはしないと聞いています」

今後の動向で注目されているのが、Pythonの高速化です。

「PyCon US 2021のLanuguage Summitで発表された『Shannon Plan』によると、4年で5倍の高速化(1年で1.5倍)を目指しており、そのための資金調達も検討中です。Pythonのリリースから約30年が経過しましたが、運営の体制は維持されています。現在も少しずつ改良されており、今後の高速化にも期待しています」

Pythonの現在とこれからと:セッション資料 
:セッション動画 

26 Java Years - これが今のJavaだ!

日本Javaユーザーグループ代表
谷本 心氏

第4セッションでは、「26 Java Years - これが今のJavaだ!」をテーマに、日本Javaユーザーグループ代表の谷本 心氏に講演いただきました。

「Javaのイメージは固い、古い、ダサいなどと言われています。確かにエンタープライズ系での採用が多いということはありますが、PythonやC++より誕生は後で、後方互換性も保ち続けています。仕様策定には多くの企業・団体の合意が必要なため、新機能の実装は他言語より時間がかかりますが、その分、堅牢で特定ベンダーのロックインを避けられるというメリットがあります」

谷本氏がいうようにJavaはエンタープライズ系での採用が多いものの、OSSと共に歩んできた言語です。現在はJava自体がOSS化。複数の企業や団体からOSS版のJDK(開発キット)が提供されており、エコシステムが成熟している言語の一つです。実際、主流となったOSSプロジェクトが、Javaの標準機能として取り込まれる流れが生まれました。

一方で、その四半世紀の歴史の中では何度か問題も発生しています。サン・マイクロシスムズがJava的なものをJavaとは認めないとしたApache Harmony事件、android事件およびオラクルによるGoogle訴訟事件などは有名です。こうした流れを経て、各種OSS Javaプロジェクトが合流。現在はOpen JDKが唯一のOSS版Javaとなっています。

最近の大きなトピックは「有償化? 問題」です。その背景には、2017年のJava 9以降、従来の2~3年ごとのリリースから、半年ごとのリリースにサイクルが変わったことがあります。合わせて、オラクルがOracle JDKの無償配布を終了し、Open JDKのみを提供すると方針を変更。そのサポート期間を次のバージョンが出る半年先までとしたことで、有償のOracle JDKを購入しないとサポートが受けられないと考えたユーザーから、Javaの有償化ではないかという誤解を招きました。

「しかし実際は、各社からOpen JDKのビルドが提供されるようになりました。これらのOpen JDKでは、3年ごとに出るバージョンにLTS(Long Term Support)を提供しています。無償サポート期間はまちまちですが、かなり長期間のサポートが付くものもあります。そのため現在は、各社が提供するOpen JDKを、利用環境に合わせて利用することが主流になりました。元のOpen JDKは同一で、各社とも99%は同じ。コア機能も100%同一です。機能追加も高速化していますし、Javaは引き続き安心して使い続けることができると思います」

26 Java Years – これが今のJavaだ!:セッション資料 
:セッション動画 

エコシステムとWebAssembly

WebAssembly Night、Rust.Tokyo主催
chikoski氏

最終セッションには、WebAssembly Night、Rust.Tokyo 主催のchikoski氏が登壇、「エコシステムとWebAssembly」をテーマに講演いただきました。

「WebAssembly(Wasm)は、C言語やRustといった高水準のプログラミング言語ではなく、CやRustなどをコンパイルしてつくるバイナリファイルの一種です。あえて近いものをあげればJavaで、JavaVMの仕様に近い立ち位置になります。最初に実装されたのは2016年とかなり新しい“言語”で、背景には、Webブラウザ上で動くプログラムをJavaScript以外で作りたいというニーズから誕生しました」

よってWebAssemblyの最初の用途は、Webブラウザ上で既存のアプリを動かすことでした。例えば、AutoCADをアッセンブリしてWebブラウザに移行する、AcrobatをWebブラウザ上で動かすなどの例が有名です。2020年には、ZoomがWebAssemblyを使って機能の一部をアッセンブリしました。これにより、Google chrome上でアプリ版とそん色なく動作するようになっています。最近では、サーバーレス環境での使用も増えており、オープンソースのコンテナオーケストレーションKubernetes上で稼働するWasmの実行環境などもあります。

Wasmをめぐる注目のキーワードに、パフォーマンスとエコシステムがあります。

「パフォーマンスは、JavaScriptよりも高速と言われています。ただし、Webブラウザ自体の機能を呼び出して使用する方が高速化には役立つので、単純な速度比較はあまり意味を持ちません。むしろ、安定して一定以上のパフォーマンスを発揮できる点にメリットがあります。パフォーマンス以上に期待を集めているのがエコシステムです。Wasmはコンパイルして使用するため、コンパイル元の言語が持つエコシステムをそのまま活用できるという大きなメリットがあります」

また最近では、既存資産をサーバーレス環境などへ移行する際に、javaScriptでまるまる書き直すのではなく、少ない工数で移行できる点に期待し採用する例が目立ちます。こうしたメリットに着目し、プラグインとしてWasmを活用するケースも増えています。

「プラグインシステムにWasmを採用すると、さまざまなユースケースに対応することができます。また、サンドボックス化によって安全性を確保できる上、馴染みの言語が使用できるため新たに学び直す必要がなく、既存資産の移行も容易に行うことができます。こうした点からも、エコシステムの面で有利になりつつあると言えるでしょう」

プラグインとしてのWebAssembly:セッション資料 

閉会、ご挨拶

イベントの最後にSCSK R&Dセンター センター長の杉坂浩一より閉会の挨拶をさせていただきました。

「オープンソースを扱う以上、言語は避けて通れません。よって言語をしっかり追いかけていくことが不可欠だと思っています。変化の激しいコンピュータ業界の中にあって、言語は容易に普及しない代わりに、簡単に無くなることもありません。一方で、その現状に甘んじることなく、新しい技術や方向性を身につけるためにも、新しい言語に取り組んでいただければと思います」

31回目の開催となった「OSS X Users Meeting」ですが、オンラインでたくさんの方にご参加いただくことができました。次回も皆さまの参加を心よりお待ちしております。

セッション中に記録された グラフィックレコーディング