ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示

2024年3月17日日曜日

WinterJS正式版

 新たなサーバサイドJavaScriptランタイム「WinterJS 1.0」正式リリース、WebAssemblyへのコンパイルも可能。Wasmerが開発

去年の10月ごろに出た新しいJavaScriptランタイムが正式版になったようです。今回の開発元はWasmer。爆速を謳っているBunよりも速いと主張しています。

まだ使ってないので評価も何もできないのですが、元記事をざっと見た感じではDenoやBunとは違ってTypeScriptのネイティブサポートはないようですね。

これでV8(Chrome) / JavaScriptCore(Safari) / SpiderMonkey(Firefox)のエンジンを使ったランタイムが揃ったので、みなさんいい感じに競争してほしいです。

2023年12月17日日曜日

StyleX

 MetaがStyleXという新しいスタイリングシステムを公開したようです。すでにFacebookやらInstagramやらのMetaのサービスで使われているようですね。

最近知ったばかりなので詳しいところはまだ見ていないのですが、これを知った時に思ったことが2つ。

MetaってJSに色々ぶっ込むの好きだね。ReactがHTML in JSならStyleXはCSS in JSみたいな感じ。

イーロンマスクがつけそうな名前だね。というか先に考えてたら絶対つけてたね。

2023年12月3日日曜日

TypeScriptでジョブキュー

 多分使い古されたネタですが、なんとなく思いついた&作ってみたくなったので気にせずに投下します。

「一度に実行するジョブの数は最大でN個、それ以上はキューイングしておき、実行中のジョブが終了したら順次実行」というアレです。

2023年11月26日日曜日

先週JSConf JP 2023がありましたよ

 先日告知した通り、去る11月19日にJSConf JPが開催されました。当日の様子は後ほど公開されると思うのでお楽しみに。

これまた先日告知した通り、トラックCの司会をしてきました。心配していたハプニングは特になかったとは思います。多分。

公開される動画を見た人は多分こう思うでしょう。

「部屋暗すぎね?」

ハイその通りです。思ったより暗くしすぎました。これにはちょっと理由がありまして・・・

朝の最初のセッションはスライドがちょっと明るめで、部屋もちょっと明るめだったので皆さんが見づらい&配信でも映りにくそうだと判断して、照明を消してブラインドを下ろすなどしていました。陽が昇っていたうちは、まだ光量のバランスは取れていたと思います。多分。

ただ見落としていたのが季節。秋も終わりかけて冬に入ろうかという季節では釣瓶落としもいいとこなわけです。昼を過ぎて夕方に差し掛かっても照明もブラインドもそのままだったので、気づいた時は「めっちゃ暗い・・・」という状況に。

要するに完全にこっちのミスです。去年はオンライン開催だったのでその辺を考える必要はなかったんですが、来年も司会をするなら照明についても考えないとダメですね。それではまた来年会いましょう。

2023年11月19日日曜日

React&muiで、ダイアログオープン時にフォーカスを移す方法

かなり久しぶりに仕事でReactを使っています。最近はバックエンドとかモバイル通信網とかプロトコルの仕様書を読んで自分で実装したりとかどんどん低レイヤーな内容に寄っていたので、フロントエンドをやったのはかなり久しぶりな気がします。

muiでポチポチインターフェースを作っていたんですが、ダイアログを開いた時に中のコンポーネントにフォーカスを当てる方法で詰まりました。

あ、今日の内容はトラブルシューティングというよりReact/mui弱者の戯言だと思ってください。

2023年11月12日日曜日

来週JSConf JP 2023がありますよ

 来週11/19(日)に、毎年恒例の日本最大級のJavaScriptカンファレンスJSConf JP 2023が開催されます。今年は久しぶりにオンライン開催です。

2023年9月17日日曜日

Bun v1.0がリリースされたよ

 このブログを書いている時点ですでにv1.0.2まで上がっていますが、先日Bunの安定版v1.0がリリースされました

というわけであらためてBunまわりの歴史についておさらい。とは言ってもあまり詳しいことまでは話しません(話せません)。

2023年8月20日日曜日

Software Design 2023年9月号が発売されました

 先日、「Software Design 2023年9月号に寄稿したよ!」という記事を書きましたが、その9月号が予定通り8月18日に発売されました。

寄稿部分がこれ。


うん、Twitterってなってるね

