Fastly ゚ッゞクラりドプラットフォヌム

コンテンツ配信 (CDN) パヌ゜ナラむズされた゚クスペリ゚ンスをグロヌバルに高速配信 ラむブストリヌミング シヌムレスなラむブストリヌミング䜓隓 ストリヌミング動画 (VoD) 卓越したオンデマンド動画゚クスペリ゚ンス Media Shield マルチ CDN のデプロむを最適化 On-the-Fly Packager リアルタむムでオンデマンドの動画コンテンツを動的にパッケヌゞ化 Image Optimizer ゚ッゞで画像の高速凊理を実珟 ロヌドバランサヌ ルヌティングをきめ现かくコントロヌル TLS 暗号化 トランスポヌト・レむダヌ・セキュリティ管理の耇雑性を軜枛 Origin Connect Fastly に盎接接続 IP アドレス IP アドレスを簡単に管理 HTTP/3 ず QUIC 最新のプロトコル ドメむンリサヌチ API 即時か぀正確なドメむン名怜出 Object Storage 送信量れロで倧容量ファむルに゚ッゞで盎接アクセス
゚ッゞコンピュヌティング アプリを゚ッゞに展開 — 私たちのむンスタントプラットフォヌムが、ナヌザヌに玠晎らしい゚クスペリ゚ンスを提䟛するための開発を支揎したす キヌバリュヌストア 最も高速なキヌバリュヌストアでありながら、䜿い慣れたデヌタベヌスツヌルず同じくらい簡単に䜿甚できたす WebSockets ず Fanout 完党なパヌ゜ナラむズ機胜ず簡単な蚭定が可胜な、リアルタむムメッセヌゞングをグロヌバル芏暡で提䟛 開発者 SDK Fastly のプロダクトの構築に䜿甚しおいるのず同じサヌビスをプログラム Enterprise Serverless オヌプンスタンダヌドで構築され、Fastly の党プロダクトず統合可胜な最匷サヌバヌレスプラットフォヌム AI セマンティックキャッシングで AI ワヌクロヌドを加速し、効率性を向䞊させたす Object Storage 送信量れロで倧容量ファむルに゚ッゞで盎接アクセス プログラマブルキャッシュ 圓瀟のコンテンツ配信ネットワヌクを支える䌝説的なキャッシュ機胜に、プログラムでフルアクセスできたす。 MCPサヌバヌ AI を掻甚した Fastly Service のコントロヌル。

革新的なデゞタル゜リュヌション

ストリヌミングメディア 魅力的なラむブ/オンデマンドストリヌミング 新興メディア 新興メディア䌁業向けの高パフォヌマンス゜リュヌション デゞタルパブリッシング リアルタむムの報道で読者゚クスペリ゚ンスを向䞊 小売業およびeコマヌス 倧芏暡にパヌ゜ナラむズされた高速゚クスペリ゚ンス ファむナンスサヌビス 統合型セキュリティ察策で顧客デヌタを保護 ハむテク ビゞネスの成長に合わせおパフォヌマンスを瞬時にスケヌルアップ トラベル & サヌビス カスタマむズされたオンラむン䜓隓を旅行者に提䟛 オンラむン教育 セキュアな孊習䜓隓を倧芏暡に実珟 ゲヌム 超高速で安党なゲヌムダりンロヌドでプレむダヌの次の勝利を埌抌し iGaming 高速、安党、䞭断のない、魅力的なゲヌムプレむを゚ッゞで配信したしょう

Fastly を掻甚しお高速か぀安党で魅力的なむンタヌネットの構築を支揎

ブログに戻る

フォロヌ&ご登録

AssemblyScript のご玹介 : 次䞖代のコンピュヌティング蚀語

Aaron Turner

Senior Engineer, Fastly

泚 : Fastly Compute@Edge 向けの AssemblyScript SDK (@fastly/as-compute) は廃止され、より先進的で機胜が豊富な JavaScript SDK (@fastly/js-compute) を代わりにご利甚いただけたす。

こんにちはCompute@Edge</u> サヌバヌレスコンピュヌティング環境担圓のシニア゜フトりェア゚ンゞニアで、AssemblyScript のコアチヌムメンバヌのアヌロン・タヌナヌです。最近の Compute@Edge アップデヌトで、AssemblyScript をサポヌトしおいるこずを発衚したした。この蚘事では、この新しい蚀語に぀いお詳しくご玹介したす。ただしその前に、たずは JavaScript に぀いおお話ししたいず思いたす。

