Notes C API & C++11+ & ReactiveX & Qt #1

仕事でAngularを使い始めました。Angularは、ReactやVueなどと比較されるSPAフレームワークです。開発にはJavaScript回りがわかればいいのですが、TypeScriptから入ることをお勧めされます。

https://angular.io/

www.typescriptlang.org

AngularJS(1.x)からAngular(2.x~)に移行したとき、TypeScriptが体に合わず、しばらく遠ざかっていましたが、世の中SPAなしでは生きていけず、またTypeScriptの構文がES6(ES2015)にも通じることから、意を決して取り込むことにしました。

ただ、後1つクリアしなければならないハードルがあります。RX(Reactive Extensions、ReactiveX)です。

http://reactivex.io/

Angularのチュートリアルに取り組んでいると、奇妙な言葉に遭遇します。

https://angular.io/tutorial/toh-pt4#observable-heroservice

「Observable」?オブザーバブル?監視可能なもの?

いろいろ端折りますが、乱暴にまとめれば「あらゆるデータを監視可能なストリーム(流れ)として扱えるようにした仕組み」で、これをAngularは積極的に取り込んでいるので、RX学習はほとんど必須科目になっています。

RXは大変奥が深いようで、私の学習レベルもまだまだですが、七転八倒の末、「なるほどこれがRXか!」というパラダイムシフトが起きて以来、手放せないロジックになっていることは確かです。今までFor文、コールバック、Promiseなどが当たり前だった頭の回路が、RXなしでは成立しないと言っても過言ではないです。私がパラダイムシフトを起こすために助けになったのは、この本のおかげです。

関数型リアクティブプログラミング (Programmer's SELECTION)

関数型リアクティブプログラミング (Programmer's SELECTION)

しかし待てよ、と。JavaScriptでこんな便利な考え方があるなら、C++の世界でも使えないことはなかろう、と。RXはあらゆる言語で展開されているようです。

ReactiveX - Languages

C++もRxCppという名前で展開されていました。となれば、以前から取り組んでいるNotes C APIラッパーライブラリを、RXや最新のC++言語使用を取り入れて、アップデートしてもよいのではないだろうか・・・、と思い立ちました。

もちろん、ベースとなるのは国内唯一のNotes C API本であるこの本です。

Notes/Domino APIプログラミング―C++とSTLによる実践的プログラミング

いまだにバイブルであることに変わりはありません。これに、C++11以降の言語仕様、ReactiveXの仕組み、QtマルチプラットフォームC++GUIフレームワークを組み合わせて、V10時代を迎えるNotes/DominoのC APIを使いやすくするライブラリを目指していきます。