最弱ポータル自作日誌

自作ポータルとか自作ニュースサイトをコツコツ作るプログラマの作業記録

最弱のうらない作成サイトを作っている

うちのポータルは最弱です。

ペラいぽーたる

ポータルという考えからして古い、情報の押し付けだからね、とか、思うけど自分では、使ってたりするから自己満足でいいよとも言える。

さて、占いを作ってみた。最初は占いをコーディングしたが、毎回作るのめんどさい。よって、メーカーを作ることにした。作る機械を作る。

結果はこれ。 うらないメーカー

占いって理系だからあまり信じないけど、フィクションであることや真偽だけでないところが面白いと思う。信じる信じないではない面白さがある。ネタになるんだよね。話題は大事で話題がなければ人類はコミュニケーションできない。

私が少しがんばって、できた占いも最弱だった。自分が最弱なんだよね。人として弱いんですよ、句読点だって打つ気力ないです

いきさつ、診断メーカー

診断メーカーいいよね、って記事見て、そうだなとか思ってた。

【最高のサービスは診断メーカー】資金力も知名度も無い初心者のwebサービス運営者が現実的にユーザーを獲得できるサービスの設計方法 - 考えすぎてしまう人のブログ

同じ頃、GHCJSというHaskellからJavaScriptへの変換系を同時に触ってたんだっけ。なぜかは忘れた。診断メーカーはSNSで完結するのがいい形だと言っていた。拡散される。なるほどと思った。別に便利だとか人類を進歩させたとかじゃないので自分の関心もそれほど高尚じゃない。

同時にSICPもちゃんとやろうと思ってた。これは教養。 なんだかバラバラで何か一つを究めろよと自分でも指摘したくなる。

計算機プログラムの構造と解釈 第2版

計算機プログラムの構造と解釈 第2版

SICPはプログラム構成法の教科書で、古びたと言われるがLispは憧れだし長年SICPはマストアイテムと言われたので基礎固めとしてマスターしておきたいと思っていた。

ここまで書いてケータイのがグダグダかもしれないが長文をかける気がした、マックだとemacs だから環境はいいはずだが、なんだか書けない 気がするだけかもしれない

SICPメタ言語抽象あたりで挫折した感じがしていた、そこまでも大して覚えていないが、誰しもLisp処理系は一度は実装したいらしい、例外でなかった。

SICPはやるべきってのは意識が高いが、そんなのは嘘で、ただSICPの世界で遊びたいだけかもしれない。

点を結ぶ

そんなこんなで点がいくつかあった。 振り返るとこうなったが実際はもっと筋道があったかもしれない。振り返るとこんなだ。

自分のスキルを棚卸しして集めたり、新しく習得したりして、そのときのアウトプットになる。SICPHaskellJavaScript、そして占いへ…

うらないメーカーの評価

診断メーカーに似た何かができた。 診断メーカーとの違いで 強い点と思われるのは

  • ログインしなくても作れる
  • S式ライクな占いコード

マニアックだな 存在の意義が疑わしい

S式の構文解析ではパーサコンビネータを写経した。 参考にしたのはこれ。

関数プログラミング入門 ―Haskellで学ぶ原理と技法―

関数プログラミング入門 ―Haskellで学ぶ原理と技法―

ここも参考にした。Lispの処理系をHaskellで書こうとすると、型の問題があって、素直にSICPの内容がHaskellコードになるわけではない。

48時間でSchemeを書こう - Wikibooks

診断メーカーの言語は学ぶべきですね。占いのDSLの先輩なのですから。

弱い点

かなり弱いんだよね

  • ロードがかなり遅い
  • 最新の占いとか人気の占いが表示できない
  • リスト型未サポート

他にもあるかも。 ロードの遅さはGHCJSの使用が原因かと。Haskellを巨大なJSに変換するから。もっとやりようがあるのだろうか。あるいは、JSをストリップする方法があるのか。知ってたら教えてください。

最新の占いとか人気の占いの表示は、データベースを持っていないからできないです。外部サービスを使えば、人気のページとか表示する部品が貼れるのかな?データベースはなくて全部JSで実現しています。URLパラメータって言うんですかね、あれを駆使しているんですが正しいのだろうか…

リスト型は別に必須じゃないかも。現状ランダムにリストから文字列を取得し表示とかできない。これは診断メーカーはできる。これって占いの本質な気がするな

ランダムもサポートしていない。バックエンドのS式の処理系で対応すればよい問題です。だからSICPの処理系づくりの演習が進めば占いも高機能化します。というのは嘘で、JSのランダム関数をHaskellから呼ぶFFIの話かな。

関数定義とかもできない。でも占いに関数定義は不要な気がする。思い出したけど、占いメーカーと銘打っているけど、別に四則演算ぐらいはできます。足し算する占いとか。

総合的に診断メーカーすごいから足元にも及ばない。意味あるかわからないけど公開はしてみよう。何か気づきがあるかもしれないしS式で占いを作りたい人がいるかもしれない。

忘れてた、もっとやばいのはエラー処理です。パーサーコンビネータ自作して、エラー処理がないので、parse error みたいな役に立たないエラーしか出ない。これはわからないでしょ。これもやれば勉強になります。

それとS式入力のサポート必要、だってカッコが…

課題

  • エラー処理
  • S式入力サポート

学び

既存の言語処理系先輩すごいなと。 2引数しか対応してないとか、関数定義できないないとか。

それと多相型が便利だなとか。自分のは型が異なると別に定義になる。統一できるのはやはり便利。自分でへぼい処理系作ると体で理解できる。

あと、こんな小さいウェブでも やはり大変。デスマーチ的観点ですね。しかもデータベースないんだよ。

JSは面白いな。そして肝心なところはHaskellが快感です。

うらないメーカー