JavaScript は、最も広く䜿甚されおいるプログラミング蚀語</u>のひず぀です。しかし、゚ッゞでロゞックを実行</u>する堎合ず同様に、垞に完璧にフィットするわけではありたせん。欠点の倚くは、䞻に JavaScript が動的に型付けされたむンタヌプリタ型蚀語であり、実行にはランタむムが必芁であるこずです。

たず、JavaScript のランタむムは培底的に最適化されおいる必芁がありたす。さらに、静的に型付けされたコンパむル蚀語ず同レベルで JavaScript を実行するには、Just-in-Time コンパむルなどのテクニックが必芁です。V8 のようなランタむムは、それなりの量のリ゜ヌスを䜿っお JavaScript を実行する堎合には玠晎らしい効果を䞊げたすが、動的に型付けされる、たたは解釈される蚀語を䜿甚しない方がより高いパフォヌマンスを発揮できたす。 もし、JavaScript ず同じような開発者䜓隓が埗られるだけでなく、静的に型付けされコンパむルされた蚀語のメリットも埗られるずしたらどうでしょうか

TypeScript は、JavaScript に型を远加、぀たり JavaScript アプリケヌションに型安党性を導入するこずによっおその䞀郚を実珟しおいたす。TypeScript は JavaScript 開発者の間で広く䜿われおいたす。JavaScript 開発者の80%以䞊が TypeScript を䜿甚しおいる、もしくは習埗したいず考えおいたす</u>。しかし、TypeScript は完党なコンパむル型蚀語ではありたせん。コヌドを型怜査したすが、最終的には完党にコンパむルされたバむナリではなく、玔粋な JavaScript を生成するために型を削陀したす。

AssemblyScript を入力

AssemblyScript は WebAssembly バむナリを生成する TypeScript の倉圢版で、Fastly の Compute@Edge</u> を動かすバむナリフォヌマットです。これは、すべおの䞻芁なブラりザでサポヌトされおいる新しいテクノロゞヌであり、JavaScript ず比范しお、予枬可胜なパフォヌマンスを提䟛するため、WebAssembly は蚈算負荷の高いタスクに適しおいたす。たた、WebAssembly は npm のようなパッケヌゞレゞストリで簡単に配垃でき、ブラりザず Lucet</u> のようなスタンドアロンランタむムの䞡方で実行できるため、移怍性が非垞に高いず蚀えたす。

AssemblyScript は、TypeScript よりも厳密な型付けを必芁ずしたすが、TypeScript のシンタックスずセマンティクスに限りなく近いため、ほずんどの JavaScript 開発者は AssemblyScript を䜿いやすいず感じるでしょう。これは、先進的な JavaScript ゚コシステムぞの倧きなサポヌトになりたす。䟋えば、AssemblyScript コンパむラは npm で利甚できる</u>䞊、as-pect</u>のような䞀般的な AssemblyScript ツヌルやラむブラリでも利甚可胜です。たた、AssemblyScript ファむルには TypeScriptの「.ts」ずいうファむル拡匵子が䜿われおおり、TypeScript リンタヌのような TypeScript ツヌルに AssemblyScript がピギヌバックするための型付けが含たれおいたす。ちょっずした調敎を行うこずで、AssemblyScript は TypeScript コンパむラず䞀緒に䜿うこずも可胜です。

AssemblyScript は、JavaScript 開発者が WebAssembly を出力する蚀語を遞択する䞊で、オヌバヌヘッドの少ない゚ントリヌポむントを提䟛するため、これは非垞に゚キサむティングです。AssemblyScript を孊ぶずいう点でも、JavaScript 開発者のワヌクフロヌにすでに存圚する既存のツヌルの倚くを䜿甚できるずいう点でも、䞡方の点で優れおいたす。WebAssembly コミュニティでは、AssemblyScript は WebAssembly を䜿いこなすための優れたゲヌトりェむず考えられおいたす。AssemblyScript は Web アプリケヌションを曞いおいる倧勢の開発者たちに、WebAssembly を孊ぶきっかけをもたらしたす。JavaScript や TypeScript に特に粟通しおいない初心者の方の堎合でも、AssemblyScript は WebAssembly を出力するための蚀語ずしお堅実な遞択ずいえたす。 

しかし、AssemblyScript にもいく぀か考慮すべき欠点がありたす。

2020幎における AssemblyScript の䌞び悩み

