並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 204件

新着順 人気順

asyncの検索結果41 - 80 件 / 204件

  • 100秒で理解するPromise

    そもそも非同期処理とは? Promiseについて知るためには、まず非同期処理について知っておく必要があります。 以下の動画で、非同期処理について100秒で解説しているので、そもそも非同期処理をよく知らないなぁという人はぜひ確認してみてください! Promiseとは では、本題です。 Promiseとは、ES2015で導入された、非同期処理の状態や結果を表現するオブジェクトのことです。 PromiseはES2015で導入された非同期処理の状態や結果を表現するビルトインオブジェクトです。 非同期処理はPromiseのインスタンスを返し、そのPromiseインスタンスには状態変化をした際に呼び出されるコールバック関数を登録できます。 jsprimer - 非同期処理:Promise/Async Function 例えば、出前アプリでピザを注文することをイメージしてみましょう。 ピザを注文すると、

      100秒で理解するPromise
    • JavaScriptの非同期処理をじっくり理解する (4) AbortSignal, Event, Async Context

      対象読者と目的 非同期処理の実装方法は知っているが、仕組みを詳しく知らないのでベストプラクティスがわからないときがある 実行順序の保証がよくわからないので自信をもってデプロイできない変更がある より詳しい仕組みを理解することでより計画的な実装をできるようになりたい という動機で書かれた記事です。同様の課題を抱える人を対象読者として想定しています。 目次 実行モデルとタスクキュー Promise async/await AbortSignal, Event, Async Context WHATWG Streams / Node.js Streams (執筆中) 未定 中止処理 並行処理ではしばしば実行中の処理を中止したい場合があります。 古典的なキャンセル処理 Webブラウザ/Node.jsともに、 setTimeout の中止が可能です。 const timeout = setTimeo

        JavaScriptの非同期処理をじっくり理解する (4) AbortSignal, Event, Async Context
      • GoとRust - 並行処理編

        GoとRustの変更処理を比較することで両者を深く理解する試みです。 詳しい内容やスライドでは省いたところをブログに書きました https://zenn.dev/nasa/articles/compare_rust_go_concurrency

          GoとRust - 並行処理編
        • テストの可読性を支える技術

          テストの可読性は、とても大事です。 そんな可読性をあげてくれるパッケージや考え方などを解説したので ぜひご覧いただければ幸いです。

            テストの可読性を支える技術
          • JestのTips集10選。サーバーサイドでNode.jsのJestを書いたことない人向け

            対象 業務レベルでサーバーサイドでJestを書いたことはないけれど、新プロジェクトでは書くことになったみたいな方を想定して記述しています。 Jestについては中々ベストプラクティスが集まりにくいので、経験的にこう書くと「きれいに」・「早く」・「正確に」書けるよというTipsを集めてみました。もし、よろしければお読みください。 前提 TypeScript Node.js Jest DBアクセスありの状態を想定しています 1. it文内では、必ず1回は、expectをつかって検証をする JestのPRをレビューしてるとたまに見受けるのですが、expectを使ってないケースがあります。 // NG it('userを正常に、作成できること', async() => { await createUser({ name: 'Mike' }); }); // OK it('pdfが正常に削除できること

              JestのTips集10選。サーバーサイドでNode.jsのJestを書いたことない人向け
            • Remixの凄みを紹介したい

              DevinはクラウドエンジニアAIになれるのか!? 実践的なガードレール設計/devin-can-become-a-cloud-engineer-ai-practical-guardrail-design

                Remixの凄みを紹介したい
              • 徹底解説! return promiseとreturn await promiseの違い

                先日、こちらのツイートを見かけました。 それに対して筆者は以下のツイートをしたところ、いくつかの反応が寄せられました。 コード部分を再掲します。 async function foo1() { return await Promise.resolve(); } async function foo2() { return Promise.resolve(); } async function wait() { await null; } // pika // chu // と表示される foo1().then(() => console.log("pika")); wait().then(() => console.log("chu")); // chu // pika // と表示される foo2().then(() => console.log("pika")); wait().the

                  徹底解説! return promiseとreturn await promiseの違い
                • async/await 比較(C#, JavaScript, Python) - Qiita

                  Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                    async/await 比較(C#, JavaScript, Python) - Qiita
                  • LINE Botの開発でCloudflareとHonoを使う理由

                    概要 速さが正義 LINE Botの開発でCloudflareとHonoを使う理由 Cloudflare Workersの応答速度が速いから PoPについて CloudflareはAWSのlambdaに比べてポイントオブプレゼンス(PoP)の数が多く、処理が実行される場所がよりユーザーの近くにある可能性が高い。 そのため、パフォーマンステストではAWS Lambda、AWS Lambda@Edgeよりも応答時間が小さいという結果になった。 コールドスタートがない Cloudflare Workersはコールドスタートがなく、LambdaとLambda@EdgeのようにEventBridgeで1分おきにツンツンしなくていい。 Service bindingsが便利だから Cloudflare WorkersのService bindingsを使用することで、worker間の通信はパブリックに

                      LINE Botの開発でCloudflareとHonoを使う理由
                    • イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理

                      JavaScript の非同期処理は非常に難しく、その難しさの原因は「制御の流れ」が掴みづらいことにあります。 この本では非同期処理を理解するために必要な概念であり、仕組みでもあるイベントループでプロミスチェーンの処理がどのように行われるかをクイズ形式で学ぶことによって、非同期処理の「制御の流れ」を掴めるように訓練します。 知識面については中枢となるイベントループの機構から、実行環境と API、async/await や Promise.all などの一通りの範囲を学習し、最終的には並列化や順序づけて反復処理を行うための制御方法と TypeScript での型注釈までを網羅します。

                        イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理
                      • 君だけのオリジナル async / await を作ろう / TSKaigi 2025

                        TSKaigi 2025 での発表資料です - スピーカーノート リポジトリ…

                          君だけのオリジナル async / await を作ろう / TSKaigi 2025
                        • Pythonの非同期処理の基礎とOpenAI APIへ並列リクエストする実践例

                          こんにちは、commmuneでデータサイエンティストをしているひぐです。 人間が苦手なマルチタスクをLLMに任せたら、効果的に処理してくれるのではないか?というモチベーションのもと、Pythonの非同期処理を使って並列かつストリーミングでChatGPTの回答を出力するアプリを作りました🤖 例えば下記は、ある課題を入力すると、深さ・広さ・構造・時間軸という異なる観点で解像度を上げてくれるアプリケーションです。 アプリに関する登壇資料↓ このアプリ作成にあたってPythonの非同期処理を勉強したところ、最初は多くの専門用語(コルーチン、イベントループ...)や独自の記法により、全体像をつかむのに苦戦しました。一方で、学んでみると予想以上にシンプルな記法で実装できること、そして応用範囲が広くて便利だと理解しました。 この記事では、そんな少し取っつきにくけど便利なPythonの非同期処理にフォー

                            Pythonの非同期処理の基礎とOpenAI APIへ並列リクエストする実践例
                          • ソケットAPIが遅すぎる?新たなio_uringを試す!

                            新しいAPIが作られるたびに、私たちは、古いAPIを置き換えるだけで高速化という夢をみます。何度夢破れても、高速なAPIが追加されたと聞けば、試さずにはいられませんよね! 今回は、Linuxカーネル5.1で追加されたio_uringを使って、Rustのasyncランタイムを実装し、gRPCサーバのベンチマークを実行してみました。 io_uringとはio_uringは、ファイルシステムとネットワークの非同期I/Oのために開発されました。同期よりも非同期のほうがおしゃれ、そういう雰囲気ありますよね!クラウドネイティブも、非同期にAPIを介して、なんかやってるやつですよね。 io_uringのインターフェイスは、高い性能を目指し、1)アプリケーションとカーネル間でのメモリコピーを避ける、2)複数のI/O要求を一度にカーネルに伝えることができる、という工夫がされています。 下図のように、アプリケ

                              ソケットAPIが遅すぎる?新たなio_uringを試す!
                            • Welcome to Comprehensive Rust 🦀 - Comprehensive Rust 🦀

                              Welcome to Comprehensive Rust 🦀 This is a free Rust course developed by the Android team at Google. The course covers the full spectrum of Rust, from basic syntax to advanced topics like generics and error handling. The latest version of the course can be found at https://google.github.io/comprehensive-rust/. If you are reading somewhere else, please check there for updates. The course is availab

                              • Pythonの非同期処理: これだけは知っておきたい! - Qiita

                                Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Pythonコルーチンの開発プロセスと新旧コルーチンの深層分析 1. Pythonコルーチンの歴史的進化 Pythonの長い開発の歴史を通じて、コルーチンの実装はいくつかの大きな変更を経てきました。これらの変更を理解することは、Pythonの非同期プログラミングの本質をよりよく把握するのに役立ちます。 1.1 初期の探索と基本機能の導入 Python 2.5:このバージョンでは、ジェネレータに.send()、.throw()、.close()メソッドが導入されました。これらのメソッドの登場により、ジェネレータは単なるイテレータ以上のもの

                                  Pythonの非同期処理: これだけは知っておきたい! - Qiita
                                • Facebook、次期ビルドシステムの開発でRust言語の採用を明らかに

                                  Facebookは同社のソフトウェア開発において、同社が主導して開発しているオープンソースのビルドシステム「Buck」を利用しています。 Backは高速なビルドが可能な点を大きな特徴としており、もともとAndroidアプリケーション向けのビルドシステムとして登場しました。 その後対応する言語やプラットフォームが拡張され、現在では15種類以上のプログラミング言語と、さまざまなスマートデバイス、VRヘッドセット、そしてサーバアプリケーションにまで対応しています。 次期ビルドシステムの開発を決断 しかしこうした拡張を重ねる中でBuckの複雑さは増していき、新機能の追加がどんどん難しくなってきたと、Facebook Developersのブログに投稿された記事「The future of Buck」で吐露されています。 同社の開発チームは約4年前から、Buckのアーキテクチャの改善を段階的に行う取

                                    Facebook、次期ビルドシステムの開発でRust言語の採用を明らかに
                                  • async/awaitのaの違い~async wait説への反論 - Qiita

                                    はじめに ncaq氏の記事を読んで様々なことを学習できました。 asyncが「syncしない」なのにawaitが「waitする」なのは何故か。awaitがasync waitであるという説は正しいのか。async/awaitの語源について学習したことを記事にしました。 asyncとawaitのa-の違い asyncはsynchronize(同期)にa-(否定)が付いてasync(同期しない)となります。 awaitはwait(待つ)にa-(否定)が付いて「待たない」となりません。a-(方向)が付いてawait(待つ)となります。 a-(否定)とa-(方向)の違いです。 a-(否定)は「エイ」と発音する傾向 asynchronous エイスィンクロナス 非同期 Ajax エイジャックス(Asynchronous JavaScript And XML) asymmetry エイスィメトゥリィ

                                      async/awaitのaの違い~async wait説への反論 - Qiita
                                    • 【Python】非同期処理が何もわからなかったあの頃の自分に向けて

                                      はじめに こんにちは。GMO アドパートナーズ新卒の樋笠です。 最近業務で、Pythonの非同期処理を書いているのですが、初めて非同期処理を学んだときに苦悶したことを思い出しました。 そこで、過去の自分に「こう伝えたら理解できるんじゃないかな」と考えながら記事を書きました。 非同期処理について学んだことがない人でも、これを読めば、「非同期処理がやろうとしていること」や「Pythonの非同期処理の基本的な書き方」が分かるようになる、というものを目指しました。 ぜひ最後までお読みください🙇🏻‍♂️ ※ わかりやすく説明するために、あえて言い切っている箇所があります。ご了承ください。 非同期処理ってなに? まず、非同期処理ってなに?という話ですが、「非同期処理」を理解するために、その対になる「同期処理」を考えてみましょう。 たとえして、こんな状況を考えてみましょう。 AとBの2つのタスクがあ

                                        【Python】非同期処理が何もわからなかったあの頃の自分に向けて
                                      • 『マンガでわかるJavaScriptのPromise』がKindleで無料公開

                                        『マンガでわかるJavaScriptのPromise』は、JavaScriptで通信などの処理を書く際に必須の仕様であるPromiseを、マンガで基礎から学ぶことができる。 『マンガでわかるJavaScriptのPromise』は、マンガ部分は76ページ、コードのまとめやコラム部分は51ページ、全体で167ページの構成で、コールバックを多用するJavaScriptの特徴や、Promise登場の背景、Promiseの仕組みや書き方、async/await、Promiseの静的メソッドまでを解説する。 目次は以下の通り。 第1話「JavaScriptのPromise」 第2話「同期処理と非同期処理」 第3話「コールバック関数」 第4話「コールバック関数のネスト」 第5話「Promiseの概念」 第6話「Promiseを使ったコード」 第7話「Promiseを使ったコード 2」 第8話「reso

                                          『マンガでわかるJavaScriptのPromise』がKindleで無料公開
                                        • 個人ブログの Next.js v13 移行でやったことまとめ

                                          Next.js v13 への移行でやったことまとめ 準備 基礎となる記事に目を通した -> https://zenn.dev/link/comments/eefa4975aaedaf マイグレーションガイドを見て一つずつ対応しようかなと思ったけど、記事が長いのでnext devで動かして出てきたエラーを潰していく方法にした。とりあえずビルドできるようになったら、見落としやより良いやり方があるか確認するために読む。 ページコンポーネントに対して pages にあるファイルを app ディレクトリに移動させる 規約 通りに page と layout にコンポーネントを分割する getServerSideProps の処理をasync function getData() に変更する コンポーネントを async 関数にする props ではなくコンポーネントの中でgetData()の返り値を

                                            個人ブログの Next.js v13 移行でやったことまとめ
                                          • フロントエンド API通信戦略

                                            はじめに 今回はフロントエンド(Next.js×TypeScript)におけるAPI通信手法について、基本的なAPI通信の手法に加えて、「Repository層, Model層, Factory, API-Client」を用いた手法を具体的なコード例とともに解説します。 この記事の対象者 フロントエンジニア初級者から中級者 API結合におけるディレクトリ設計が明確に定まっていない人 API通信をする上での「Repository層」「Model層」「Factory」 「API-Client」それぞれの責務について理解したい人 全体の概要図 後の章でこの部分は詳しく解説します。 基本的なAPI通信手法 今回紹介するAPI通信手法 基本的なAPI通信手法 カスタムフックを使わない場合 カスタムフックを使わない基本的なAPI通信手法としては下記が例の1つとして挙げられるかと思います。 src/ap

                                              フロントエンド API通信戦略
                                            • 同期Rustと非同期Rustで同じものを作るとどれくらい実装が変わるのか - Don't Repeat Yourself

                                              同期Rustと非同期Rustの書き心地や使い心地の違いがRustのAsync WGでも課題として挙げられており、目下できるかぎり近づける取り組みが進行中です。詳しいところはRustが最近運用しているProject Goalsの非同期Rustに関する部分を参照してください。ここを見ると、概ね現状抱えている課題などが見えてくると思います。 理想を言えば、std::ioやstd::netではじまるものを、たとえばtokio::ioやtokio::netに書き換え、必要な箇所にasyncと.awaitを付与していくだけで作業が完結してほしいところではあります。他の多くのプログラミング言語では、ままそのようにするだけで済むものが多い印象を持っています。たとえば、私が業務で使用するKotlinが実際にそうで、suspendをつけるだけでほとんどの処理を楽に非同期化することができます。もちろんKotli

                                                同期Rustと非同期Rustで同じものを作るとどれくらい実装が変わるのか - Don't Repeat Yourself
                                              • Timers Promises API が最高 - Panda Noir

                                                名前から既にワクワクするこのAPIは、なんとPromiseを返すsetTimeout、setInterval関数を提供しています!最高です… というわけで今回はそれの紹介です。 基本的な使い方 await setTimeout(1000) ←これができるんです!素晴らしくないですか?? top-level await や for-awaitと組み合わせるとこんな感じで書けます import { setTimeout } from 'timers/promises'; console.log('start'); await setTimeout(1000); // これでいける!! console.log('1s passed'); import { setInterval } from 'timers/promises'; console.log('start'); for await (

                                                  Timers Promises API が最高 - Panda Noir
                                                • Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ

                                                  エンジニアの鈴木(泰)です。 今回は、multiprocessingとthreadingとasyncioの違いとはなんだろう?という問に挑戦してみたいと思います。 この問の答えをグーグル先生に聞いてみると、非常にたくさんの情報がヒットします。しかしながら、どの情報も断片的なものばかりで(本記事もそうなのかもしれません)、色々と本を読んだりネットを漁ったりして、情報を補完しなければなりませんでした。 本記事は、僕が調べた限りの情報を集約し、この問に対する結論を1つの記事にまとめたものとなっています。 前提 マルチプロセスとは マルチスレッドとは Pythonにおけるマルチスレッド 本題 マルチプロセス(multiprocessingライブラリ)を利用したほうが良い場合 cpu_sec.py cpu_multiprocessing.py cpu_threading.py cpu_asyncio

                                                    Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ
                                                  • 非同期処理の道具箱 — HACK The Nikkei

                                                    この記事はNikkei Advent Calendar 2022の 13 日目の記事です。 こんにちは、Web チームの井手です。最近 Web チームで働く魅力について語ったので是非とも読んで欲しいです。 今日は非同期ランタイムについて書きます。 私は非同期ランタイムやサーバー進化論が好きで、たまにブログを書いたり、前職でもアドベントカレンダーに書いたりしていました。 本稿では効率的な非同期処理を実現するライブラリが中で何をしているのかを、低レイヤーの非同期処理そのものを解説しながら見ていきたいと思います。説明の都合上 Rust を使うので、Rust 特有の話もありますが、低レベルな API があればどの言語でも当てはまる話だと思います。この辺りは Rust, Scala(JVM), Erlang, Go などはお互いがお互いのアイデアを参考にしていて切磋琢磨しつつも似た仕組みをそれぞれが

                                                      非同期処理の道具箱 — HACK The Nikkei
                                                    • PHPで書いて覚える非同期処理 / php-async-programming

                                                      これを読んでも、非同期処理はわかりませんが、暗いトンネルの先に光が見えます。

                                                        PHPで書いて覚える非同期処理 / php-async-programming
                                                      • その処理、 setInterval じゃなくてブラウザが暇な時にやっちゃえば?

                                                        こんにちは。ぬこすけです。 setInterval などで定期的にブラウザで実行させている処理があったりするでしょう。 例えば、定期的にアクセストークンが有効かチェックし、無効だったら新しいトークンを取得するなど。 ブラウザはページのコンテンツを表示するために JavaScript の実行や UI の更新で忙しいです。 もし定期実行している処理がコンテンツ表示にかかわらない優先度の低い処理なのであれば、 できるだけブラウザの重要なタスクに影響を与えないようにしたい ものです。 この記事では できるだけブラウザの重要なタスクに影響を与えずに定期的に処理を実行させる方法を、アクセストークンのローテーションを例に紹介 します。 実装する機能 この記事で実装する機能は次の通りです。 React の hooks を使って実装します。 ブラウザのアイドル中(暇なとき)にアクセストークンを有効かチェック

                                                          その処理、 setInterval じゃなくてブラウザが暇な時にやっちゃえば?
                                                        • axe-core/playwrightとmarkuplintを導入しアクセシビリティの自動テストをできるようにした

                                                          Web アクセシビリティに興味があったので、まず機械的なチェックツールから学んで知識を増やそうということでこのサイトに @axe-core/playwright と markuplint を導入してみました。 @axe-core/playwright のセットアップ 既に Playwright が導入されている状況を想定し進めます。まず@axe-core/playwright をインストールします。 pnpm add -D @axe-core/playwright このサイトの場合 VRT として Playwright を動かしているテストがあるので(過去資料)、そのプロセスに同居する形で axe を実行することにしました。 e2e.test.tsimport AxeBuilder from "@axe-core/playwright"; import type { Page, TestI

                                                            axe-core/playwrightとmarkuplintを導入しアクセシビリティの自動テストをできるようにした
                                                          • Next.jsで整える。デザインとロジックの分離

                                                            先日開催されたジャムジャムJamstackで登壇させていただいた時の記事になります。 簡易構成のリポジトリを作成しましたので、参考になればと思います。 経緯 メディアサイトを作成することになった デザイナーコーダー ×1 フロントエンドエンジニア ×1(ワイ) Next.jsとmicroCMSでSSGしてvercelにデプロイ 私的、Jamstack王道構成ですね デザイナーコーダーさん「Jsわからんです」「抵抗感あります」 SSGをする為のpages/配下のファイルにはいろんな処理が記載されます。 getStaticPropsやgetStaticPathsとか ページネーションとかパンクズとか作る為の処理が色々記述されます。 この辺なんらかの方法で・いい感じに・分離できたら・いいですね^^ デザイナーコーダーが触るViewの部分 フロントエンドが触るロジックの部分 これを目指していきます

                                                              Next.jsで整える。デザインとロジックの分離
                                                            • 【C#】非同期処理とasync/await - Annulus Games

                                                              今回の記事はasync/awaitについて。 C#に限らず、現在では多くのプログラミング言語が非同期処理を扱う言語機能としてasync/awaitを採用しています。現在の.NETでも至る所にasync/awaitが使われており、避けて通ることはできない重要な機能となっています。 そこで今回は、C#における非同期処理とasync/await、またC#8.0で導入された非同期ストリームとIAsyncEnumerable<T>について、基本的な使い方を解説していきます。 また、記事の後半では実際にasync/awaitがどのように動作しているかをコンパイル結果を通して説明していきます。この辺りはやや高度なトピックになるため読み飛ばしていただいても構いませんが、async/awaitをより深く理解したい方は是非そちらも読んでみてください。 同期処理 / 非同期処理 async/awaitに関する話

                                                                【C#】非同期処理とasync/await - Annulus Games
                                                              • Rustで高速に大量のHTTPリクエストを投げる - Qiita

                                                                自己紹介 趣味でRustをやっている Twitter https://twitter.com/hatookov Github https://github.com/hatoo SoundCloud https://soundcloud.com/gfyxxqjngkze ネットワーク初心者なので誤りがあるかも知れません Rustで高速に大量のHTTPリクエストを投げる モチベーション oha HTTPロードジェネレータ Apache Bench(ab)みたいな tui-rsでリアルタイム表示 とにかくいっぱいリクエストを投げたい! ベンチマーク環境 WSL 2 Ryzen 3950x 今回はtokio https://github.com/hatoo/rust_http_benchmarks ベンチマーク雛形 ベンチマーク系のライブラリは複数回実行してしまい、時間がかかるのでやめた ざっくり

                                                                  Rustで高速に大量のHTTPリクエストを投げる - Qiita
                                                                • node modules なし blog を作っている話 | maxmellon's blog

                                                                  node modules なし blog を作っている話今年の9月頃から,no dependencies で blog を作っています.(devDependencies には,jest と TypeScript を入れています) 正直,フレームワークを使えば blog くらいならすぐ作れるだろうと思っていたのと, フレームワークの使い方を覚えることが自分の成長に大きくつながるとは感じることができず, やっていて楽しい + 学習する余地がありそうな no dependencies で blog を作ることにしました. リポジトリはこちらです maxmellon/kajitsu 機能要件を考えるざっくり,自分がほしいなと思った要件を整理すると, markdown で記事を書きたいblog だけじゃなくて cookie や Cache-Controll header などを検証できる sandb

                                                                  • Rustの非同期ランタイムが多すぎる?io_uringなやつを使おう!

                                                                    AWS、Google、Microsoftらが、Rust Foundationを設立し、今やRustでなければクラウドネイティブじゃない、と言っても過言ではありませんよね。クラウドネイティブと言えば、スケーラブルなシステム、Goはgoroutineを標準機能として提供しますが、Rustのasync/awaitは、標準機能に含まれていない外部ライブラリを必要とします。悪いことに、複数のライブラリ(非同期処理ランタイム)が乱立し、APIの互換性もありません。Rustはクラウドネイティブなのだろうか、という疑問を抱きながら、いくつかのランタイムの性能を、いつものgRPCベンチマークで比較してみました。 比較対象数多くのランタイムの中から、前回の記事で試した、Linuxの新しい非同期I/Oインターフェイスのio_uringを利用しているglommioと、普及している思われる、tokio、smol、a

                                                                      Rustの非同期ランタイムが多すぎる?io_uringなやつを使おう!
                                                                    • Promise のキャンセルについて - Qiita

                                                                      [ English version ] JavaScript と Node.js についてのこの徹底した投稿では、Promises のキャンセルの歴史、なぜNode.jsに関係があるのか、そして async/await APIで使おうとしたときに注意すべきことについて学ぶことができます。 この投稿は、JavaScript の Promise API をよく理解していて、 Node.js の経験がある方のためのものです。 歴史 2014 年に Promise API がブラウザに導入されて以来、人々は Promise で他に何ができるかを調べていました。ブラウザに最初に登場した関連APIは、HTTP リクエストのための fetch() でした。 HTTP リクエストの問題は、サーバーのリソースを消費することであり、サーバーに送信されるリクエストの数が多い場合はお金がかかります。このため、特に

                                                                        Promise のキャンセルについて - Qiita
                                                                      • ブラウザとNode.jsで動く1kBのキーバリューストレージライブラリを書いた

                                                                        azu/kvsというブラウザとNode.jsで動くファイルサイズが小さいキーバリューストレージを作りました。 モチベーション ファイルサイズが小さくIndexedDBを使っていて、Node.jsでも透過的に同じAPIで利用できるライブラリが必要となったため作りました。 textlint-editorというアプリを書いていて、キャッシュストレージとしてlocalstorage-ponyfillを使っていました。 しかし、localstorage-ponyfillはブラウザとNode.jsで透過的に動くストレージライブラリですが、LocalStorageベースとなっています。 textlint-editorでは、スクリプトをWeb Workerで動かすため同期的なAPIであるLocalStorageは利用できません。 そのため、IndexedDBベースでシンプルなキーバリューストレージを扱える

                                                                          ブラウザとNode.jsで動く1kBのキーバリューストレージライブラリを書いた
                                                                        • Why choose async/await over threads?

                                                                          A common refrain is that threads can do everything that async/await can, but simpler. So why would anyone choose async/await? This is a common question that I’ve seen a lot in the Rust community. Frankly, I completely understand where it’s coming from. Rust is a low-level language that doesn’t hide the complexity of coroutines from you. This is in opposition to languages like Go, where async happe

                                                                            Why choose async/await over threads?
                                                                          • リーダブルなテストのための、jest モックファクトリー関数

                                                                            単体テストを書く時、モジュール間の関連を検証するため、一部のモジュールをモックする必要が出てくることがあります。モックは様々な手法がありますが、書き方によって、メンテナンス性やテストの可読性が変わります。一般的に行われるモック手法を確認しつつ、よりリーダブルなテストを書く方法を紹介します。 ログイン API を呼び出す Web API クライアント 今回紹介する、モック対象の Web API クライアントです。Native Fetch API を関数でラップした、自作の Web API クライアント(ログインするためのlogin関数)です。 export type Data = { redirectUrl: string; }; export type Input = { email: string; password: string; }; export async function l

                                                                              リーダブルなテストのための、jest モックファクトリー関数
                                                                            • iOS 14以降をターゲットにiOSアプリ開発するならどんな構造設計をするか 2021初夏

                                                                              はじめに この記事はiOS 13以降にもSwift Concurrency(つまりasync/awaitやActorなど)が使えるようになると思っていなかったときに書いたものです。 はなしの準備 雑談として「最近はどんなアーキテクチャでiOSアプリ作るの?」という話題があったので整理の文章を書いてみます。 Appleの性質上、2021年7月でもまだ決め手のようなものはないし、私だったらTCAやVIPERを候補にモジュール分割してなるべくDB使わずに作って必要になったらCore Dataを採用すると思います。 それはそれとして、Android BlueprintのREADMEかなにかでGoogleのソフトウェアエンジニアが「チームが生産性を最大化させるアーキテクチャを選べばいい」なんてことを書いてあったのを読んだ記憶があるんですが、それは最もですねと思いつつも、しかしそもそも選択肢がわからな

                                                                                iOS 14以降をターゲットにiOSアプリ開発するならどんな構造設計をするか 2021初夏
                                                                              • Swift 6で来たる並行処理の大型アップデート近況

                                                                                最近、 Swift リポジトリに並行処理関係の Pull Request (PR) が続々とマージされています。 たとえば、次のような PR があります。 Add async to the Swift type system. #33147 Add @asyncHandler attribute. #33476 Import "did" delegate methods as @asyncHandler. #34065 Import Objective-C methods with completion handlers as async #33674 Basic support for actor classes and actor isolation #33906 Swift の並行処理( Concurrency )関連の機能については、 2020 年 1 月に発表された "On th

                                                                                  Swift 6で来たる並行処理の大型アップデート近況
                                                                                • 第2章 ブラウザ操作自動化の基本 ~非同期処理を扱うasync/await関数、自動化の鍵を握るPuppeteerコンポーネント | gihyo.jp

                                                                                  [速習] Puppeteer ~ヘッドレスChromeでテスト&スクレイピング 第2章ブラウザ操作自動化の基本 ~非同期処理を扱うasync/await関数、自動化の鍵を握るPuppeteerコンポーネント 第2章では、実際にヘッドレスChromeを自動化するうえで必要となる、最新のJavaScriptの構文やPuppeteerのAPIについて解説します。 進化し続けるJavaScript PuppeteerのAPIを解説する前に、第1章の冒頭で掲載したサンプルコードを見返してみましょう。もしかすると、中にはまったく見慣れない構文が見つかったかもしれません。 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await b

                                                                                    第2章 ブラウザ操作自動化の基本 ~非同期処理を扱うasync/await関数、自動化の鍵を握るPuppeteerコンポーネント | gihyo.jp