並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 65件

新着順 人気順

非同期プログラミングの検索結果1 - 40 件 / 65件

  • Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita

    はじめに 非同期プログラミングと呼んでいるのは、ノンブロッキングIOと select, poll, epoll, kqueue のようなIO多重化を利用したネットワークアプリケーションを書くことです。 node.js で websocket 使ったチャットを書くとかそういうのです。 「他の多くの言語」とは、 Python (asyncio), node.js, C# などを想定しています。 Erlang や GHC なんかは Go に近いかも知れません。 async / await がない言語では、「コールバック地獄」や「deferred地獄」のような問題もありますがこの記事では扱っていません。 async / await のメリットを解説した他の記事を参照してください。 あとこの記事は主にランタイムに関する部分を扱っているので、「それは言語じゃなくて処理系の問題だ!」等の頓珍漢な揚げ足取

      Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita
    • Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG

      こんにちは、R&Dチームの齋藤(@aznhe21)です。 さあみなさん、ついにこの時がやってまいりました。 本日2019/11/8にリリースされたRust 1.39により、あらゆる環境で最高速な非同期プログラミングが可能になりました。 新たな時代に乗り遅れないよう、今のうちにRustでの非同期プログラミングをマスターしておきましょう。 なお、この記事は、先日開催したOPTiM TECH BLOG Meetupの内容を大幅に加筆修正した上でエントリに仕上げたものです。 まず最初に伝えたいこと 非同期の歴史 Rustの非同期プログラミングの歴史 Rust 1.0以前 Rust 1.0 〜Rust 1.3 Rust 1.2あたり Rust 1.11あたり Rust 1.26あたり Rust 1.36 Rust 1.39 Rustの非同期プログラミングの特徴 ゼロコスト抽象化 プラットフォーム非依

        Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG
      • 東京Node学園#1「非同期プログラミングの改善」のエッセンス

        3. Nodeの本を書いてます  タイトル未定?  最初から最後までNode  JSの基本とか他のSSJSとか一切なし  Node Nodeの基本から応用まで盛りだくさん  500ページ級?  発売時期?  本当はもうすぐ出るはずだったけど・・・

          東京Node学園#1「非同期プログラミングの改善」のエッセンス
        • 非同期プログラミングを驚きのシンプルさに (するかもしれない) Flow.js を公開しました。 - latest log

          (ε・◇・)з o O ( (ミ・◇・ミ) o O ( あたし。ずっと思ってた… (ミ・◇・ミ) o O ( あたしの脳みそだと Deferred/Promises は、ちょっと難しすぎるって… (ミ・◇・ミ) o O ( jQuery.Deferred 解説記事をいくつかみたけど、すごく… モジモジしてて、ちょっと縦長すぎるんですもの… (ミ・◇・ミ) o O ( だから作っちゃった… ).done(); 非同期処理をシンプルに書ける、とても小さなライブラリをリリースしました。 Deferred/Promises は既存の構造や, そもそもの考え方を大きく改変する必要がありますが、 flow.js はあまり大きな違和感もなく、現在の流れを維持したまま導入できると思います。 使い方はこちらをごらんください http://www.slideshare.net/uupaa/flowjs リポジ

            非同期プログラミングを驚きのシンプルさに (するかもしれない) Flow.js を公開しました。 - latest log
          • Perl 非同期プログラミング

            Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。

              Perl 非同期プログラミング
            • デブサミ2016で「Webエンジニアのための並行/非同期プログラミングの実際とこれから」というパネルディスカッションをしました - たけぞう瀕死ブログ

              先日のデブサミ2016でピクシブの川田さんによるモデレートでGolang(メルカリのbokkoさん) × node.js(古川会長) × Scala(わたくし)という謎の組み合わせでパネルディスカッションをさせていただきました。 event.shoeisha.jp ユーザ層や適用領域が異なる言語ということもあり、噛み合うのか若干不安があったのですが、いい感じにまとまったのではないかと思いますw パネルディスカッションのまとめ 総論としては ハードウェアのリソースを使い切るために並行処理がますます重要になっていく ただし、アプリケーションのレイヤではなるべくそれを意識させないことが重要 という当たり前といえば当たり前の話だったのではないかと思います。ECMAScript7のAsync/Awaitは記述は同期的だけどブロックはしないという意味で理想に近いかもしれません。 普通にWebアプリを書

                デブサミ2016で「Webエンジニアのための並行/非同期プログラミングの実際とこれから」というパネルディスカッションをしました - たけぞう瀕死ブログ
              • Pythonの非同期プログラミングを完全理解 - Qiita

                非同期プログラミング 非同期プログラミングについて、聞いたことのある人は多いと思います。例えば、フロントエンドで使われているJavaScriptはシングルスレッド言語で、メインスレッドをブロッキングさせないため、様々な関数は非同期処理になるよう実装されています。Node.jsもその性質を受け継ぎ、I/Oバウンドタスクに長けています。しかし、Pythonになると、並列・並行処理に対応しているため、ほとんどの人は自身のプロジェクトで非同期プログラミングを利用した経験がないでしょう。もちろん、Tornado、TwistedやGeventなどの非同期フレームワークが有名で使ったことのある人は少なくないですが、変わったエラーにぶつかった時はなかなか解決できないでしょう。 近年のPyConの傾向から見れば分かりますが、非同期プログラミングは間違いなくPythonエコシステムの次のトレンドになります。ま

                  Pythonの非同期プログラミングを完全理解 - Qiita
                • 仮想パネル: JavaScriptで非同期プログラミングを乗り切る方法

                  これに対して、CommonJSグループはPromiseという形でこれに答えている。これは任意の時点で、完了しているかもしれないし完了していないかもしれない、非同期に実行されるアクションの結果を表現したオブジェクトとのインターフェイスを提供する。この方法では、さまざまなコンポーネントが非同期アクションのためのpromiseを返すことができ、コンシューマは予測可能な形でそのpromiseを利用できる。また、Promiseは非同期性を支援するために構文上便利な言語レベル拡張のために利用される基本エンティティを提供することもできる。 Stratified JavaScriptはこれとは別のアプローチをとっており、JavaScript言語のスーパーセットを提供することで、この問題を解決している。しかし、使う言語を切り替えられないのなら、とるべき道はシーケンシャルなコードをエミュレート可能な、柔軟なA

                    仮想パネル: JavaScriptで非同期プログラミングを乗り切る方法
                  • ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita

                    非同期プログラミングについて、イメージだけを超速で掴むための記事を書きました。非同期プログラミングが全くわからない人、具体的には、「async await ってなに……?」「for 文で実行していくのと何が違うの……?」レベルの人を想定しています。 非同期プログラングって何? 同期的じゃないプログラミングです。同期的ということは、プログラムが上から下に順々に実行されるということです。つまり、普通のプログラムはだいたい同期的です。言い換えれば、非同期プログラミングは順番が入れ替わる(可能性)のあるプログラムです。なぜそんなことをするかについては後述します。 ペペロンチーノを作りたい あなたはペペロンチーノを作りたいとします。以下のタスクが必要です。 パスタを茹でる(5 分) ニンニクを切る(1 分) ソースを作る(4 分)、ただしニンニクを切っている必要がある 盛り付けをする(0 分)、ただ

                      ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita
                    • モナドの本当の力を引き出す・・・モナドによる同期/非同期プログラミングの抽象化 - xuwei-k's blog

                      以下の2つの続き ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 FutureとEitherの話の続き(ApplicativeとMonadの違い) 上記の2つ(特に最初の方)を読んだことを前提で書くので、読んでない人は先にそちらを読みましょう。 なんだか少し関連する話(?)で盛り上がっていて、書かないといけない気がしてきたので 非同期プログラミングの難しさとScalaのFuture そのtogetterの議論について色々書きたいこと*1もありますが、それは置いておき、表題の「モナドによる同期/非同期プログラミングの抽象化」について書きます。というか、(非同期プログラミングの話より)便乗してモナドとモナドトランスフォーマーの便利さを話したいだけかもしれません(?) 前回2つは「Future使って非同期にしても、だいたい関数の本体同じでいけるよ」ということを書きました

                        モナドの本当の力を引き出す・・・モナドによる同期/非同期プログラミングの抽象化 - xuwei-k's blog
                      • Java EE環境における非同期プログラミング - nekop's blog

                        Java EE環境では基本的にスレッドの生成は許されていません。この制限はEJB仕様書に記述されており、ブループリントなど他のドキュメントにも記載されています。これらの制限はかなり古い時代に考えうる最大の制限を記述したものであり、「ファイルにアクセスしてはならない」など今となってはあまり現実的ではない記述も多くなっています。しかしながら、「スレッドを生成してはならない」というのは依然多くのコンテナに適用される現在も有効な制限であり、実際にスレッドの生成などを行うと誤動作するケースがあります。今回は、なぜこのスレッドの制限があるのか、現実的にどうすれば良いのか解説します。 コンテナは様々なものをスレッドに結びつけて管理しています。様々なものというのは例えばセキュリティ、トランザクション、データソースなどのコンテナリソースです。コードのほうがイメージしやすいでしょうから、以下に擬似コードを挙げ

                          Java EE環境における非同期プログラミング - nekop's blog
                        • Windows ストア アプリで重要な非同期プログラミング(C#)について復習 - かずきのBlog@hatena

                          ここでは、C# 5.0で追加された非同期プログラミングのための構文について説明します。 非同期プログラミングの必要性 非同期プログラミングは、Windows ストア アプリでは重要な要素です。50ms以上かかる可能性のあるAPIのほとんどが非同期として提供されています。これは、時間のかかる処理を、同期的に呼び出した場合にアプリケーションの応答が、止まってしまうという問題を起こさないためです。時間のかかる処理を同期的に行った場合のイメージを以下に示します。 このような処理は、タブレットなどのタッチユーザーインターフェースではユーザーに非常にストレスになります。Windows ストア アプリでは避けるべき挙動になります。ここで、時間のかかる処理を非同期に行った場合のイメージを以下に示します。 このような処理を簡単に実装できるようにC#5.0から導入されたasync修飾子とawait演算子につい

                            Windows ストア アプリで重要な非同期プログラミング(C#)について復習 - かずきのBlog@hatena
                          • Rust Advent Calendar 2019 1日目 Rust の非同期プログラミングモデルはランタイム観点だと Go のそれに似ている - keno_ssの日記

                            この記事は Rust Advent Calendar 2019 の1日目の記事になります. 明日は topecongiro さんの予定です. TL;DR 去る 11/07 に Rust 1.39.0 がリリースされました. これはユーザー待望の async/await 構文が言語機能として取り込まれた安定版リリースとなります. Advent Calendar 最初の記事としては取り上げないわけにはいきません. もう既に他の良い記事がたくさん書かれていますが, この記事ではそれらを補完する視点から説明してみようと思います. Rust と非同期 IO の歴史 κeenのHappy Hacκing Blog -- async/awaitと合成可能性 async/await の実装と利便性のバランスの良さについて. κeenのHappy Hacκing Blog -- RustのFutureとその

                              Rust Advent Calendar 2019 1日目 Rust の非同期プログラミングモデルはランタイム観点だと Go のそれに似ている - keno_ssの日記
                            • 非同期プログラミングの話 - 南よ! 海の見える方!

                              時は2005年ごろ、Officeはスレッドを有効に使うべく悪戦苦闘していた。Outlook2007などは外部から見てもその苦闘が見られただろう(不安定、とも言う)。社内にいれば、そのずっと酷いバージョンのアルファやベータもドッグフードする機会があり、なかなかに絶望の淵を覗く思いだった。 その当時のたくさんの失敗の経験とその分析から、社内には割とたくさんの非同期プログラミングのノウハウがあった。 といってもかっこいいテクノロジとかデザインパターンのような華々しい物では無い。もっと地味な、Writing Solid Code非同期版のような感じだった。Avalon以前の地味な、面白くもない世界。 非同期と並列は違う。直交はして無いけれど。 「ブロックしてるコールを非同期コールに差し替えればいいんでしょ?」そう思って作られた大規模アプリは、すぐに動かなくなった。非同期のアプリとしてただ普通に振る

                                非同期プログラミングの話 - 南よ! 海の見える方!
                              • Async/Await - 非同期プログラミングのベスト プラクティス

                                async void を避ける 使用できる戻り値の型には、Task、Task<T>、および void の 3 つがありますが、async メソッドで自然な戻り値の型は Task と Task<T> だけです。同期コードから非同期コードに変換する際、型 T を返すメソッドはすべて Task<T> を返す async メソッドになり、void を返すメソッドはすべて Task を返す async メソッドになります。次のコード スニペットは、void を返す同期メソッドとそれに相当する非同期メソッドを示しています。 void MyMethod() { // Do synchronous work. Thread.Sleep(1000); } async Task MyMethodAsync() { // Do asynchronous work. await Task.Delay(1000);

                                  Async/Await - 非同期プログラミングのベスト プラクティス
                                • Rust でお気楽非同期プログラミング - Qiita

                                  Rust 1.39 からは async/await が安定化され、非同期処理がぐっと書きやすくなりました。 Futureトレイトを自分で実装したり、loop_fnで所有権を取り回したりmap_errでエラー型を魔改造したり することはもうありません! おもむろに await していきましょう この記事は Rust 1.46 と tokio 0.2.22 に基づいています Rust での非同期処理 Rust では、非同期な計算は Future トレイトとして抽象化されています。JavaScript などでは Promise と呼ばれるものです。以前は非同期処理を扱うときに、場合によっては Future トレイトを実装する必要があることがありましたが、現在では async キーワードを使うことで簡潔に記述することができるようになりました。 async キーワードを使い、 非同期関数 async

                                    Rust でお気楽非同期プログラミング - Qiita
                                  • Python 3.5、async/await非同期プログラミングをサポート予定

                                    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が最近リリースされ、重要な変...

                                      Python 3.5、async/await非同期プログラミングをサポート予定
                                    • 「非同期プログラミング養成ギブスとしてのnode.js」について - 表道具

                                      東京Node学園 11時間目 でLTをさせていただきました。 node.jsといえば非同期プログラミングの扱いが大変だという印象がありますが、それにいろいろ立ち向かった結果、ちゃんとパーツに分けたり例外処理を書こう という当たり前の結論になりました。スライドは 非同期プログラミング養成ギブスとしてのNode.js from Tajima Itsuro になります。 正直、まだプログラミング言語については初心者のため、Promiseやgeneratorなどについて理解が浅かった部分はあり、それが原因で詰まったことが多かったです。しかし、node.jsはちゃんと書けばちゃんと応えてくれる言語だという印象です。LTが終わった後に何人かと話をしたのですが、現在のnode.jsでは様々なパラダイムが次々と出てきています。その中で、保守性の問題がどうしても出てくるのではないかという懸念があり

                                        「非同期プログラミング養成ギブスとしてのnode.js」について - 表道具
                                      • 非同期プログラミングの難しさとScalaのFuture

                                        Toshiyuki Takahashi @tototoshi @edvakf 2つめはFuture[Either[E,T]] 派というかモナドトランスフォーマー派だと思いました。この場合はEitherTじゃなくてOptionT使うと思います。 2015-03-26 10:30:37 Toshiyuki Takahashi @tototoshi @edvakf Scalaだとモナドトランスフォーマーそんな一般的ではないので普通の人は妥協して、もしくはそういうものとして最初の形にすると思います。最後のやつはIOとして想定しているのがDB以外もある気がしてなんとも言えないですが、よく見るパターンではないです。 2015-03-26 10:32:27 Toshiyuki Takahashi @tototoshi @edvakf あと別の話で、asyncなドライバー使ってない限りJDBCはブロックす

                                          非同期プログラミングの難しさとScalaのFuture
                                        • 非同期タスク - タスクを使って非同期プログラミングを簡単に

                                          歴史的に見ると、IAsyncResult パターンは、非同期 API を実装する高パフォーマンスのアプローチとして .NET Framework 1.0 で導入されました。ところが、UI スレッドを操作する場合は別の作業が必要になるうえに、適切に実装しにくく、使用するのが困難でした。イベントベースのパターンは、IAsyncResult によって対処されていなかった UI の側面を容易にするため .NET Framework 2.0 で導入され、UI アプリケーションが 1 つの非同期アプリケーションを起動してそれを操作するというシナリオを中心に使用されています。 タスク パターン .NET Framework 4 では、非同期操作を表す方法として、新しい型、System.Threading.Tasks.Task が導入されました。タスクでは、次のように、CPU で実行される通常のコンピュー

                                            非同期タスク - タスクを使って非同期プログラミングを簡単に
                                          • neue cc - Rxを使って非同期プログラミングを簡単に

                                            こないだ公開されたMSDNマガジンの記事、非同期タスク - タスクを使って非同期プログラミングを簡単に。おお、これは分かりやすく非同期周りについて網羅されてる!あと、私はTask全然知らないので初歩から入る導入はお役立ちです。いやまあ、実際のとこTask周りの導入記事っていっぱいあるのに、未だにお役立ち、とか言ってるのもどうかと思わなくもないところではあるんですが不勉強なもので。 同期処理でUIをブロックしてしまう、スレッドプールに投げればいいぢゃない、イベントベースのパターンとAPM(IAsyncResultを使うAsynchronous Programming Model)、そしてTask。おお、全部ですね。全部、全部?そう、何か欠けてます、ええ、Reactive Extensionsが欠けています。というわけで、Taskと対比させながらRxでのコードを見ていきましょう。 非同期実行、

                                            • フォーマット文字列リテラル/非同期プログラミング機能など、Python 3.6で追加された新機能をザックリ理解しよう

                                              連載目次 2016年12月23日にPythonの最新版であるバージョン3.6がリリースされた。本稿ではその中でも特徴的な新機能を幾つか紹介していく。 Python 3.6で追加された主要な新機能 Pythonのドキュメント「What's New In Python 3.6」や、そのリリースノート(英語)にはPython 3.6で追加された機能や、変更点がまとめられている。 大まかなところを拾っていくと、構文的には以下のような機能が追加されている。 フォーマット文字列リテラル: いわゆる文字列補間 数値リテラルでのアンダースコアの使用: 「123456」を「123_567」などと記述可能 型注釈: 関数のパラメーター/戻り値の型に加えて、変数にも型注釈を付加可能に 非同期ジェネレータ: Python 3.5の非同期イテレータに加えて、非同期ジェネレータもサポートされた 非同期内包表記: 「a

                                                フォーマット文字列リテラル/非同期プログラミング機能など、Python 3.6で追加された新機能をザックリ理解しよう
                                              • core.async:ClojureとClojureScriptを使った非同期プログラミング

                                                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が最近リリースされ、重要な変...

                                                  core.async:ClojureとClojureScriptを使った非同期プログラミング
                                                • 「非同期プログラミングの改善」のエッセンス | gihyo.jp

                                                  サーバサイドJavaScript「Node.js」に関するイベント「東京Node学園#1」にて、小林浩一氏が発表した資料です。当日の様子はUSTREAMにて公開されています[1]⁠。 この発表では、コールバックスタイルで非同期プログラミングを行うと無名関数のネストが深くなってしまう問題に対する解決アプローチを提示しています。無名関数をやめてそれぞれに関数定義をしたとしてもgoto文のようにあちこちに処理が飛ぶことになり、見通しの悪さに対する根本的解決策にはなりません。そこで、フロー制御モジュールを用意して、固有処理を行う無名関数と「次」の無名関数を呼び出すコールバックとに分離し、複数の無名関数をチェインのように次々に呼び出すようにする、という案を考え出しました。エラーハンドリングを含めたフロー制御モジュールコードはリスト1のようになり、たったの13行に収まります。 現在、小林氏を含む有志に

                                                    「非同期プログラミングの改善」のエッセンス | gihyo.jp
                                                  • 非同期プログラミング - ASP.NET の非同期/待機の概要

                                                    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 ASP.NET の非同期/待機の概要 Stephen Cleary 非同期/待機を取り上げているオンライン資料のほとんどは、クライアント アプリケーションの開発を前提としていますが、非同期をサーバーで活用できる場面はないのでしょうか。もちろん、あります。今回は、ASP.NET の非同期要求について全体的な考え方を説明します。また、非常に役立つオンラインの参考資料も紹介します。ここでは async や await の構文については触れません。構文については、初心者向けのブログ記事 (bit.ly/19IkogW、英語) や、非同期のベスト プラクティスについてのコラム (msdn.microsoft.com/m

                                                      非同期プログラミング - ASP.NET の非同期/待機の概要
                                                    • Twisted ドキュメント: Twisted による非同期プログラミング

                                                      この文書は非同期プログラミングというプログラミング・モデルの紹介と Twisted の Deferred について解説したものです。「イベントの確約された結果」をシンボル化し、その内容をハンドラ関数に渡せるよう抽象化されたものが Deferred です。 この文書は Twisted 初心者向けのものですが、読者は Python のプログラミングに慣れ親しんでおり、サーバやクライアント、ソケットなどネットワークの基礎的な知識があることを前提に書かれています。これを読むことにより、(タスクのインターリーブを実行する)並行プログラミングの概要および Twisted の並行処理手法であるノンブロッキング・コード (non-blocking code) と非同期コード (asynchronous code) について理解できることでしょう。 Deferred を含む並行モデルの解説の後に、Defer

                                                      • 非同期プログラミング - 非同期のパフォーマンス: 非同期と待機のコストについて

                                                        このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 非同期のパフォーマンス: 非同期と待機のコストについて Stephen Toub 長い間、非同期プログラミングを扱えるのは、非常に熟練した自虐的な開発者、つまり、非線形の制御フローで繰り返されるコールバックについて考える時間、くせ、および精神的余裕がある開発者だけでした。このような開発者でなくても、Microsoft .NET Framework 4.5 を使えば C# と Visual Basic で非同期プログラムを作成できるようになります。すなわち、大多数の開発者が同期メソッドと同じように簡単に非同期メソッドを作成できるようになります。もうコールバックは必要ありません。同期コンテキストの遷移の中でコード

                                                          非同期プログラミング - 非同期のパフォーマンス: 非同期と待機のコストについて
                                                        • 非同期プログラミング - await による一時停止と再生

                                                          このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 await による一時停止と再生 Mads Torgersen コード サンプルのダウンロード 次期バージョンの Visual Basic と C# における非同期メソッドは、非同期プログラミングからコールバックを取り除く優れた手段です。今回の記事では、await という新しいキーワードの実際の動作について、概念のレベルからその課題まで詳しく説明します。 シーケンシャル構成 Visual Basic と C# は命令型プログラミング言語であり、これは Visual Basic と C# の特長でもあります。つまり、これらの言語では、順次実行される「順番に並べられた個別の手順」としてプログラミング ロジックを表

                                                            非同期プログラミング - await による一時停止と再生
                                                          • 非同期プログラミング - 非同期コードの単体テスト

                                                            このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 非同期コードの単体テスト Stephen Cleary コード サンプルのダウンロード 最近の開発では単体テストが重要視されます。プロジェクトの単体テストを行うメリットとしてよく知られているのは、バグの数が減ること、リリースまでの時間が短くなること、結び付きの強い設計にならないことなどです。どれもすばらしいメリットですが、開発者に直接関わるメリットもあります。単体テストを作成すると、コードに対する自信が深まります。テストが済んだコードへの機能追加やバグ修正が容易になります。これは、コードが変化している間も単体テストがセーフティ ネットの役割を果たすためです。 非同期コードの単体テストの作成には、いくつか特有の

                                                              非同期プログラミング - 非同期コードの単体テスト
                                                            • 【保存版】制御構造別非同期プログラミング完全制覇(サーバサイドJavaScript・CoffeeScript) - Qiita

                                                              補遺書いた ライブラリ化して、フロントエンドにも対応した。GitHubリポジトリ。で、npmに上げた。そして、フロントエンド向けの紹介も書いた。ついでに、「asyncライブラリじゃだめなの?」という問いへの答えは「駄目」だ。asyncはsetImmediateとかnextTickとかで制御を実現しているので、タイミングの問題およびパフォーマンスのロスを引き起こす。 はじめに 対象読者はJavascript中級者を想定していますが、上級者の方もざっと読んでみて下さい。実は中級者であることが判明するかも知れません。 非同期関数を使って順次処理を行う場合、継続で繋いでいきます。しかし、この継続による表現は、同期処理に比べて直感的ではないため、難しい処理はしなくても済むようにプログラミングする羽目になっているケースが少なくないのでは、と私は憂慮しています。わかんなきゃコルーチン使えばいいや、という

                                                                【保存版】制御構造別非同期プログラミング完全制覇(サーバサイドJavaScript・CoffeeScript) - Qiita
                                                              • 2009/09/18 おおたに@アリエルネットワーク PythonとTwistedで始める 非同期プログラミング プログラミングはそれ自体が楽しい 自己紹介 ✤ アリエルネットワーク:http://www.ariel-networks.com/ ✤ あ��

                                                                2009/09/18 おおたに@アリエルネットワーク PythonとTwistedで始める 非同期プログラミング プログラミングはそれ自体が楽しい 自己紹介 ✤ アリエルネットワーク:http://www.ariel-networks.com/ ✤ あすなろblog:http://blog.pasonatech.co.jp/ootani/ ✤ 個人のblog:http://blog.liris.org/ ✤ Mac好き ✤ Python好き コンピュータは待ちが一杯 ほとんどが待ち状態 スレッドにより効率化 状態が変化したときだけ処理 Network Programing Style 同期型 非同期型 •ブロッキングIO •処理が完了するまで待つ •ノンブロッキングIO •イベント駆動 •APIをコールするとすぐに 処理が戻る。 •ChromeやWeaveは非同期 処理が高速化に寄与 同

                                                                • 非同期プログラミングのデザイン パターン

                                                                  このセクションの内容 イベントベースの非同期パターンの概要 イベント ベースの非同期パターンによって、マルチスレッド デザイン固有の多くの複雑な問題を気にせずに、マルチスレッド アプリケーションの利点を活用できるしくみを説明します。 イベントベースの非同期パターンの実装 非同期機能を持つクラスをパッケージ化するための標準的な方法について説明します。 イベントベースの非同期パターンを実装するための推奨される手順 イベント ベースの非同期パターンに従って非同期機能を公開するための要件について説明します。 イベントベースの非同期パターンをいつ実装するかの決定 どのような場合に、非同期プログラミング モデル (APM) で表される IAsyncResult パターンではなく、イベント ベースの非同期パターンの実装を選択するかを判断する方法について説明します。 方法: イベントベースの非同期パターン

                                                                    非同期プログラミングのデザイン パターン
                                                                  • C# 非同期プログラミング

                                                                    Windows.Forms.Control はスレッドセーフではないので、 Forms.Control の非同期プログラミングの機構を使うことにより 安全な非同期プログラミングをすることができる。 以下のクラスライブラリでも、同様な機構が提供されている。 HttpSimpleClientProtocol LogicalMethodInfo SoapHttpClientProtocol 1. のThread を使うケースは、どこにでもある方法だし、あちこちに解説があるので問題ないでしょう。 しかし、2、3の 非同期プログラミングは、ほとんど情報がないし、VisualStudio.NET のヘルプの解説が最悪で、読み解くのにす~~っごく苦労しました。たぶん、翻訳(監訳)した人も何のことだか理解してないのでしょう。 非同期プログラミングは避けては通れないので、とにかくわかった範囲でメモっておきま

                                                                    • 非同期プログラミングのシナリオ - C#

                                                                      I/O バインドのニーズ (ネットワークからのデータの要求、データベースへのアクセス、ファイル システムの読み書きなど) がある場合、非同期プログラミングを利用できます。 CPU バインドのコードにも、コストのかかる計算の実行など、非同期コードに適したシナリオがあります。 C# は言語レベルで非同期プログラミング モデルを備えており、コールバックに苦労したり、非同期処理をサポートするライブラリに従ったりしなくても、非同期コードを簡単に記述できます。 C# は、タスク ベースの非同期パターン (TAP) と呼ばれるものに従います。 非同期モデルの概要 非同期プログラミングの中心になるのは Task オブジェクトと Task<T> オブジェクトであり、非同期操作をモデル化します。 これらは、async および await キーワードによってサポートされています。 ほとんどの場合、モデルは非常に

                                                                      • 非同期プログラミング - 非同期 MVVM アプリケーションのパターン: コマンド

                                                                        このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 非同期 MVVM アプリケーションのパターン: コマンド Stephen Cleary コード サンプルのダウンロード この記事は、確立されたモデル - ビュー - ビューモデル (MVVM: Model-View-ViewModel) パターンと async/await の組み合わせに関する連載の 2 回目です。前回は、非同期操作にデータ バインドする方法について説明し、データ バインドに適した Task<TResult> のように機能する重要な型、NotifyTaskCompletion<TResult> を開発しました (msdn.microsoft.com/magazine/dn605875 参照)。

                                                                          非同期プログラミング - 非同期 MVVM アプリケーションのパターン: コマンド
                                                                        • 非同期プログラミングのパターン

                                                                          .NET には、非同期操作を実行するための 3 つのパターンが用意されています。 タスク ベースの非同期パターン (TAP) 。1 つのメソッドを使用して非同期操作の開始と完了を表します。 TAP は .NET Framework 4 で導入されました。 .NET で非同期プログラミングを行う場合、これが推奨される方法となります。 C# の async キーワードと await キーワード、および Visual Basic の Async 演算子と Await 演算子により、TAP の言語サポートが追加されます。 詳細については、「タスク ベースの非同期パターン (TAP)」を参照してください。 イベント ベースの非同期パターン (EAP) は、非同期動作を提供するための、イベント ベースの従来のモデルです。 これは、Async サフィックスを持つメソッドと、1 つ以上のイベント、イベント

                                                                            非同期プログラミングのパターン
                                                                          • 非同期プログラミングとコールバック地獄 うるめねっと技研 – Linux派 -

                                                                            Posted on May 2, 2011 by cotaro サーバサイドJavascriptのアプリケーションサーバ「node.js」と言えば、高効率の非同期処理で知られる。 非同期処理は効率と引換えにコールバック地獄に陥るという批判をどこかのサイトで読んだのだが、やってみたらまさにその通りでびっくりした。 通常のプログラミングでは、関数やメソッドの返り値のreturnを加工して処理を進めていくが、非同期処理だと、returnを無視して処理がガンガン進んでしまう。 仕方がないので、一度コールバックを定義し始めると後続の処理もすべてコールバックで処理することになる。 コールバック地獄の対策については、「東京Node学園#1「非同期プログラミングの改善」のエッセンス」というプレゼンで解決法が提示されている。

                                                                            • 非同期プログラミング - 非同期 MVVM アプリケーションのパターン:データ バインド

                                                                              このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 非同期 MVVM アプリケーションのパターン: データ バインド Stephen Cleary async キーワードと await キーワードを使用する非同期コードによって、プログラムの記述方法が変化しています。これには相応の理由があります。async/await キーワードはサーバー ソフトウェアで役立ちますが、現在最も関心が集まっている分野は、UI を備えたアプリケーションです。そのようなアプリケーションで async/await キーワードを使用すると、UI の応答性を高めることができます。しかし、モデル - ビュー - ビューモデル (MVVM: Model-View-ViewModel) などの確

                                                                                非同期プログラミング - 非同期 MVVM アプリケーションのパターン:データ バインド
                                                                              • Unity 非同期プログラミング.pptx - Microsoft PowerPoint Online

                                                                                • 非同期プログラミング - 非同期への変換

                                                                                  このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 2015 年 7 月 Volume 30 Number 7 非同期プログラミング - 非同期への変換 Stephen Cleary | 2015 年 7 月 Visual Studio Async CTP の発表当時は恵まれた環境で作業していました。2 つの比較的小さなグリーンフィールド アプリケーション (新規開発のアプリケーション) を 1 人で担当していて、async と await のメリットを十分に生かせていました。当時は筆者を含め MSDN フォーラムのさまざまなメンバーが非同期処理に関する複数のベスト プラクティスについて調査、議論、実装を行っていました。最も重要なベスト プラクティスについては

                                                                                    非同期プログラミング - 非同期への変換