確か、ちょうど校正あたりの時期にTwitterのサービス名が𝕏に変わるとかどうとかの騒ぎがあったんですが、校正&コロナでてんてこ舞いになっていて、ここの修正まで頭が回りませんでした。別に致命的なミスではないので許してください。

2023年8月6日日曜日

Software Design 2023年9月号に寄稿しました

 8月18日に発売予定のSoftware Design 2023年9月号に寄稿しました。担当したのはJavaScript非同期処理特集の3-5章。Promise, async/awaitについての記事です。

Promise編は通り一遍の解説だけでなく、実際にPromiseクラスを自作して内部の動きを解説するというどこかで見たような内容です。まあ実際Promise編はさくらのナレッジの記事をベースにしているので、そちらの記事をすでに読んでいる方は特に得るものはないかもしれません。ただし細かな解説を追加しているので、さくらのナレッジの記事で腹落ちしていない方はあらためてSoftware Designの記事も読んでみるといいかもしれません。

async/await編は、さくらのナレッジにPromise編の続きとして書こうと思っていた内容を先取りしています。さくらのナレッジは数年間放置しているのでそろそろ何とかしないとなぁ・・・と思っていたところに今回の依頼が来たので、締め切り効果を期待して引き受けました。紙面の都合上、こちらは使い方の解説のみです。後日さくらのナレッジにはこれをベースとした記事を載せる予定ですが、そのときはPromise編のように内部の動きまで解説しようかと思っています。

執筆や校正は6月後半〜7月がメインでしたが、7月は父親の葬儀やらコロナやらで2週間ほど仕事どころではない日が続きました。葬儀のときは昼間か夜にある程度時間が取れ、コロナのときはほぼ校正だけで済んだので、何とか原稿を落とさずに済みました。

一家に一冊ぜひどうぞ。

2023年7月23日日曜日

value-schema v4.0.0が出ました

 去年の12月に「そろそろv4が出るよ」と予告して早7ヶ月。先日ようやくリリースしたので報告です。

・・・と思ったらDeno版が最新になってない。あとで直しておきます。

機能的には去年の記事から変わっていませんが、テストケースを増やして最新のNode.js / Deno / Bunでも動作することを確認しました。

手前味噌ながら、まあまあ便利なライブラリだと思っているのでよろしければ使ってみてください。

2023年1月22日日曜日

1/18のTechFeed Experts Night#11に登壇しました

 先週告知した通り、1/18にイベント登壇してきました。

TechFeed Experts Night#11 〜JavaScript/TypeScript最前線

スライドはこちら

8分間で51ページという超絶ボリュームですが、33ページ目以降はおまけスライドで発表時には触れていません。また、PDF化する都合でアニメーションを複数枚のページに分けたものもかなりあるので見た目ほど中身は濃くないです。

以前もちょっと書きましたが、他の登壇者のみなさんが公認エキスパートばかりの中で1人だけ公認でもエキスパートでもない奴がポツンといる状態で、ある意味プレッシャーでした。

実はこれ、3年前のTSConf JPで発表しようとしていた内容に最近のDenoとかBunの事情を加えた内容です。昔話が多いのはそのせいです

2023年1月15日日曜日

1/18のTechFeed Experts Night#11に登壇します

先月告知したTechFeed Experts Night#11についての続報でございます。もうイベントページが公開されたので詳細を紹介します。

イベントページはこちら、テーマは「JavaScript/TypeScript最前線」です。

話す内容は「パッケージ開発者の苦悩 -JavaScriptランタイム群雄割拠-」で、その名の通りパッケージ開発者向けの内容です。ただし、最前線というテーマに反して昔話が多めなので、心してお聞きください。

2022年12月18日日曜日

TechFeed Expert Night #11に登壇します

 TechFeedという開発者向けのキュレーションサービスがあります。隔週でTechFeed Experts Nightというイベントをやっているのですが、なんと来年1月に開催予定のイベント#11に声がかかりました

TechFeedには「公認エキスパート」というものがあるんですが、公認でもエキスパートでもないワイをどっから見つけたんだ。。。

テーマとかはまだ非公開だと思うのであまり詳しいことは話せないのですがラベルでちょっとネタバレしてます。登壇者同士で話し合うアフタートークというのもあるので、公認エキスパートに囲まれて恥をかかないようにまあなんとかがんばります。

