なにかを初めて学ぶこつは基本的には概念のモデリング、つまり「たとえ」を筋良くやるということに尽きると思う。
例えば今は認証基盤の構築のためにORYのHydraというOSSについて学んでいるが、一緒に参画しているメンバーと比較して自分の学習は圧倒的に速く正確だと感じる。
それはなぜかというと、まずそもそもHydraというものがOIDCプロトコルの実装のみを司る、認証サービスやユーザープールから見たらプロキシとして動作するものだということを理解したうえで追っているからだと考えている。
HydraのミニマルなデモではOIDCプロトコル用のサービスのはずなのに一つのリポジトリの中でIDとパスワードによるログイン画面を実装しているものが多く、それによって「え、結局認証画面自作する必要あるの?」となってしまう人が多いのだろう。
対して、そもそもがプロキシとして動作するということを理解しておけば、なるほどここで実装されている認証画面はHydraにとってはアップストリームであり、Hydra自体とも、OIDCの利用者であるクライアントにとっても特に関係のないものだ、ということが簡単にのみこめる。
で、プロキシというもの自体はまた何かのアナロジーによって自分は理解してきた気がするし、またHydra自体も純粋なプロキシではないわけで、今後何かサービスを仲立ちする存在に出会ったときにこれはHydraのようなものかもしれないと思う日も来るだろう。
そういった意味のテクストを織っていく営みが学びであり、そのプロセスの中で、私たちは、よく知っているものから、少しだけよく知らないものに向かって小さい歩幅で歩くほかないのだと思う。