0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学習メモ リアクティブプログラミング

Posted at

リアクティブプログラミングについて 学習メモ

1. リアクティブプログラミングとは?

リアクティブプログラミングは、データフローと変更の伝播を軸とする手法。Excelのセルに書く数式のように、あるデータが変更されると、そのデータに依存するすべてのものが自動的に更新される仕組みを「あらかじめ」構築しておくというもの。

  • 命令型(古いやり方?):コンピュータに「どうやるか」を段階ごとに指示する。
    • :ボタンをクリックしたら、この関数を実行して、画面を更新する。
    • 課題:コードが複雑になり、非同期処理の管理がきちんとできない。

ただし、なんでもかんでもではなく、単純な告知や連絡の授受が主な目的の場合は直接HTML/CSS/JavaScript/PHPなどで書くべき。

  • 宣言型(新しいやり方):プログラムに「どういう状態であってほしいか」を記述する。
    • :このデータが更新されたら、画面を自動的に変化する。
    • 解決:複雑なデータの流れをシンプルに表現できる。

2. なぜライブラリが必要なのか?(私は嫌がっていましたが)

リアクティブな仕組みをゼロから実装するのはコスト無視。「RxJS」のようなライブラリは、その複雑さをすっ飛ばして、以下の便利な機能を提供している。

  • Observable:時間とともに発生するデータ(クリック、APIレスポンスなど)をストリームとして扱う。
  • オペレーター:ストリーム上のデータを変換、フィルタリング、結合する都合の良い関数(mapfilterなど)。

ライブラリを使うことで、データの流れの設計に集中できる。


3. 私の感じる壁と解決策

  • 「ブラックボックス」への不安:ライブラリが裏側で何をしているか見えていない。
    • 解決策:とりあえず最初は基本的なオペレーターの使い方を学ぶ。難しいことは徐々に後付けで概念を理解していく。
  • CSSの壁:Solidityのような厳格なロジックから、CSSのような視覚的で曖昧なルールへの思考の切り替えは難しかった。
    • 解決策:CSSが動的なレイアウトを扱うための「再利用可能なルール」であり、デザイン・GUIツールとは目的が異なることを理解した。面倒だったがそのセクションはとりあえず通過した。

4. 今後の学習の方向性に見合う役割と認識

  • Webフロントエンド: ReactやVue.jsなど、UIフレームワークの多くはリアクティブな仕組みを内包。
  • サーバーサイド: サーバーへの負担を軽減するため、命令型から非同期処理を効率化するリアクティブなアーキテクチャへの移行も進んでいる。

結論

私はもっとリアクティブプログラミングを学んで、咀嚼し完全に腑に落とす。現代の複雑なWebサービスを効率的に開発するためには、やはり不可欠みたいだ。AIの活用が進んでも、データフローの設計やデバッグといった本質的な部分は、使う人間の能力次第。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?