BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Go 1.11がリリース、WebAssemblyとモジュールを試験的にサポート

Go 1.11がリリース、WebAssemblyとモジュールを試験的にサポート

原文(投稿日:2018/08/27)へのリンク

Go 1.11の中心的な機能はWebAssemblyモジュールの2つだが、いずれも実験段階に留まっている。

モジュールはGOPATHの代替手段として、プロジェクトの依存関係の特定とバージョニング管理を提供するものだ。モジュールが存在する$GOPATH/src以外のディレクトリ内でgoコマンドが実行された場合にはモジュールが有効になり、それ以外ではGOPATHが使用される。GoogleのRuss Cox氏が説明している

Goモジュールはモジュールパスと呼ばれる、共通のインポートパスプレフィックスを共有するパッケージのコレクションです。モジュールはバージョニングの単位でもあり、モジュールのバージョンはセマンティックバージョン文字列で記述されます。Gitで開発する場合、モジュールのGitリポジトリにタグを追加することで、モジュールの新たなセマンティックバージョンが定義されます。セマンティックバージョンを強く推奨していますが、指定したコミットの参照もサポートされます。

モジュールはgo modを使って生成され、そのバージョン番号のパッケージが必要とするパッケージをすべてリストアップしたgo.modファイルを、モジュールのルートに置くことで定義される。これはgo mod -init -module example.com/mで生成したもので、モジュールのベースディレクトリと2つの依存ファイルの定義された、ごく単純なモジュール定義ファイルの例である。

    module example.com/m
    
    require (
        golang.org/x/text v0.3.0
        gopkg.in/yaml.v2 v2.1.0
    )

go.modファイルが生成されれば、後はgo buildgo testgo listといったコマンドが、インポートを満足するように新たな依存関係を自動的に追記してくれる。例えば、メインパッケージでrsc.io/quoteをインポートしている場合、go runを実行することで、require rsc.io/quote v1.5.2go.modに追加される。同様にgo getコマンドは、go.modを更新してビルドに使用されるモジュールのバージョンを変更するので、依存関係を再帰的にアップグレードないしダウングレードすることが可能だ。

モジュール構文の詳細はgo help modulesで確認できる。Goチームが互換性の維持に努力しているため、この機能は、少なくともGo 1.12までは試験段階に留まる予定である。モジュールが安定した時点で、GOPATHによる作業サポートは削除される。

WebAssemblyのサポートは、Webブラウザ内でGoプログラムを実行可能にするためのものだ。GOARCH=wasm GOOS=js go build -o test.wasm main.goを実行して、Webで動作するGoプログラムをコンパイルすると、wasm_exec.html, wasm_exec.js, test.wasmという3つのファイルが生成され、HTTPサーバにデプロイするか、あるいはブラウザに直接ロードすることができる。jsパッケージを使用したDOM操作も可能だ。

Go 1.11の変更点の全リストは、公式リリースノートで確認して頂きたい。 利用可能なダウンロードのリストはこちらにある。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT