Gopherとは分散システムのテキスト検索のプロトコルでも(*3) l Golangにおけるメリット l シンプルな言語仕様 l シングルバイナリとして手軽に取り扱い可能 l パフォーマンス l デフォルトで規定されるツールチェーン l Etc... IUUQTHPEFWTPMVUJPOTDBTFTUVEJFT (PQIFSCZ3FOÉF'SFODI 3'$ͱͯ͠نఆ
float64) *float64 { return &v } l jsii.String → func String(v string) *string { return &v } l GolangにはTypeScriptにおけるnull型やundefined型に相当するOptionalな型が存在しない l nil という概念があるが型定義としては使えない l Optionalな引数として指定するためにポインタとして渡す必要がある l このような特徴は他のInfrastructure as CodeのGolang実装でも見られる(例:Pulumi)
Optional引数/デフォルト引数などは言語仕様として利用できない l Functional Options Pattern(*2) を利用して設定も可能 l CDKの実装としてPrimitive typesであってもポインタとして扱う l これによりRequiredな項目が急遽Optionalになった場合であってもコードベースは動作することを保証 l 一貫性を保つために自身で拡張したコードについても同様の方針としたほうが読み手の負荷が下がる IUUQTEPDTBXTBNB[PODPNKB@KQDELWHVJEFXPSLXJUIDELHPIUNM IUUQTHJUIVCDPNVCFSHPHVJEFCMPCNBTUFSTUZMFNEGVODUJPOBMPQUJPOT
ドキュメント l TypeScriptの方が検索もしやすく見やすい(主観) l エラー発生箇所の特定 l TypeScriptではthrowされてきたエラーオブジェクトを伝搬して特定 l GolangではPanicによる大域脱出 l その他 l IDEの恩恵はいずれも同様に十分に教授可能 l コンテナ上で動くバックエンドアプリはGoが強い(主観)ためアプリケーションコードと 言語セットを揃えることができる強み
DayにあわせてGAというAWSらしい盛り上げる演出 l シンプルな言語仕様と型制約を生かしたInfrastructure as Codeの実現 l アプリケーションと同一の言語を採用したDevOpsの加速の手助け l Goらしさが少し欠ける場所でGolangエンジニアは少し違和感を感じるかも? l まだまだGAされたばかりなので深堀りして楽しんでいきたい l Golang上級者は是非いろいろやっていきましょう!