Linuxとかそこらへん

XMLとかそこらへん周りのプログラムをやる時にRubyを使おうと思ってたんですけどWindowsでのプログラムの環境を整えるのが面倒です。はっきり言ってC++とかC#とかでは統合環境のVisual Studioを使っておけばデバッガが強力なのでいいかなあって思ってましたが、Rubyとかスクリプト系はやっぱりLinuxでの環境がベースとなるのでそこらへんが苦しい。特に困ったのがUcovというUnicode変換用のライブラリを組み込むのがうまくできませんでした。まあ私のLinuxに対する知識とかmakeの知識とかそこらへんを良くしらないせいで、もし知識があったらなんとかなったのかもしれないけど……


というわけでLinuxに触る必要性が出てきました。一応現状じゃ仮想マシン上で一番快適に動いているのはVine Linuxです。Fedoraの5もインストールしてるけど漢字の文字化けと動作がVineに比べると重たいので放置してます。もしこのまま仮想マシン上で快適に動かすならばCPUかメモリのどちらは増設したほうがいいかなと思ってます。多分CPUのほうが必要なんじゃないかと思ってます。
それ以外ではデュアルブートとかリムーバブルハードディスクなどでOSの切り替えをしようとも考えたけど、いろいろめんどそうなのでとりあえず現状維持でちゃんと使ってみようかと思ってます。今まではネットワークとかの問題でそれほど触ってなかったので。とりあえずRubyとか知らないけどPythonとか使ってみたいと思います。


XML?の解析

さて大分久しぶりです。
HSPで作るゲームのほうもそれなりに進めてますよ。しかし今回自分の実力にあわないでSLGを作ろうとしたせいかやはり終わりがなかなか見えてこない。よって別のことをやってます。それはタイトルの通りなんですけどXMLの解析です。
なんのXMLかというとCGIゲームが出力するXHTMLです。まあ実際はHTMLファイルだったわけですけどまあそれはともかくとして、何のゲームかというと人狼BBSです。
でそうやっていろいろやってたんですけどXMLパーサがファイルを読み込んだ段階で失敗してました。使ってみたパーサはrubyの標準パーサのREXMLとC#のXmlTextReaderクラスで、両方に読み込ませたんですけど両方ともうまくいきませんでした。
自分で作ったTestファイルを読み込ませた場合だとうまくいくのでひょっとして人狼のログファイルがXMLに準拠してないのかなあって思ってソース見てみたら案の定でした。
タグを閉じないで使っているようだし間違いないでしょう。というか私はこんなことにも気づかずにやってたんですね。やっぱりまだまだ未熟です。


とりあえずXMLパーサで直接ログを読み込ませるのは無理だとわかりました。ということはHTMLパーサを使って読み込ませるかRSSXMLパーサに読み込ませるかのどちらかをするしかないですね。
RSSで足りるなら標準機能に付属されてるXMLパーサが使えるので多分そのほうがいいです。目的は一応統計的に「狼はどういう人間なのか?」的なのをやろうと思ってたので、必要なものは役職と発言のデータは最低限必要かな?でRSSの中身を見ると役職はただ単にRSSだけで得るのは無理っぽいですね。ということはHTMLパーサを使うしかないわけで。


まあとりあえずここまで結論が出ただけで前進したので今回は良しとしておきます。目的を果たすところまでいくのかは微妙ですけどね。

HSPプログラミング続き

 HSPがやっぱりきついです。以前の11月19日で書いた時は構造体が使えないことはそれほど気にして無かったですけど改めて考えるとこれが非常にきつい。2変数の入力から2変数の出力を行いたい時、Cなどでは構造体などを使って一つの値にまとめて出力するでしょう。しかしHSPは構造体が無い。もう一つはうまいやり方ではないけど、ポインタを引数として与えてアドレスから直接値を変えてしまう方法がある。しかしHSPはアドレスをいじることもできないからこれもできない。となると残りは変えたい変数をグローバル変数に変えて操作するか、直接main関数に書き込むしか思いつきません。まだ関数化できる分グローバル変数を関数から参照したほうがいいように思えるけど結局汎用化できてないから同じことかな。気力が失せてきたけど今やってるやつだけは完成させてからHSPプログラミングを止めようと思います。


まあ構造体のありがたみを知ったこととかもあるしいじって損だったとは思いませんけどね。実際に画像の描画周りは簡単だし。

片付け

