【gaucheでwebアプリ製作】なんでgauche(Lisp)製のアプリが少ないのか

タイトルの件について、ちょっと不思議に思った。だって、googleで「gauche△webアプリ」と入力して検索すると、トップにこのブログが表示されるんだもん。こんな、開設して1ヶ月ぐらいのwebアプリケーションを作ったことを報告するブログがだよ?
つまり、他にそういう情報がない=本当にgauche製のアプリが少ないってことになるんじゃないか。


あるとき、twitterLispを触っている人たちのつぶやきを見て確信した。多分、Lisp製のアプリケーションが少ないのは、こういうことだ。「彼らは純粋にLispが好きだから、アプリケーションを作らない」


ゲームやサービスを作成したことがある人は分かると思うけど、実はプログラミング言語を触っている時間って、意外と少ない。多分、全体の2割ぐらいあればいいのかなー。


後の8割は、何を実装したらユーザーが喜んでくれるか考えたり、画面上にどうボタンを配置するか考えたり・・・。これだけだったらまだいいんだけど、人に使ってもらうために、地道に宣伝をするとか、操作や機能についてのマニュアルを作成する地獄が待っている。自分も、webアプリケーションの宣伝や操作方法についてのマニュアルを書いてて「何でこんなことやってんだろ・・・・」と本気で思うときが結構ある。


これじゃあ、純粋にプログラミング言語を勉強したり、実装したい人なんかは、アプリケーションなんて作りたくないよね。
ただ、gauche(Lisp)でアプリケーションを作らないのは、もったい無いと思う。
gauche(Lisp)って、他のプログラミング言語よりも柔軟にソースコードが書けるから、むしろ個人がアプリケーションを書くのに丁度いいからね。

【gaucheでwebアプリ製作】gaucheに触れ始めて変わったこと

gaucheを触りはじめて、早くも4ヶ月経ちました(実際に学習したのは2ヶ月ちょいぐらいですが)。


そんな短い期間ですが、私のgaucheに対する考え方や、プログラミングのやり方が結構変わってきました。それらをちょっとリストアップしてみます。


gaucheはいい意味でも悪い意味でも、予想より「普通の言語」

 gaucheを触る前は、lisp系の言語って、学者が難しい問題を解くために使う言語=一般人はお断りってイメージがすごいありました。

ただ、実際に触ってみると、何のことはない、普通の言語です。ほかの言語じゃできない問題でも、gaucheなら簡単に解決!なんてことはありません。逆に、lispじゃあ一般のユーザーが使うようなアプリケーションは何一つ作れないってこともありません。

現に、コーディングで飯を食ってない、なんちゃってSEでもgaucheで以下のようなwebアプリケーションを作成することができてるんですから。
http://munetal.sakura.ne.jp/login.scm


・繰り返し=再帰が定着して、for文やwhile文がイラっとする
 gaucheを触った当初は、「ただ単にリストをなめるようなロジックに再帰使うんじゃねえよ」などと思っていました。多分、手続き系の言語を触った後でlisp系の言語をいじると、
こう考える人も多いかもしれません。

だけど、今では「なんでこの○○は効率よく再帰で繰り返しを表現できないの?」と思うようになりました。たった4ヶ月の間でここまで人間って変わるものなんですね。

正直、別に再帰だろうがfor文だろうが、どっちも動作速度は大差ないと思います。やっぱり、一番は考え方だと思います。私は再帰の「よし俺はここまで計算した、後は俺と似たような
奴に計算させればいいや、後はよろしく」って考え方が気に入っているので、繰り返しを再帰で書きたいだけです。

for文はなんか「全部でこの作業を30回やればいいんだな。1回目・・・よし、2回目・・・・よし、3回目・・・」とコツコツ作業をやるイメージがあって、どうも怠け者の私にはイメージが合いません。


・とりあえずデータを持ってきて、後でいらないデータを捨てようという考え方になった

見出しだけだと何を言ってるか分からないと思いますので、簡単な例題を。

例題:1から10までの数のなかから、奇数の数だけ表示する

普通だったら「1から10までループして、カウンタが奇数であればprint」と考えると思います。
私も、gaucheを触るまではそうでした。
ただ、今の私はこう考えます。
「1から10までリストでも作るか」
「1,2,3、・・・10ってある中から、奇数の数だけ抜きだすか」
「1,3,5・・・ってリストができたから、それらをprintするか」

これが効率的かどうかは分かりません

ただ、この考え方だと、1つ1つの独立した簡単なロジックを組み合わせるだけでやりたいことができるような気がします。あくまでも、私個人はそう思っているだけですけどね。

一応、gaucheについて大変細かく書かれている書籍、「プログラミング gauche」の中では、この考え方はモジュール性が高いと書いていました。

とにかく、gauchelisp系の言語を触ることによって、何かしら考え方の幅が広がるのは間違いありません。今までC言語とかJava言語みたいな手続き言語は触ったことはあるけど・・・って方は、是非gaucheを触ってみてはいかがでしょうか?

【gaucheでwebアプリ製作】4日目 まず最初に調べたこと

gaucheでwebアプリケーションを作成しようと決めたとき、
最初にCGIのサンプルを見たときにはビックリしました。

(cgi-main
(lambda (params)
(list
(cgi-header)
(html-doctype)
(html:html
(html:body
(html:p "Hello, Gauche!"))))))