イベントが公開されたらもうちょっと詳しいことを書きます。

2022年12月11日日曜日

そろそろvalue-schema v4が出るよ

 注)まだ出てません。

入力値検証ライブラリーのvalue-schemaについて、そろそろv4の正式版が出そうなので予告です。

現時点の最新版はv4のRC2です。RC1については5月の記事をごらんください。以下ではRC1以降の変更点を解説します。

2022年11月27日日曜日

JSConf JP 2022が開催されました

 昨日11/26に日本最大級のJavaScriptカンファレンスJSConf JPが開催されました。ここ数年運営を手伝っており、今年も去年と同じくトラックCの司会をやってきました。

セッションの内容とか感想とかは多分参加者のみなさんが詳しくブログに書いてくれると思うので、ここでは運営の裏話を。

2022年9月11日日曜日

Node学園 40時限目に参加しました

9月5日に久しぶりにNode学園に参加しました。40時限目です。学校の授業は多くても6時限目くらいまででしょうから、多分居残りで2徹か3徹くらいしてるイメージです。もはやブラック学校を遥かに通り越して漆黒の学校ですね。なんか中二っぽくてかっこいい。

今回はBunがメインテーマです。全然知りませんでした。いや、正確には以前になにかの記事でチラッと見た記憶があるんですが、完全にスルーしていました。

というわけでBunについて簡単にまとめてみます。

2022年7月24日日曜日

JavaScriptで配列をループ中に先頭要素を削除したらどうなるのっと

 先日の記事の関連記事です。

このコードを実行したらどんな出力になるでしょうか。

const values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (const value of values) {
  console.log(value);

  // 先頭要素を1つ削除する
  values.shift();
}

  • 先頭要素を削除しようが、valueは配列の要素を1つずつ移動する。ただしループ回数は徐々に減っていくので最終的には元の要素数の半分になる。つまり1, 2, 3, 4, 5を出力
  • valueは配列の内容とインデックスによって決定される。インデックスはループごとに1つずつ増えるので、ループ内で先頭要素を削除した場合はvalueが1つ飛ばしで取得される。つまり1, 3, 5, 7, 9を出力

どちらももっともな意見に見えますが、あなたの答えはどちら(orそれ以外の答え)でしょうか。

ちなみに、先日の記事の内容を読んでECMA-262のArray Iteratorの仕様まで目を通した方なら答えられるはずです。

わからない方も、わかったけど答え合わせをしたい方も、こちらからご確認ください。

2022年2月27日日曜日

JavaScriptで予約語を使わないワンライナーFizzBuzz

今回はただのネタです。

Code Golfとは別方向の趣向で、予約語を使わないFizzBuzzの実装です。

Array(100).fill(0).map((_,i)=>console.log(++i%15?i%5?i%3?i:"Fizz":"Buzz":"FizzBuzz"))

これでもまだわかりやすい部類の書き方だと思うので、わかりやすさを犠牲にすれば多分もっと文字数は減らせます。

他の言語ではどうなるんだろう。CとかJavaみたいに絶対に実現できない言語もあるけど。

プログラミングスクール生のみなさん、FizzBuzzの課題を出されたらこれを提出してもいいですよ

2022年2月6日日曜日

JavaScriptで非同期処理のawaitつけ忘れを防ぐ

 JavaScriptでバックエンド開発していると非同期処理を使うことが多いですよね。

そこで問題になるのがasync関数に対するawaitのつけ忘れ。まだasync/awaitが使えなくてPromiseオブジェクトに対してthen()catch()をしていた頃ならすぐ気づいたんですが、単に関数呼び出しにawaitをつけるだけというのは便利な反面忘れやすいです。よくやらかします。

JavaScriptは実行するまでPromiseオブジェクトかどうかわからないからESLintじゃ検出できないよなぁ。TypeScript ESLintならできるんかなぁと思いながらルールを探したらありました。

2021年11月28日日曜日

JSConf JP 2021のスタッフをやりました

 昨日11月27日は日本最大級のJavaScriptカンファレンスJSConf JP 2021の開催日でした。去年はコロナの影響で中止だったのですが、今年はオンラインで開催です。

そして、今年はなんとスタッフとして参加しました。いや前回もでしたが。

発表内容は他の参加者が各々ブログにまとめてくれていると思うので、今回はスタッフとしての