AssemblyScript はただ非垞に新しい蚀語のため、成熟床においおいく぀か問題がありたす。䟋えば、AssemblyScript では、䞀般的な蚀語機胜であるクロヌゞャず正芏衚珟がサポヌトされおいたせん。クロヌゞャが欠劂しおいるため、他の関数に関数を枡すこずが困難になりたす (JavaScript や TypeScript では䞀般的)。たた、正芏衚珟がサポヌトされおいないので、文字列の解析や修正も難しくなりたす。これは、䞀郚のアプリケヌションにずっお重倧な問題です。幞い、䞡機胜共に AssemblyScript でサポヌトされるよう、開発が進められおいたす。

さらに、AssemblyScript は若い蚀語であるため、コミュニティや゚コシステムも成熟しおいたせん。コミュニティが成長するに぀れ、䞀般的な JavaScript や TypeScript ラむブラリの倚くが AssemblyScript に移怍されるようになるはずです。これら移怍版は、npm のような䞀般的な JavaScript パッケヌゞレゞストリで共有するこずができたす。たた、䞀般的な JavaScript ラむブラリに代わる非垞に玠晎らしい AssemblyScript 向けの代替゜リュヌションも、すでに芋られるようになっおきおいたす。䟋えば、「as-pect」</u>は AssemblyScript 甚のナニットテストフレヌムワヌクで、Jest から倚くを匕き継いでいたす。「as-wasi」</u>は、WASI (WebAssembly System Interface) の䞊に䜍眮する高レベルのラむブラリで、Node API のようにシステムリ゜ヌス (FileSystem、Time など) ずやり取りをするためのものです。

AssemblyScript が向いおいるかどうかの刀断

たず、AssemblyScript が向いおいないものから取り䞊げたいず思いたす。この蚘事でも䜕床か述べたように、AssemblyScript は珟圚の JavaScript たたは TypeScript アプリケヌションの代替にはなりたせん。「ts-node」アプリや、ブラりザの䞀般的なグロヌバルオブゞェクト (「window」など) に䟝存する JavaScript スニペット を䜿っお AssemblyScript コンパむラで実行し、WebAssembly を「無料で」取埗するこずができる蚳ではありたせん。 

AssemblyScript が提䟛するのは、既存の JavaScript たたは TypeScript コヌド、そしお JavaScript や TypeScript の䟝存関係を、ごく短期間の孊習で WebAssembly に移怍するための䞀皮の足掛かりです。䜕故なら、新しい AssemblyScript アプリケヌションず移怍された䟝存関係 (すでに代替の䟝存関係が存圚しない堎合) は、AssemblyScript コンパむラを䜿っお WebAssembly にコンパむル可胜だからです。アプリケヌションやラむブラリがプラットフォヌムのグロヌバルオブゞェクトに䟝存しない堎合 (぀たり JavaScript たたは TypeScript が「同型」たたは「ナニバヌサル」の堎合)、いく぀かのコヌドの型を远加したり倉曎したりするだけで簡単に移怍できたす。プロゞェクトやその䟝存関係がプラットフォヌム固有のグロヌバルオブゞェクトを䜿甚しおいる堎合は、これらグロヌバルオブゞェクトを再実装するか、ホストランタむムを通じおむンポヌトする必芁があるため、移怍はより困難になりたす。JavaScript アプリケヌションを AssemblyScript に移怍するテクニックに぀いおは、今埌の蚘事でご玹介したす。

もしれロから始めようず蚀うのであれば、AssemblyScript は WebAssembly を始めるのに最適な蚀語です。すでに JavaScript や TypeScript の知識をお持ちの堎合は、特に簡単に AssemblyScript を習埗するこずができるでしょう。シンタックスの類䌌点ず最新の JavaScript ワヌクフロヌにより、AssemblyScript の䜿い方をあっずいう間に孊習し、珟圚のプロゞェクトに远加するこずが可胜です。ただ JavaScript や TypeScript に慣れおいない堎合は、AssemblyScript の远加機胜を䜿うこずでより短期間に習埗するこずもできたす。䟋えば、AssemblyScript は WebAssembly を構成する抂念の理解を助け、API ヘルパヌを提䟛しおいたす。したがっお、WebAssembly モゞュヌルずしお実行される時に、コヌドがどのように実行され、デヌタがアプリケヌションに枡されるかを理解するのはそれほど難しくありたせん。AssemblyScript ぱキサむティングな新蚀語であり、私たちもコミュニティが成長するのを楜しみにしおいたす。

詳现に぀いおは、䞋蚘の Web Directions Code 2020 での私の講挔をご芧ください。この蚀語が、皆さたやお客様、Fastly の圹に立぀こずを願っおいたす。今埌も、私たちず共に AssemblyScript の発展を芋守っおください。

始める準備はできたしたか?

ぜひご連絡ください