「え?htmlも全部S式で表現するの?おいおい、俺のホームページビルダー
を使うなっていうのか?それとも通常のhtmlをS式に直す
スクリプトでも書けって?んなもん今の俺に作れるわけねえだろ。
そんなことできるようになるまで学習してたら、スクリプト
完成する前にgaucheでwebアプリを作る気が失せるだろおい」


と、ものすごい文句を言ってたのは今でも覚えています。


そこで次に調べたことは、
レンタルサーバでのgaucheの導入方法」
や「開発環境の構築方法」でもなく、
「htmlをS式じゃなく、一般的な文法でhtmlを書く方法」
でした。そう、実務的な問題ではなく、
ソースコードの見た目や表現方法を最初に気にしたんです。
もう本当にアホですよね。


なんとかできないかとインターネットで検索したら、予想に反して
すぐに目的のサイトが見つかりました(下記掲載)。
技術力の半端ねえ人も同じことを考えてたんですね。
http://www.atmarkit.co.jp/fcoding/articles/gauche/04/gauche04a.html

「いやあ、最大の障害がもう解決できてしまった。こりゃあ、gauche
 でwebアプリケーションを作成するのは楽勝だな!」
 とか思っていました。

 皆様はすでにお気づきかとは思いますが、実際に下記のwebアプリケーションを
 完成させるまでには、予想してたよりも何十倍も苦労しました。
 それは、後日の日記で書きたいと思います。

【gaucheでwebアプリ製作】3日目 環境の選択

gaucheでwebアプリケーションを作成するために必要な環境は
以下の通りにした。

・サーバ=apahce
 (フリーで有名だったから)
・データベース=mysql
 (フリーで有名でgaucheでモジュールがあるから)
・html/css=ホームページビルダー
 (昔、これでホームページを作ったことがあるから)

webアプリケーション製作で飯を食ってるから見たら、
ふざけてるとしか思えない決定方法だろうね。

ただ、自分はgaucheでwebアプリケーションを作りたいだけなんで、
これでOK。ほかにもやることは腐るほどあるし、これらの
選択にあまり時間をかけたくない。


////////////////////////////////////////////////////////////////


CGI部分をgaucheで作成する以外、本当に何も考えていませんでした。
というより、選択肢を持てるぐらい、技術も知識もなかったというのが
正解ですがね。

ただ、こんな適当に選んだ環境下でも、gaucheでwebアプリケーションを
作成することはできます。

http://munetal.sakura.ne.jp/login.scm

なので、「lisp系の言語は環境を整えるのも難しそう」と考えずに、
気軽に試してみてください。もしかしたら、lisp系の言語を気に入る
かもしれませんよ。

【gaucheでwebアプリ製作】いやあ、もう単純にうれしい

gaucheで作ったwebアプリ、「単語 de アイディア」のユーザー数が地味に伸びているのにはびびった。

twitterで何日も告知したときは、誰も見向きもしてくれなかったのに、はてなでブログを書くついでにURLをチラっと出しただけで、ユーザー数が○人も増えたよ(それでも1桁wwwえっうぇwっうぇw)

もしかしたら、1作目のwebアプリも、もうちょっと継続して宣伝すれば、もっと人が増えるのかなあと考えてしまった。


よし、2作目の製作をがんばるぞ。(さっきと考えていることと行動していることが違うのは仕様です)
 http://munetal.sakura.ne.jp/login.scm

【gaucheでwebアプリ製作】2日目 それにしてもこの筆者、アホである


3月10日


gaucheCGIじゃあ」と意気込んではみたものの、具体的に何の
webアプリケーションを作成するかは、全く決めていなかった。


いかんいかん、これでは「gaucheを使って、htmlを表示してみた」
で満足してしまう。俺はもっと、こう一般人がgauche
知らなくても使ってくれるようなwebアプリケーションを作りたいんだ。


でも、どうしよう。何を作っていいか全然決められないわ・・・。


3月12日


そうだ、アイディアを考えるためのwebアプリケーションを作ろう。
そうすれば、どんなwebアプリケーションを作成すればいいか
思いつくだろ。


ようし、早速webアプリケーションを作るぞ!とパソコンに向かった
とき、早速問題が発生した。



webアプリケーションどころか、CGIすら触ったことがないということだ。


それ以前に筆者のスペックを一覧表示してみると、

・インフラ構築:サーバなんて組み立てたことない。
・ネットワーク:pingって何だよおいwwwww
・データベース:SELECTでデータを持ってきてたような・・・。更新ってどうやるんだ?
・html/css:ホームページビルダーで厨サイト作った、以上。何?CSSって。
gauche:やっと再帰でループ文が書けるようになったよ!


絶望的に技術スペックが低い。本当に作れんのかこれ・・・。


/////////////////////////////////////////////////////////////////////


本当に何にも分かっていませんでした。今でも、ほとんどわかっていませんけどね。
ただ、これだけ何の知識も技術もない人間でも、
以下のwebアプリケーションぐらいであれば、
3ヶ月ぐらいで作れるようになります。


http://munetal.sakura.ne.jp/login.scm


なので、「lispってのは数学者とかAI研究者が扱う言語で、一般人が利用するような
ソフトウェアは何ひとつ作れない」という考えをちょっとだけ変えてみて、
gauchelisp系の言語を触ってみてください。もしかしたら、自分が作りたいアプリケーションを作成するのに手に馴染む
言語になるかもしれませんよ。