インフラとアプリを同時にコーディングできる新言語、Winglangを紹介

2023年8月1日(火)
松下 康之 - Yasuyuki Matsushita
クラウドに特化したプログラミング言語Winglangとは?

クラウドコンピューティング、特にパブリッククラウドの隆盛によって素早くコードを開発して実装、修正が必要になら即座にコードを修正し、短時間で本番環境に反映させることが可能になった。開発部門から運用部門までの組織の壁を壊し、一気通貫でソフトウェア開発から運用までを自動化することも、DevOpsという名称とともに知られるようになっている。しかし開発チームはJavaを使いビジネスロジックを実装、運用チームが用意したインフラストラクチャーに載せて運用という2層構造は変わっていないのが実情だ。

そんな構造を根底から変えようとする新しいプログラミング言語がイスラエルのベンチャーから現れた。そのプログラミング言語の名はWinglang、そしてそのベンチャーもWing Cloudという社名を冠してクラウドオリエンテッドな開発スタイルを実現しようとしている。今回はそのWinglangと、ライブラリーやコンソールなどを包括的に用意した抽象レイヤーであるWing Cloudを紹介する。

言語の紹介の前にWinglangを作ったエンジニアの略歴を紹介しよう。Wing CloudのCEOで共同創業者のElad Ben-Israel氏はイスラエル出身のエンジニアで、かつてはMicrosoftでBingの開発に従事し、その後、AWSではプリンシパルエンジニアとしてCloud Development Kit(CDK)の主な開発者として知られている。Ben-Israel氏は2022年4月にイスラエルでWing Cloudを立ち上げ、2023年7月にはシードファンディングとして2000万ドルを集めている。エンジェルインベスターとしてDatadog、HashiCorpなどのエグゼクティブからも投資を受けている注目の人物だ。

今回は「Quick Intro to Winglang」という動画の紹介と、Winglangのために用意されたドキュメントサイト、そしてチュートリアルを使って解説する。

まずは動画だが、これは2023年7月18日にWing Cloudのブログで紹介されたイントロダクションの動画である。以下のリンクから視聴して欲しい。

クラウドに最適化されたプログラミング言語、Winglangの紹介

クラウドに最適化されたプログラミング言語、Winglangの紹介

●動画:A quick introduction to Winglang

この動画では約15分という時間でWinglang、そしてその開発環境とコンソールなどを紹介している。

左がソースコード、右側には可視化されたモジュールなどが表示されている

左がソースコード、右側には可視化されたモジュールなどが表示されている

その前に、論理的にそれが何なのかを理解したいエンジニアのためにBen-Israel氏が2023年7月18日に公開したブログの記事を使って解説したい。

●Wing Cloudを発表するブログ記事:Announcing Wing Cloud

Winglangそのものも非常に先鋭的な言語ではあるが、何よりもWing Cloudという包括的なツール群によってその特徴が際立っていることを強調したい。ここでは「Unified programming and operational experience」と紹介されているが、プログラミングと実行及び運用環境が統合されていることが差別化の一つだ。

そしてWing Cloudの中核に存在するのが、Winglangというプログラミング言語であり、その他にさまざまなパブリッククラウドを抽象化するためのハイレベルのライブラリー、Wing Consoleと呼ばれる実行環境、さらにテストやデバッグを可能にするツール群などで構成されている。

上記ブログから。プログラミング言語とライブラリー、ツール群で構成されているWing Cloud

上記ブログから。プログラミング言語とライブラリー、ツール群で構成されているWing Cloud

プログラミング言語としてのWinglangはクラウドオリエンテッドなプログラミング言語であるとして分散コンピューティングの必要な要素、ストレージやキューなどをソースコードレベルで記述することができる。

「bring cloud;」から始まるコードサンプル

「bring cloud;」から始まるコードサンプル

ここではキューとデータストレージであるバケットを作り、そこにmyfileで始まりカウンターの数値を追加した名称のテキストファイルを生成し、バケットに保存するという手続きが記述されている。bring cloudという宣言でクラウドサービスを使うことが明示されている。さらに特徴的なのはinflightという記述だろう。これはランタイムに実行されることを示している。となればクラウドのインフラストラクチャー側の準備として、必然的に事前に実行される命令群が必要だ。それはpreflightというキーワードで定義される。以下はドキュメントサイトからの引用だが、バケットやキューの作成、データべースの生成などはすべてコンパイル時に実行されることになる。

PreflightとInflight

PreflightとInflight

