最近心がけていることがあって、それは気になる技術トピックがあった場合、それが試せるものあればまずは試しに動かしてみる。
ということを心がけているようにしています。
例えば、先日投稿したViewComponentについての記事についても自分で試してみて動かしてみることで、わかったことがありました。
ということを心がけているようにしています。
例えば、先日投稿したViewComponentについての記事についても自分で試してみて動かしてみることで、わかったことがありました。
今後Railsで話題になるかもしれないViewComponentを試した
Rails6.1から「サードパーティー製のコンポーネントフレームワークのサポート」が行われるようです。 Introduce support for 3rd-party component ...
概念や機能を表面的に理解しただけでわからないこともある。
それなりにWebエンジニアとしても年数を重ねていて、
「○○のライブラリは実質△△の(他言語)××(ライブラリ)だよね。」みたいなのがすぐにわかるものも出てきた。上記のViewComponentの例もそうで、「ReactとかVueと同じなんだろうなぁ」というのは確かにそうだったんだけど、
参考にしていた記事は古い情報で、いくつか現状と異なる点がありました。
1. そのまま実行してしまうと、ViewComponentのAPIが変わっており、エラーになってしまうこと。
2. 当時はActionView::ViewComponentというGemをRailsがMergeするという内容だったが、「サードパーティー製のコンポーネントフレームワークのサポート」に内容を変更したこと。
が新しくわかったことです。
これらについては、実際にViewComponentのREADMEや公式ドキュメント、あとはRailsのPullRequestを実際に見ることですぐにわかりました。
参考した記事が書かれたのはおおよそ去年で、当時は情報として間違ってはいなかったのだけど、
バージョンアップだったり、年月の経過で見直されたのだと思います。
表面的に参考記事を見ているだけで終わると分かっていなかったことです。
「○○のライブラリは実質△△の(他言語)××(ライブラリ)だよね。」みたいなのがすぐにわかるものも出てきた。上記のViewComponentの例もそうで、「ReactとかVueと同じなんだろうなぁ」というのは確かにそうだったんだけど、
参考にしていた記事は古い情報で、いくつか現状と異なる点がありました。
1. そのまま実行してしまうと、ViewComponentのAPIが変わっており、エラーになってしまうこと。
2. 当時はActionView::ViewComponentというGemをRailsがMergeするという内容だったが、「サードパーティー製のコンポーネントフレームワークのサポート」に内容を変更したこと。
が新しくわかったことです。
これらについては、実際にViewComponentのREADMEや公式ドキュメント、あとはRailsのPullRequestを実際に見ることですぐにわかりました。
参考した記事が書かれたのはおおよそ去年で、当時は情報として間違ってはいなかったのだけど、
バージョンアップだったり、年月の経過で見直されたのだと思います。
表面的に参考記事を見ているだけで終わると分かっていなかったことです。
試しただけでは終わらないこと
ですが、気を付けないといけないのは、試してみた系の記事よくありがちな本当に試してみただけで終わってしまうことです。
それでブログやQiitaを書いても短期的には読まれる記事にはなるのでしょうが、正直書いているだけ、とりあえず動かしただけでは、自分の血肉には何もなっていないと思います。
例えば、よく僕が言っているActionTextを単に rails newして、チュートリアルをなぞって使ってみて満足しただけのブログと、
ActionTextを使って実装したブログツールを使って投稿し、いろいろ機能を開発してみた人のブログでは、
あなたがActionTextについてより知りたい場合にどっちの人のブログを見たいでしょうか?
実際の仕事で使えるのが一番いいんですが、試しに使ってみるところから、もう一歩だけ踏み込んで使ってみるだけでもわかることはかなり増えると思います。
それでブログやQiitaを書いても短期的には読まれる記事にはなるのでしょうが、正直書いているだけ、とりあえず動かしただけでは、自分の血肉には何もなっていないと思います。
例えば、よく僕が言っているActionTextを単に rails newして、チュートリアルをなぞって使ってみて満足しただけのブログと、
ActionTextを使って実装したブログツールを使って投稿し、いろいろ機能を開発してみた人のブログでは、
あなたがActionTextについてより知りたい場合にどっちの人のブログを見たいでしょうか?
実際の仕事で使えるのが一番いいんですが、試しに使ってみるところから、もう一歩だけ踏み込んで使ってみるだけでもわかることはかなり増えると思います。
具体的には、試したときに自分なりの感想を持つ
ライブラリなら「運用が難しいか?」だったり「導入しやすいか?」だったりの観点で自分なりに使ってみて受けた感想を書くようにしています。
とにかく脳死状態で使ってみたり、みんなが使っているから覚えてみよう(ほかに目的を持っているという意味です。)みたいなのはなるべくしないようにしています。
とにかく脳死状態で使ってみたり、みんなが使っているから覚えてみよう(ほかに目的を持っているという意味です。)みたいなのはなるべくしないようにしています。
好奇心で試してみた、調べたことは仕事の役に立つかもしれない
このブログを通して、チュートリアルでしか触れなかったActionTextについて知り、
さらにはActionText::Attachmentという便利機能使って、画像などの添付だけでなく各Modelも設定を行えば添付が可能で、
その機能を応用してメンションの機能を作る動画を知ることができました。
そこでどうやってActionTextが各Modelの添付を行っているのか?
どうやって動的にモデルを読み込んでいるのか?という仕組みがどうしても気になってしまい、
Railsのリポジトリをちょっとだけ眺めてみたりしていました。
その設計はHTML(うーん、どっちかって言うとXML?)の良さを生かした設計でした。(具体的には後日...)
最後には仕事で使う機能の設計の基礎になりました。というか会社で使っているRailsが6ではないので、ほぼ同じ考え方のものをそのまま作って対応しました。とはいえこれまで対処方法の発想がなく困っていたところなので、最新のRailsからヒントをもらって実装することができました。良かったですね。
今回はたまたま役に立ったけど、いつもそうとは限りません。
まぁ役に立てばいいかなぁ位のスタンスで、こういったプライベートな技術調査や勉強みたいなのはするのが一番いいと僕は思いました。
さらにはActionText::Attachmentという便利機能使って、画像などの添付だけでなく各Modelも設定を行えば添付が可能で、
その機能を応用してメンションの機能を作る動画を知ることができました。
@mentions for Users with ActionText in Rails 6 (Example) | GoRails - GoRails
Mentioning Users with an @mention is a super common feature. Trix and ActionText are now part of Rails 6 which means we can very easily add support for tagging users with @mentions and other custom attachments in your applications.
そこでどうやってActionTextが各Modelの添付を行っているのか?
どうやって動的にモデルを読み込んでいるのか?という仕組みがどうしても気になってしまい、
Railsのリポジトリをちょっとだけ眺めてみたりしていました。
その設計はHTML(うーん、どっちかって言うとXML?)の良さを生かした設計でした。(具体的には後日...)
最後には仕事で使う機能の設計の基礎になりました。というか会社で使っているRailsが6ではないので、ほぼ同じ考え方のものをそのまま作って対応しました。とはいえこれまで対処方法の発想がなく困っていたところなので、最新のRailsからヒントをもらって実装することができました。良かったですね。
今回はたまたま役に立ったけど、いつもそうとは限りません。
まぁ役に立てばいいかなぁ位のスタンスで、こういったプライベートな技術調査や勉強みたいなのはするのが一番いいと僕は思いました。