今のところは大丈夫だと思うのですがIDで知人にバレると嫌なので引越ししました。これで書きにくい話題なども気にせず書けるようになります。
でええとオタク寄りな人間がそうでない人間を部屋に招く時はどこまでの物がセーフなのか、ということを考えてました。自分で考えてあからさまにやばそうなのは男性向け、女性向け同人誌とかですか。私は両方とも持ってないですけど。エロゲーはどう見てもアウトですよね。コンシューマのギャルゲーもやばいっぽい。ラノベはどうなんだろう。隠さずに通したけど特に漁られもしなかったのでセーフなのかな。
線を引くのに困るのはオタっぽい漫画ですね。ギャルゲー的絵で女の子ばかり出てくるようなやつです。まあこれも放置っておいて特に漁られもせず。しかし背表紙でどんな絵かはわかってしまうからそこは少し危険といえるかもしれません。
まあ別にそこまで隠したいわけでもないですけどね。ギャルゲがばれなきゃいいかなというぐらいです。


最近CivilizationIVのデモ版をやってました。チュートリアルをやる限り面白かったので買おうかと思ってます。ビデオカードも新調したばかりだし。それにしてもAGP用のビデオカード全然ないですね。次変える時はPCI Express付きのパソコンを使ってるはずなので特に気にすることもないか。

将来いろいろ考えること

まあそろそろ就職とかを考える時期なので会社説明会などに参加してきました。そこで聞いてきたのはプログラマはずっとプログラマではまずいといった話でした。まあここで話していたプログラマは意味合いではコーダというやつですが。プログラムは将来的には全て自動化されるから人間が進んでやるべき仕事ではなく発想の世界こそ重要である、と話を聞いて私は受け取りました。
私はプログラミングが好きなので楽に割り切りたくはないのですが、まあ一理あるなと思いました。ほとんど自動化されるのも確かに真実だと思うし。私があこがれるようなプログラマはコーダではなく企画、設計、開発といった工程を全てやるようなプログラマです。まあしかしこれは個人の力でソフトウェアが生産できるようなイメージが強いので、大規模なシステムではやはり各分野を専業でやらざるおえないのかもしれません。ほとんどの会社は実際そうですし。その会社はほとんど上から下までやると言っていたので理想を体現しているのですが、そうそううまい話があるのかという気もします。
まあ今回は就職を見送って上に行こうと思ってるので、じっくり考えていこうと思います。

コーディング規約を読む

http://www.objectclub.jp/community/codingstandard/にあるC++コーディング規約を読んでたんですけど、ポリモーフィズムってif〜elseとswitch〜caseの置き換えとして使えるそうで。そうやって言われると「なるほど」と思えるんだけどポリモーフィズムの説明を本で読んだ時は「どういう時に使うんだろう」って思ってました。今までクラスは使ってても継承をうまく使ってなかったし。プログラミング暦3年でようやく少しオブジェクト指向プログラミングがわかってきた、ということなんですかね。
 あとこれ気づかなかったのは自分でもかなり馬鹿だなあと思ったんですけど、クラス間で使う定数変数の定義ってメンバ変数でstatic constとかやればいいんですね。マクロ使わずにクラスの外で宣言せずに定数変数を使う場合はオブジェクト指向的にやるのは無理じゃないか、とか考えてたけど普通にできてます。staticを全然使ってなかったからしょうがないといえばしょうがないけど、こんなこともっと早く気がつきたかった。とはいえプログラミング言語C++とかには載ってたのかも。持ってるけど全部読んでないので良くわかりません。
 まあプログラミングのルールとか今まで気にしたこと無い人は早めにコーディング規約を読んでおくと得です。

webの情報

 一応日記とか書くときにこの情報はweb上に存在する価値があるかどうかということを考えて日記を書いたりしてます。どんなものかというと需要があったり需要は少ないけれど必要な情報とかです。需要のある情報は旬なものとかで、発売したばかりのゲームの攻略などはこれに当たります。あとは世間でにぎわってるニュースに関する言及とかも必要な情報です。旬に関わりなく必要な情報は、地図みたり天気みたりテレビ欄みたりとかです。
 需要が無くて必要な情報はよりニッチな方向の情報で特定の人意外に必要がないものです。昔のゲームの攻略とかはこれに当たるんじゃないでしょうか。特定の趣味の分野もそうです。囲碁とかもネットで情報が集めやすいほうではないから必要とされてはいるのかもしれないです。(あまり実力があるわけでもないので囲碁の情報を出すにはためらいがありますが。)
 まあしかしそうやって使える情報を出すという観点で書くのはなかなか難しいです。日記でも「朝7時におきて朝食を食べて、8時に学校に行き……」と言ったような小学生の日記みたいのだとあまり役に立ちませんが、詳しく書けば使えるものになると思います。しかし、私にはちょっと無理です。それ以外の場合は日常で考えたこととかテーマを絞って書くしかないでしょう。でも普段の生活でいろいろなことを考えてても忘れますね。ペンとメモ帳をすぐに出せる場所にしまっておくのがいいんでしょうね。
 さてこの文を戒めにして主観で意味がある記事を書きたいと思います。まあ近況報告みたいな小学生の日記的文もたくさん書くでしょうが。