新・日々の暮らしに疲れてない?

一人バンド、火頭工房

【go言語】wiki制作をなぞってみた。

どうも火頭です。


最近はgo言語の学習モチスタベーションが低下し、特に何もしていなかったのですが。
これじゃいかん、とこちらの「wikiを作ってみよう」的なページをなぞってみることに。http://golang.jp/codelab-wiki

 

せっかくプログラミングを学んでるのだから、本当はビシビシとウェブアプリケーションを作ってみたかったのですが、いいわけを列挙しますと...

 

・http関係のことが全然分かっていない、ドキュメントを読みこなす知能もない。

・セキュリティ関連が怖い。

・デプロイするのが大変そう。

・データベースをgo経由で動かす方法を学ぶのが面倒(sqlite3を以前学習しましたが、その後アンインスコしちゃいました)。

 

しかし、今回の学習で少しだけhttpに関する理解が深まりました(2mmほど)。ちなみに参考にしたページのコードは古くなっているようで、一部動作しなくなっていたようなので注意が必要です(エラーに関する記述など)。

 

さて、上のwikiページをなぞると以下のように動作します。

 

・まずユーザーが http:省略/edit/xxx にアクセスする。xxxにはユーザーが編集したいキーワードを入力する。記事の新規作成のやり方というわけです。


・サーバーはリクエストを受け取り、編集用ページのhtmlテンプレートファイルを読み込み、それをユーザーへ渡す。ユーザー側に編集ページが表示される。


・編集ページ内で記事情報を入力・送信。この辺はPHPでおなじみのフォーム送信の仕組み。


・サーバーは受け取った情報をテキストファイルとして保存(ここで本当はデータベースに保存するわけですね)。その後、閲覧ページのhtmlテンプレートファイルを読み込み、さきほど保存したファイルも読み込み、合体させてユーザーへ渡す。つまりユーザーは自分が作ったばかりページへ飛ぶことに。 例: http:省略/view/xxx

 

と、こういう仕組みになっているのですね。テンプレートファイル内にユーザーが入力した情報を埋め込むのに {{.うんたらかんたら}} という書き方をするのですが、この記述は始めてだったので面倒でした。

 

しかし動作させてみると、go側のデータが...ページに反映されてるぅ! 繰り返し処理などもrangeで対応できてるぅ! なるほどよぉー、とてもフレキシブル、すごいぞテンプレート! そういや自分のブログのテンプレートにもこれに似た記述があるなー、そういうことだったのか...。

 

チョ、マテヨ。
これ仕組み的にほぼブログじゃね? 自分でブログ作れんじゃね?


ということで次はブログを作ろうかな、と。
すでに記事の管理などは下記の追加学習で行いましたので、あとは画像の埋め込み方法などがわかれば特に問題はなさそうです。ま、デプロイしないので運用もなにもありませんけど...学習学習ゥ!!。

 

追加学習:

タイトルや記事内容のバリデーション・作成された記事の一覧表示・記事の削除、などを行いました。結局はデータベースとつなげれば色々と楽なこともわかりましたが、アンインスコしたsqlite3は私を許してくれるのでしょうか。

 

おわり