Slide 1

Slide 1 text

Deno+JSRで パッケージを作って 公開する 2024.11.9 ゆる勉強会 in 新宿御苑

Slide 2

Slide 2 text

asuka (@a_skua) ● 株式会社モニクル/SWE ● WebAssemblyの同人誌を書いている人 ○ WebAssemblyでできること ■ 商業誌:実践入門WebAssembly ○ ご注文はWASIですか? ○ ご注文はWASIですか?? ■ 商業誌:WebAssembly System Interface入門 ○ WebAssembly Cookbook vol.1 ○ WebAssembly Cookbook vol.2 New!! 2 WHOIS 技術書典14 技術書典15 技術書典16 技術書典17 New WASIのまとまった情報あります↓↓ 技術書典17では会社名義の同人誌も発行してます Monicle Techbook vol.1 開発合宿レポート2024:モニクル開発部 ↑↑SNSのアイコンの本

Slide 3

Slide 3 text

3 本日 見本誌あります 再編集 再編集&加筆 Wasmの仕組みを知りたい方向け 最新のWasmの動向を知りたい人向け 実装方法や活用事例など Wasm本 同人誌→技術書典のオンラインマーケット 本日 数冊だけあります 1月の技書博でも一部配布します 商業誌Amazonなど WASI本 Cookbookシリーズ C.9 | 技術書典 WebAssembly System Interface入門 | インプレス NextPublishing

Slide 4

Slide 4 text

Deno+JSRでライブラリを作って公開する

Slide 5

Slide 5 text

Deno ● ナウくてヤングなJSランタイム ● TypeScriptをそのまま実行できる ● FormatやTest,Lintも全てこれ1つでOK ● Web標準の申し子 DenoとJSR 5 JSR ● ナウくてヤングなJSパッケージレジストリ ● “deno publishˮでパッケージを公開できる ● TSをそのまま公開できるのが特徴 Deno : https://deno.com/ JSR : https://jsr.io/

Slide 6

Slide 6 text

COBOL.js 1.0.4 ● COBOLのデータ表現をパースするために作成 ○ (符号付き外部10進数をパースしたかっただけ) ○ 0000000A COBOL ←→ 1 JS の相互変換が可能 EBCDIC.js 1.0.0-rc2 ● メインフレームで使われているらしいコーデック ● Text{Encoder,Decoder} でサポートしていないので作成 ● encodeとdenocdeをサポート 公開したパッケージ 6 COBOL.js : https://jsr.io/@askua/cobol EBCDIC.js : https://jsr.io/@askua/ebcdic import { EBCDIC_CCSID_37 } from "@askua/ebcdic"; // Encode const bin = EBCDIC_CCSID_37.encode("Hello, world!"); // Decode const str = EBCDIC_CCSID_37.decode(bin); import { SIGNED_NUMBER } from "@askua/cobol"; const a = SIGNED_NUMBER.parse("000A").as(); // 1 const b = SIGNED_NUMBER.parse("010{").as(); // 100 const c = SIGNED_NUMBER(a - b).toString(4)); // "009R" →いつメインフレーム案件来ても大丈夫

Slide 7

Slide 7 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている ○ *_test.tsにテストを書いて,ˮdeno testˮを実行するだけ パッケージの作成 7

Slide 8

Slide 8 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている ○ ˮdeno lintˮを実行するだけ パッケージの作成 8 $ deno lint Checked 3 files

Slide 9

Slide 9 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている ○ ˮdeno fmtˮを実行するだけ パッケージの作成 9 $ deno fmt Checked 6 files

Slide 10

Slide 10 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている ○ *_bench.tsにベンチマークテストを書いて,ˮdeno benchˮを実行するだけ パッケージの作成 10

Slide 11

Slide 11 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている パッケージの作成 11 →テストライブラリもリンターもフォーマッターも,全部DenoでOK

Slide 12

Slide 12 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている パッケージの作成 12 →ライブラリの利用者のことを考えると,JSにトランスパイルしないといけない

Slide 13

Slide 13 text

それ,JSRで解決できるよ

Slide 14

Slide 14 text

COBOL.jsとEBCDIC.jsのどちらもDenoで実装している ● コードはただのTypeScript ● Test,Lint,Format,Benchmark,Publish→これらをDenoの機能で行っている パッケージの作成 14 →ˮdeno publishˮで,JSRにパッケージを公開できる

Slide 15

Slide 15 text

● Denoの場合,ˮdeno add jsr:@askua/cobolˮでパッケージを追加できる ● npmの場合,ˮnpx jsr add @askua/cobolˮでパッケージを追加できる ● yarnの場合(ry JSRにパッケージを公開すると... 15 →ユーザーがJSにトランスパイルせずとも,Node.js上でライブラリを利用できるようになる🎉

Slide 16

Slide 16 text

● Docsもあるよ🎉 JSRにパッケージを公開すると... 16

Slide 17

Slide 17 text

● JSにトランスパイルせずともTSを直接実行できる ● testもfmtもlintもbenchも必要なものは初めからある ○ テストライブラリを後から導入しなくても良い ○ リンターやフォーマッターも後から導入しなくても良い ● Node.js向けにJSにトランスパイルする必要がない ● パッケージレジストリ上にDocsも公開される Deno+JSRで構築する幸せのスパイラル 17 アニメぼっちざろっくより『幸せスパイラル』

Slide 18

Slide 18 text

2024.11.9 ゆる勉強会 in 新宿御苑 Deno+JSRでライブラリを作って公開する

Slide 19

Slide 19 text

WebAssembly / Wasm Advent Calendar 2024 19 Wasmのアドカレやってます🎄 入門〜玄人ネタまで,Wasmに関するネタであればなんでもOK!! Qiita : WebAssembly / Wasm Advent Calendar 2024