それ以外の演算や条件分岐、ループなどはinflightとして実行時に処理される。コンセプトについては以下のドキュメントを参照して欲しい。

●InflightとPreflightのコンセプト:Preflight and Inflight

AWSなどのクラウドサービスを利用した経験があれば、バケットの作成などについて場合によっては高速に行われることもあるが、実際にはサービスプロバイダー側の都合に左右されてしまうことは経験済みだろう。そんな状況を避けるために、Winglangではローカルの開発環境を使ったシミュレーターが用意されている。

Wing Consoleとローカルで実行されるシミュレーター

Wing Consoleとローカルで実行されるシミュレーター

ここではコードの記述と即座に実行されるエラーチェック、そしてオブジェクトを可視化するコンソールが解説されている。これもドキュメントサイトからの引用だが、コードの記述から他のオブジェクトとの関係が可視化され、オブジェクトに対して内部のメソッドの実行やペイロードやログの確認などがローカルで可能な開発環境となっている。

ここまででプログラミング言語からクラウド側のリソースを包括的にコードとして記述できること、ローカルで実行、テストが可能なことまでは理解できただろうか。では実際にクラウド側のリソースを生成するために必要なのがコンパイル、つまりPreflightの実行によって実際に対象となるプラットフォームごとの記述を生成することが必要となる。つまりこのコンパイルプロセスにおいてTerraformやAWSのCDKのような構成情報が生成されることになる。

各パブリッククラウド向けのtfファイルが生成されるコンパイル処理

各パブリッククラウド向けのtfファイルが生成されるコンパイル処理

Wing compileというコマンドのオプションとしてAWS、GCP、Azureなどに対応したTerraformの構成ファイルやAWS CDKの構成ファイルなどが生成される。デフォルトはローカルのシミュレーターだ。実際にデモの中ではAWSのIAMのリソースが生成されていることを見せて、クラウドプロバイダーごとに環境設定が行われることが解説されている。

AWSのS3バケット用の構成情報が生成されていることがわかる

AWSのS3バケット用の構成情報が生成されていることがわかる

このユニークさを体感したいのであればチュートリアルが最適だ。

●参考:Step by StepでWingを学べるサイト:Learn Wing

このサイトでは実際にコードを記述してWing Consoleやオブジェクトの可視化を理解することを体験できる。少ないステップであるが、実際にコードの記述、オブジェクトの確認、エラーチェックなどを即座に体験することが可能だ。

またPlaygroundと称されたいわゆるHello Worldのデモサイトも公開されているので参考にして欲しい。

●参考:Wing Playground

また定期的に配信されるWingly Showという動画シリーズでは、Elad Ben-Israel氏やWing Cloudのデベロッパーアドボケイトなどが出演し、開発の状況などを解説している。

●参考:YouTubeのWingly Show:Wing Programming Languageのチャンネル

まだプログラミング言語として未完成である部分も多いが、クラウドに特化することをここまで具体化したことは賞賛に値する。クラウドに特化したプログラミング言語はWinglangが初めてではなく、例えばネットワーク処理に特化したBallerinaが存在している。AWSのCDKを作ったエンジニアが、アプリケーションとインフラストラクチャーの乖離を解消するために起業して取り組んでいるWinglangそしてWing Cloudは十分に注目すべき存在だろう。

Ballerinaについては過去の解説記事も参照して欲しい。

●参考:クラウドネイティブなプログラミング言語Ballerinaとは?

●Ballerinaの公式サイト:https://ballerina.io/

●Winglangの公式リポジトリー:https://github.com/winglang/wing

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

OSイベント

RHEL互換LinuxのAlmaLinuxがセミナーを開催。サイバートラストのセッションを主に紹介

2024/3/28
RHEL互換LinuxのAlmaLinuxがセミナーを開催。サイバートラストのセッションを主に紹介する。
セキュリティイベント

FIDOが東京でセミナーを開催、パスキーについてデジタル庁の責任者が講演を実施

2024/3/19
FIDO Allianceが東京でセミナーを開催した。パスキーについてデジタル庁の責任者が実施した講演の内容を紹介する。
データベースSponsored

【事例から学ぶ】アーキテクチャ多様化時代にデータベースを「TiDBにまとめる」という選択

2024/2/9
実際にマイクロサービスアーキテクチャでありながらも、データベースをTiDBへまとめている合同会社DMM.com、Micoworks株式会社、menu株式会社が、なぜその判断に踏み切ったのか、そもそもどこに課題感があったのかなどを背景と共に紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています