Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
こんにちは、CyberFight DX 事業本部で web フロントエンドエンジニアをしている久保です。CyberFight DX 事業本部は複数のエンタメサービスを開発、運用するFANTECH本部に所属しています。今回は、管理画面を対象に WebAssembly ( Wasm ) を導入した事例をご紹介します。 FANTECH 本部では技術ブログでの発信を強化しており、最近では下記のような記事を投稿しています。ぜひご一読ください。 Cloud Run サイドカーで Fastly の Prometheus Metrics を収集して Grafana で可視化する reminder-lintでFeature Flagsの削除漏れを防ぐ マルチリージョンで稼働する内製Feature Flagsの実装 私たちのプロダクト WRESTLE UNIVERSE では、ユーザー対象のキャンペーンを実施す
昨年10月に Docker+Wasm がテクニカルプレビューとして発表されました。WebAssembly ランタイムをターゲットとしてビルドされた WASM バイナリーを OCI 互換の環境で実行できるようにするものです。 Introducing the Docker+Wasm Technical Preview | Docker ブログから、Docker+Wasm の実行イメージを引用します。 Docker Desktop では OCI ランタイム containerd を使用してコンテナイメージを管理・実行します。コンテナは runc などのさらに低レベルなライタイムにより実行されます。Docker+Wasm はこの runc にあたるレイヤーに WasmEdge を適用して WASM を実行します(図の右下)。Docker Desktop では containerd のサブプロセスで
なんとなく察しはついてるけど、いちおう確かめておこうかと。 GitHub - leader22/workers-benchmark 詳細はこのリポジトリに。 Rustで書くには ドキュメントなどあらゆる情報は、Cloudflare公式のこのリポジトリにある内容がすべて。 GitHub - cloudflare/workers-rs: Write Cloudflare Workers in 100% Rust via WebAssembly Workerグローバルのコードがそれ用のcrateになってて、それを使ってRustでコードを書く。RequestやらKVやらだけでなく、いわゆるRouterやちょっとした便利関数まで実装されてた。 READMEにあるコード例をそのまま貼るとこんな雰囲気で。 use worker::*; #[event(fetch)] pub async fn main(
ロングもみあげガール推進部 @kb10uy そもそもどうしてこんなことをやろうと思ったかというと、割と前から ShortStoryServer の Playground では WASM が利用されていて、Web 以外でも用途が広がるんじゃないかと思ったからでして 2020-11-14 13:04:06 ロングもみあげガール推進部 @kb10uy で、調べて初めて知ったんですけどそういう目的で使うために WASI (WebAssembly System Interface) ってのがあるんですね。まあ今回は WASI はあんまり関係なくて、どちらかというとそのランタイムであるところの wasmtime を見つけたことのほうがでかい 2020-11-14 13:05:44
Multi-languageCreate workers in different languages like JavaScript, Ruby, Python, Rust and Go thanks to WebAssembly. $ curl -fsSL https://workers.wasmlabs.dev/install | bash $ wws --help A WebAssembly framework to develop and run serverless applications anywhere Usage: wws [OPTIONS] [PATH] [COMMAND] Commands: runtimes Manage the language runtimes in your project help Print this message or the hel
DockerやKubernetesで利用されているコンテナランタイム containerd からは、shim を通じてruncやAWS Fargateで利用されているFirecrackerなど様々なコンテナ実行方法をサポートします。 数年前にDocker社のプレスリリースで話題になったのように、WebAssembly(Wasm)アプリも実行することができ、Wasm向けshimから runwasi を呼び出すほか、runc 向け shimから Wasm対応した crun を 呼び出す事もできます。 ※ 図はIntroducing the Docker+Wasm Technical Preview | Docker から 本記事では、両ケースに対応する containerd をインストールしたあと、runwasi 方式とPodman&crun のそれぞれで実行します。 検証環境 Ubuntu
Web標準の進化は速く、どんどん新しい技術が出てきます。さらに、それらを使った開発を容易にするフレームワークやビルドライブラリも次々とトレンドが変わります。正直、ついていくのが大変な状況です。 しかしそんな中だからこそ開発者は果敢にトライしていかなければなりません。今こそ試し、知見をためられるチャンスと言えるでしょう。今回はそんなデモの一つとしてOpenCV.js WASM Web Worker Webpack Demoを紹介します。 OpenCV.js WASM Web Worker Webpack Demoの使い方 OpenCV.jsを使って顔認識しています。 利用しているデモです。追従性は悪くなさそうです。 OpenCV.js WASM Web Worker Webpack DemoはOpenCVをJavaScript化したOpenCV.jsをWebAssemblyにすることで高速化
こんばんわ。今日はWebAssemblyにチャレンジしたいと思います。wasm用のプログラムを書いて、それをブラウザで動かすところまでやります。 用意するもの1:.wat まずはWebAssemblyで書かれたプログラムが必要です。拡張子は.wasmです。あいにくこれはバイナリファイルなので手書きするのは難しいです。一般的にはお好みの言語で書いたプログラムをLLVM経由で.wasmに変換するのだと思いますが、今回はWebAssemblyそのものの例としたいので、wasmのテキスト表現を使います。 以下の内容をsquare.watというファイルに保存します。.watというのはwasmのテキスト表現のための拡張子です。ツールによっては.wastという形式を受け付けるものがありますが、これは.watの非公式な上位互換拡張だそうです。 ;; square(i32 i) -> i32 (module
概要 先日、Emscripten & WebAssembly night !! #6 でwasm-bindgenについて発表させて頂きました。 振り返りをする中で、 線形メモリとArrayBufferについてもっと詳しくお話すればよかったな😫 と思いましたので、補足内容をブログに書き起こすことにしました。 (以下の内容はスライドの補足なので、スライドを見ながら読み進めて頂けば幸いです🙏) 線形メモリはArrayBufferってどういうこと? Rustで書いた"Hello World"をWebAssemblyに変換し、JSで単純な呼び出し方をすると、1048576という数列が表示されてしまいます。 この理由を図で表したのがこちらです。 線形メモリはArrayBuffer 発表の際に大雑把な説明で終わってしまったので、どういうものか詳しく書きます。 線形メモリについて まずは線形メモリがど
WebAssemblyを記述できるのはC/C++/Rustだけだと思っていないでしょうか。実はLLVMにさえなれば、他の言語でも記述できます。そのため、やろうと思えばSwiftから作ることもできるそうです。 そこで注目したいのがmono-wasmです。Monoを使ってC#で記述された内容を WebAssembly にするソフトウェアです。 mono-wasmの使い方 ごく簡単なコードです。コンソールを使うことでデバッグメッセージも流せます。 class Hello { static int Main(string[] args) { System.Console.WriteLine("hello world!"); return 0; } } 実行結果です。 Main関数が必ず実行されるようになっていますが、他の関数を呼ばせることもできます。以下はクラスにメソッドが多数定義されている例です
rollup.jsに爆速esbuildを組み込む方法 Rustのimage::load_from_memory遅すぎ問題 WebでWebAssemblyを使う方法を模索してふと思った。 (゚-゚) サイズでかいなぁ。。。 cargo buildで普通にビルドすると wasm_image_resizer.wasm 2.2 MB とメガ単位の結果がゴロゴロでてくる。 いくら光回線が当たり前のご時世でも、 ちょっとよろしくない。 なので今回はサイズを小さくする方法を調べてみる。 ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪ ------------------- ↓ 本題はここから ↓------------------- 最適化レベルの調整 コンパイル時に行う最適化を設定する 0, 1, 2, 3, s, zの6種類から選択。 最適化レベルが高いのはzだが、 zが一番容量小さくなるわけではない
Reality check for Cloudflare Wasm Workers and Rust Published on: September 17, 2021 With native Rust support recently announced for Cloudflare Workers, I wanted to take a moment and write about the possibilities, but also the obstacles as a sort of reality check for myself. I’m extremely bullish about Cloudflare, Wasm, Rust, edge computing, and the recently announced native Rust support. If I’m no
Google グループでは、オンライン フォーラムやメール ベースのグループを作成したり、こうしたフォーラムやグループに参加したりすることで、大勢のユーザーと情報の共有やディスカッションを行うことができます。
どんなアプリケーション? ひらがなの書き方を練習する紙を印刷するためのアプリケーションです。 なんでつくったの? 社内でアプリデプロイチャレンジというイベントがありました。 このイベントをきっかけに作りました。 特徴 印刷したらA4にぴったり 印刷して使うことを想定しています。 ブラウザの表示内容は印刷するとくずれがちです。 A4用紙にあわせて印刷出来ます。 フォントが教科書体 日本語になれていると気がつきませんが、 書き方の初学者にはOSのデフォルトフォントの書体は難しいです。 読みやすくはあるのですが、クセがあるため学習上は問題になります。 たとえばメイリオの「ふ」はこのような字体です。 字の練習用としてみると次のように不自然な点があります。 1画目が水平すぎる ハネがない 3画目が反っている 教科書体を採用しました。 具体的にはGoogleフォントを使ってKlee Oneを表示してい
色々やったら手数が多くてややこしかったので、現時点のセットアップをメモがてら記事に書くことにした。 想定読者は フロントエンドプログラマ or Rust プログラマ。両方詳しいことは想定していないので、それぞれで自明なこともみっちり書くことにした。 node/npm と rust/cargo (rustup) のセットアップは略。ググればいくらでも出てくるので… 概要 webpack: 静的アセットを生成するバンドラー ts-loader: webpack で .ts ファイルを typescript として読み込む loader。wasm-pack が typescript の型定義を生成するので、せっかくなので ts もセットアップする @wasm-tool/wasm-pack-plugin: webpack 内で wasm-pack で生成されるコードを読み込むもの html-web
ついに、 WebAssembly の自作エミュレータの上で動く自作 OS の上で自作 WebAssembly ランタイムが動くようになりました 🎉 つまり Wasm on Wasm ですね٩( 'ω' )و 以下に試験的に体験版設置してるので起動してみることができます。 meg-os.org もちろん PC98 や FM TOWNS でもなんとなく動きます。 基本的には MYOS で実装したものを若干調整して TOE に移植しただけです。最初に移植したときは動くアプリと動かないアプリがあって、調査しようとしたら wasm ランタイムを外部ライブラリに分離して no_std の関係で今まで使えた println! が使えなくなって原因の特定に若干手間取りました。 最終的には、内部で使ってる独自スタッククラスが原因でした。 独自スタックが必要な理由は、 wasm では関数1つ呼び出すたびに複
Unsupported Right now I have quite a few things going on and I'm more involved with the wasm-wg group currently. I originally made this as a way to wrap the need to call --target=wasm32-unknown-unknown each time. While you can still use this as is, I won't be releasing fixes or taking prs anytime soon as this project is just not a priority for me right now. cargo-wasm A cargo subcommand for workin
こんにちは、22新卒で入社したエンジニアのhashinoです。 この記事は Enigmo Advent Calendar 2022 の9日目の記事です。 背景 皆さん、普段コンテナを利用していますか? エニグモでは、Kubernetesを活用していて、開発環境でもDockerを活用しています。 しかし、最近はWebAssemblyがコンテナを完全に置き換えるかもしれないという噂も耳にします。 既にKubernetesでは、kubelet API互換のKrustletが注目を集めています。kubeletは、ご存知の通りOCI準拠のコンテナを実行しますが、Krustletは、WebAssembly System InterfaceランタイムのWebAssemblyを実行するものです。Kubernetes上でPodの代わりにWebAssemblyを動作させることが可能になっています。 また、Fe
はじめに 「RubyでつくるRuby ゼロから学びなおすプログラミング言語入門」(ラムダノート, Amazon) という本に感銘を受けて、自分でもNode.jsで小さなプログラミング言語を作ってみるシリーズをやってみました。「ミニインタープリター」「ミニコンパイラー」ときて、三部作(?)の最後はミニNode.jsからWASMを生成する小さなコンパイラーに取り組んでいます。 前提環境 今回は私の環境である macOS 10.14 Mojave を前提にしています。また Node.js v10.13 で動作を確認しています。 Node.js-WASM コンパイラー目次 WASM コンパイラー - 01:WASMで定数戻り値を返す ... シンプルに整数値を返す実装と、WASMをNode.jsから実行 WASM コンパイラー - 02:四則演算を実装する ... 四則演算と、余りを実装 WASM
Serverless Haskell - GHCのWASMバックエンドで Haskell を Cloudflare Workers に載せる TL;DR GHC 9.10 から WASM バックエンド(クロスコンパイラ)が JavaScript FFI に対応したので、Haskell コードを Cloudflare Workers 上で動かしてみたよ。快適に開発するための環境構築・ハック方法と、GHCの出力をCloudflare Workers 向けに修正する方法を紹介するよ。 はじめに──Asterius から GHC WASM バックエンドへ GHC は 9.6 から WASM バックエンド(クロスコンパイラ)を搭載していますが、GHC 9.10 から WASM バックエンドが遂に JavaScript FFI に対応しました。 従来から C FFI には対応しており、これを使って F
This article is cross-posted on the Bytecode Alliance web site. Multi-value is a proposed extension to core WebAssembly that enables functions to return many values, among other things. It is also a pre-requisite for Wasm interface types. I’ve been adding multi-value support all over the place recently: I added multi-value support to all the various crates in the Rust and WebAssembly toolchain, so
本記事は、2022年5月に開催されたTechFeed Conference 2022のセッション書き起こし記事「eBPFとWASMに思いを馳せる2022(Masaya Aoyama) — TechFeed Conference 2022講演より」を転載したものです。オリジナルはTechFeedをご覧ください。 本日は「eBPFとWASMに思いを馳せる2022」というテーマで、CyberAgentの青山が発表させていただきます。 ふだんはKubernetes基盤のプロダクトオーナーとして勤めるほか、いくつかの会社で技術顧問やカンファレンスのCo-chairなどを務めています。また著書としては『Kubernetes 完全ガイド』(インプレス)があります。 本日は、WASMとeBPF関連のプロダクトの紹介を行っていきたいと思います。 WASMのおさらい WASMのおさらいですが、WASMで
FOSDEM 2024/Schedule/Events/Developer rooms/Containers/vscode-container-wasm: An Extension of VSCode on Browser for Running Containers Within Your Browser vscode-container-wasm: An Extension of VSCode on Browser for Running Containers Within Your Browser One of the limitations of on-browser VSCode is the lack of Linux-based terminals and containers running completely within the browser. In this ta
はじめに zenn初投稿の普通科高校生です。 Yewが素晴らしいので日本人の使用者がもっと増えればいいなと思います Yewとは YewはマルチスレッドなWebフロントをWebAssemblyを使って作ることができるRustのフレームワークです。 npm資産とRust/C資産の相互運用性 仮想DOMを使った効率のいいレンダリング JSXライクなHTMLマクロ をメリットとしています。 WebAssemblyとは WebAssemblyはブラウザで動くコンパイル可能な低レベル言語です。JavaScriptにくらべ高速な計算はできます。 まだ、DOMの呼び出しは遅い(JSを一度経由するため)ですが、今後早くなる予定です。 なぜ Rust? Rustは素晴らしいコンパイラと型システム、所有権により安全なコードを書くことができます。 StackOverflowによる調査で五年連続で最も愛されている言
Rick Battagline 著入門WebAssembly The Art Of WebAssemblyの翻訳書です。 本書を読みながらサンプルコードを写経したので感想を書いていきます。 著者のWebサイトには他にもWebAssemblyについてのトピックがあります。 サンプルコードはGitHubから見れます。 canvasに3000個のobjectの衝突判定をrenderingするサンプルを動かすところまでやりました。 https://wasmbook.com/collide.html collide.htmlきっかけRustでWASMのecosystemにふれていく前に素のWASMについてなんとなくでも理解したいと思っていました。(ある程度生成されたグルーコード読めないと落ち着かない) 本書ではWATを書いてWASMに変換して動かしながらWASMの仕様を追っていくので、WASMだけを
Rustとwasmの入門にライフゲームを書いてみた 成果物 github.com 以下のURLで動作を確認できますが、わらわらしてますので苦手な方は注意してください。 windowサイズを小さくすると60FPSでて楽しいです。 Game of life with rust + wasm 環境構築 環境構築は以下の記事を参考にさせてもらっています。 sbfl.net また「Think Web」の「Rust + WebAssembly でブラウザで動くLisp処理系を作る」も合わせて参考にさせてもらってます。 techbooster.booth.pm 実装 JS側からRust側へポインタを渡しておき、JS側のrequestAnimaionFrameからRust側から公開されているupdate関数を叩き、更新されたメモリをcanvasに反映するという構成を取っています。 Rust側とメモリを共有
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く