DEV Community

e_ntyo
e_ntyo

Posted on

4 2

コモナドスケッチ ~ 2. 大改造!!劇的ビフォーアフター ~

コモナドスケッチ ~ 2. 大改造!!劇的ビフォーアフター ~

e_ntyoです。前回の投稿からだいぶ時間が空いてしまいましたが皆様いかがお過ごしでしょうか。私は先日誕生日を迎え、Twitterのフォロワーからよくわからないものをたくさん頂きました

さて、この連載はAngularで書かれたSPAをPureScriptで書き換えるというものです。前回はスクラッチでアプリケーションの骨組みをつくり、それを例にとってpurescript-halogenについて(かなりざっくりとですが)解説しました。

次回(今回)以降は非同期処理やTyped CSSについて書く予定でしたが…

連載終了のおしらせ

はい。終わります。

理由は2つありまして、1つは今回の記事を書くタイミングが見つからず、先日ついに 書き換えが完了してしまった ためです。こちらにデプロイ済みです。

じゃあ前回の投稿からこれに至るまでを記事にしてよ、という話なんですが、残念ながら私はPureScript初学者でコード(特にAPIリクエスト周り)がだいぶ汚いのです…Justin氏からアドバイスこそもらったものの、まだ反映できていません。この辺りは別途記事にできればいいなと思っています。

余談ですが、WatchingUのCI環境では前々から気になっていたNix Package Managerを使ってみました。Nixを使ってPureScriptアプリケーションのビルド環境を構築する方法については、Justin氏のこちらの記事が詳しいです。psc-package2nixを使えばめちゃめちゃ簡単にミニマムなPureScriptのビルド環境が手に入ってうれしいです。

もう1つは、Halogenのrealworld exampleが産まれようとしているためです。こちらはpurescript-halogen-formlessの作者で、実務でもHalogenをゴリゴリ使っているというプログラマのthomashoneyman氏によるもので、本体はまだWIPですがガイド(こういう指針でアプリケーションを設計していこうみたいなやつ)の大部分をこちらで読むことが出来ます(少し前までソースコードと同じリポジトリにあったのですが切り離されたようです)。私の記事なんかを読むよりこっちを読んだほうが絶対に良いです。間違いないです。

ガイドには主にアプリケーションモナドを定義して変なことが起こらないようにしようだとか、純粋な関数(単にログイン中のユーザ名を受け取ってheaderやfooterなどのHTML p iなビューを返すやつら)とEffectを含むようなコンポーネント(APIリクエストをしたりlocalStorageにデータを保存したりするやつら)を分離しましょうなどのことが書いてあります。最後の項目だけまだWIPですが、本体が完成する頃には読めるようになるかと思われます。

そういうわけなので、どうせみんな読んでないし…もうゴールしてもいいかな…

まだWatchingUでやり残したことはたくさんあるんですが、どうせなら先述のrealworld exampleを読んでから取り掛かりたいというのと、他に作りたいものができたのでそっちを優先しようという気持ちがあります。次はThree.jsのバインディングを使っておもちゃを作ります。できたら記事にしますね。ではまた。

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay