インフラとアプリを同時にコーディングできる新言語、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のブログで紹介されたイントロダクションの動画である。以下のリンクから視聴して欲しい。
●動画: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と呼ばれる実行環境、さらにテストやデバッグを可能にするツール群などで構成されている。
プログラミング言語としてのWinglangはクラウドオリエンテッドなプログラミング言語であるとして分散コンピューティングの必要な要素、ストレージやキューなどをソースコードレベルで記述することができる。
ここではキューとデータストレージであるバケットを作り、そこにmyfileで始まりカウンターの数値を追加した名称のテキストファイルを生成し、バケットに保存するという手続きが記述されている。bring cloudという宣言でクラウドサービスを使うことが明示されている。さらに特徴的なのはinflightという記述だろう。これはランタイムに実行されることを示している。となればクラウドのインフラストラクチャー側の準備として、必然的に事前に実行される命令群が必要だ。それはpreflightというキーワードで定義される。以下はドキュメントサイトからの引用だが、バケットやキューの作成、データべースの生成などはすべてコンパイル時に実行されることになる。
それ以外の演算や条件分岐、ループなどはinflightとして実行時に処理される。コンセプトについては以下のドキュメントを参照して欲しい。
●InflightとPreflightのコンセプト:Preflight and Inflight
AWSなどのクラウドサービスを利用した経験があれば、バケットの作成などについて場合によっては高速に行われることもあるが、実際にはサービスプロバイダー側の都合に左右されてしまうことは経験済みだろう。そんな状況を避けるために、Winglangではローカルの開発環境を使ったシミュレーターが用意されている。
ここではコードの記述と即座に実行されるエラーチェック、そしてオブジェクトを可視化するコンソールが解説されている。これもドキュメントサイトからの引用だが、コードの記述から他のオブジェクトとの関係が可視化され、オブジェクトに対して内部のメソッドの実行やペイロードやログの確認などがローカルで可能な開発環境となっている。
ここまででプログラミング言語からクラウド側のリソースを包括的にコードとして記述できること、ローカルで実行、テストが可能なことまでは理解できただろうか。では実際にクラウド側のリソースを生成するために必要なのがコンパイル、つまりPreflightの実行によって実際に対象となるプラットフォームごとの記述を生成することが必要となる。つまりこのコンパイルプロセスにおいてTerraformやAWSのCDKのような構成情報が生成されることになる。
Wing compileというコマンドのオプションとしてAWS、GCP、Azureなどに対応したTerraformの構成ファイルやAWS CDKの構成ファイルなどが生成される。デフォルトはローカルのシミュレーターだ。実際にデモの中ではAWSのIAMのリソースが生成されていることを見せて、クラウドプロバイダーごとに環境設定が行われることが解説されている。
このユニークさを体感したいのであればチュートリアルが最適だ。
●参考: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
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Civo Navigate North America 2024、インフラストラクチャーフロムコードのWingのセッションを紹介
- KubeCon+CloudNativeCon North America 2023のキーノートとショーケースを紹介
- CI/CD Conference 2023から、アルファドライブ/ニューズピックスのSREがAWS CDKを活用したCI/CD改善を解説
- Istioがマイクロサービスからモノリシックなアプリに変化。その背景とは
- AWS、WindowsおよびMacOSでLinux コンテナをビルド・実行・公開できるコマンドラインツール「Finch」のWindows サポートの一般提供を発表
- KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
- CloudサービスとRPAの連携
- Amazon S3のライバル? Google Cloud Storageに触れてみる
- SODA Data Vision 2023より、Gitの使い勝手をデータレイクに応用したlakeFSを紹介
- INFINIDATのストレージを使ったクラウドサービス、Neutrix Cloudとは?