メッセージ。 - diary

2009-07-15

# Haskellでの日本語の扱い

Haskellでの日本語の扱いについて書きました。→memo - Haskell

あまりまとまっていないけど、ネット上であまり情報が見つけられなかったので、こんなのでも何かの役に立てば。Schemeもそうだけど、Haskellもあまり情報がないんだよなー。みんな賢いから自分で解決しちゃうのかもしれない。あと、ぼくがやりたいことって、普通のSchemerやHaskellerからするとレベルが低い(俗っぽい)ので、そういう情報にみんなあまり興味がないのかもしれない。ということで、逆にぼくからするとこの関連は書きやすい。
2009-07-15 22:38:22 / ふじさわ / Comment: 0 / Trackback: 0

2009-07-13

# Haskellでよくやるミス

つまらないミスで躓き、何時間もロスして嫌になった。よくやるミス(バグの元)なのでメモしておく。

  map (\l-> let (u:l:ss) = stringSplit "\t" l in (u,map read ss))
      $ lines cs
Haskellでよくやるミス

このコードを動かすと、(たぶん遅延評価とのコンボによって)プログラムが固まってしまい実行が前に進まなくなった。なぜかというと、要するに変数名がバッティングしているのだ。mapの中で「\l->」として変数lを使用しようとしているのだが、一方で「let (u:l:ss) = 」としてLet式の中でも値を変数lに束縛しようとしている。

このようなコードは、Schemeでは問題なく動く。より内側にある変数束縛(この場合はLet式)が、外側の変数束縛(\l->)より優先(隠蔽)するので、「\l->」をまったく気にしなくてよくなるのだ。変数名を考えるのが面倒なので、ぼくはこういうことをよくやる。ところがHaskellでは、このようなケースで変数lがバッティングしてしまうのだ。その結果、プログラムがまったく想定していない挙動をすることになる。

とくにHaskellでは、型宣言を併用することで極端に短い変数名を使うことが多い。変数名が短くても、それがなにを意味するのか、型を見ることで判別できるからだ。しかし、変数名が短くなったことによって、変数名がバッティングしやすくもなった。そして変数名がバッティングしたときのペナルティは非常に大きい。またGHCコンパイラも警告してくれない。

なので、この件についてはよくよく注意してプログラムを組まなくてはならない。>自分
2009-07-13 23:46:37 / ふじさわ / Comment: 0 / Trackback: 0

# Haskellでの日付・時刻の処理

Haskellの習作として、RSSのパーサーを作ってみた。その際、日付・時刻情報の取り扱い、とくにRSS中の時刻情報(文字列)をパースして内部表現に変換する方法を模索した。Webを検索もしてみたのだが、そういった情報はあまり見つからなかったので、ここにメモをしておく(この模索では、処理系としてGHCを使用したため、ここに書いた情報ではほかの処理系に適合しない場合もあるかと思います)。

『Real World Haskell』の20章を見たところ、Haskellでは基本的にClockTimeというデータ型を使うのが便利らしい。GHCのマニュアルでいうとSystem.Timeの項に説明がある。Eq、Ord、Showクラスのインスタンスなので、日付どうしを比較したり、デバッグ用にshowで文字列変換したりするのも簡単だ。ClockTimeは、内部的に1970年1月1日からの秒数を持っていて、UNIXでの標準的な時刻の扱いに近い。

*Main> :m System.Time
Prelude System.Time> getClockTime
Sun Jul 12 23:38:45 JST 2009
ClockTimeを使ってみる

ところが一方で、ClockTime型の値を任意フォーマットの文字列に変換したり、逆に時刻情報を記述した文字列を読み込んでClockTime型に変換したりする方法は、標準では用意されていないようだ。GHCマニュアルの中では見つけられなかった。そこで、そういった機能は拡張パッケージで提供されているのかもしれないと、パッケージを探してみた。

ぼくは、GHCの開発環境としてDebian lennyを使っているので、apt-cache search ghcとしてみる。すると、次のパッケージが怪しそうだ。インストールしてGHCのマニュアル(file:///usr/share/doc/ghc6-doc/index.html)を再読み込みしてみる。

libghc6-time-dev - Haskell time library for GHC
libghc6-time-doc - Haskell time library for GHC; documentation
libghc6-time-prof - Haskell time library for GHC; profiling libraries
日付・時刻関連の機能が含まれてそうなパッケージ

「Data.Time.Format」というモジュールができていることに気付いた。parseTimeやformatTimeのように、文字列と内部表現の橋渡しをしてくれそうな関数も見える。

formatTime :: FormatTime t => TimeLocale -> String -> t -> String
parseTime :: ParseTime t => TimeLocale -> String -> String -> Maybe t
Data.Time.Formatモジュールに含まれている関数(抜粋)

ParseTime tというのがよく分からなかったのだけど、どうやら次の内部表現に対応しているということらしい。とくに、UTCTimeというのはClockTimeと同じようなもので、年月日+時刻を扱うのに良さそう。

ParseTime Day
ParseTime LocalTime
ParseTime TimeOfDay
ParseTime TimeZone
ParseTime UTCTime
ParseTime ZonedTime
Data.Time.Formatモジュールで扱う日付・時刻の内部表現

今回はRSS 2.0から日付・時刻情報をパースするので、次のようにすれば良い。

import Data.Time
import Data.Time.Format
import System.Locale
import Maybe

parseRFC822 :: String -> UTCTime
parseRFC822 s = fromJust $ parseTime defaultTimeLocale "%a, %d %b %Y %T %z" s

main = print $ parseRFC822 "Mon, 29 Jun 2009 14:11:08 +0000"

-- 実行結果
2009-06-29 14:11:08 UTC
RSS 2.0のpubDate要素から日付・時刻情報を内部表現に変換する

内部表現を文字列に変換する場合は、次のようになる。

import Data.Time
import Data.Time.Format
import System.Locale
import Maybe

parseRFC822 :: String -> UTCTime
parseRFC822 s = fromJust $ parseTime defaultTimeLocale "%a, %d %b %Y %T %z" s

showW3CDate :: UTCTime -> String
showW3CDate = formatTime defaultTimeLocale "%Y-%m-%dT%T%z"

main = do t <- return $ parseRFC822 "Mon, 29 Jun 2009 14:11:08 +0000"
          print $ showW3CDate t

-- 実行結果
"2009-06-29T14:11:08+0000"
内部表現のUTCTimeを文字列に変換する場合

と、うまくいけば格好良いのだけど、厳密にはこの実行結果は正しくない(W3Cの日付フォーマットに従っていない)。正しくは「"2009-06-29T14:11:08+00:00"」と、最後のタイムゾーンにコロンが入っているのだ。ここをうまく解決する方法は、まだ見つけていない。

あと、RFC822の文字列をパースするとき、西暦が「2009」のような4桁ならばうまく動くのだけど、ここが2桁だった場合も期待したように動かない。この場合、コードと実行結果は次のようになる。

parseRFC822 :: String -> UTCTime
parseRFC822 s = fromJust $ parseTime defaultTimeLocale "%a, %d %b %y %T %z" s

main = print $ parseRFC822 "Mon, 29 Jun 09 14:11:08 +0000"

-- 実行結果
1909-06-29 14:11:08 UTC
西暦が2桁の場合のコード(?)

1909年と解釈してしまうのだ。これも、ちょっと解決策は見つかっていない。ということで、parseTimeとformatTimeを使う方法も、ちょっと足りないようだ…。まぁ、この程度なら大きな問題ではないので、独自実装するほうがよいのかもしれない。いつも思うことながら、日付の問題は案外面倒くさいですね。
2009-07-13 00:50:35 / ふじさわ / Comment: 0 / Trackback: 0

2009-07-03

# エロゲ規制に関係するかも?メモ

このへんを読んでいて、ちょっと思ったのでメモ。

「エロゲみたいな異常な趣味は禁止しろ」というような思想は、公園の問題に似ているのかも。

大人たち(の一部)は、子供に対して公園で遊ぶことを望んだりする。公園にある遊具は、遊ぶために作られた道具で、それを正しく使って遊べば、安全で綺麗なのかもしれない。

でも子供にとっては公園で遊ぶことは案外つまらなかったりする。遊具を決められたとおりに正しく使って正しく遊ぶよりも、規格外の遊びを発明して遊ぶほうが楽しいとか。

まぁそもそも、東洋的考えでは、遊びに対して規格みたいなものはあるんだろうか。江戸時代に子供が遊ぶための公園が存在したのかどうか、とか。なんとなくだけど、そういうのはなかったのではないかという気がする。

東洋的考えでは、規格的な遊びとか、規格的人間というのはあまり想定していないのではないかな。一方で、西洋的考えでは「正しい人間」という観念が存在しているのかもしれない、と思う。たとえば渡辺千賀さんが言うような感じで、

魂があるから人間はほかの動物よりえらい、みたいな価値観は、アメリカ的には非常に普通なようだが、どうも私の感性には合わない。私に魂があるなら、うちの猫にも魂があると思うし、猫にないなら私にもないと思う。

人間には魂があって動物には魂がないという考え方は、「人間は動物とは違う」、「人間は神の子だ」という思想のあらわれであるように思う。だとすれば、人間の生き方にたいして「正しい生き方」の存在を想定しているのではないか。

モーゼの十戒のような、「人として、必ず守らなければならない戒律」が、人間の実存のレベルで課せられているというか。

一方で日本人なんかには、「人として、必ず守らなければならない戒律」みたいなものは、存在しないように思う。人間は、どんな悪いことをしようが人間というか。人間という存在を特別視していない。絶対的な善も悪も存在しない。すべては無に帰す。月日は百代の過客にして行き交う人々もまた旅人なりというか。

そういう意味では、男女の別というのもとくに存在しない。正しい性のあり方も存在しない。いや、男女の別は存在はするのだけど。でもそれらは敵ではないというか。ただそれぞれが、それぞれの生をまっとうすればそれでいいんじゃないか、というか。
2009-07-03 19:59:38 / ふじさわ / Comment: 0 / Trackback: 0

2009-06-21

# 日々

昔テレビで見たんだけど、たしか南米のある民族の人はこんな歌をうたっていた:「神様、わたしたちに死を与えてくれてありがとう」。ぼくはこの歌に大変共感した。

--

iPhoneが欲しい。でも今持っている携帯電話は、まだ使えるんだよね。iPhoneは欲しいけど、まだ使えるものを捨てて、新しいものを買うことに、やはりちょっとは抵抗がある。みんなも実は、そうなんじゃないかな。

でもその一方で、たくさんの人が、日々たくさんのガジェットを買ってもいるようだ。彼らは苦しくないんだろうか。

--

他人を押し退けて自分の居場所を作る若い人がいる。うらやましい。「他人を押し退けて自分の居場所を作れ、若造よ」と言う人がいる。押し潰されそうになる。

面と向かって言えなかったけど、そんなこと、できないよ。したくない。自分の居場所なんて、最小限でいいんだ。最小限がいちばん心地良い。そうじゃないのかな。

今の世の中、他人を押し退ける人がいて問題になっている。でも一方で、今の世の中には、他人を押し退けない人もたくさんいる。世界はぼくらに、「他人を押し退けるな」と言ったその口で、「他人を押し退けろ」と言う。くやしい。

--

背中が煤けてるっていうか。「あんた、背中が煤けてるぜ」と言いたい。でも半面、自分の背中が煤けているような気がする。煤けているのかもしれない。煤けてるんだろう。煤けてる。だからなにも言わない。言えない。
2009-06-21 06:24:18 / ふじさわ / Comment: 0 / Trackback: 0

2009-06-09

# 梅田さんと「アテネの学堂」

梅田さんが「好き」であって、日本でもその登場を期待したネットの世界とは、「バーチャル・アテネの学堂」だったんじゃないかと思う。(中略)「チープに手軽に、地理的制約もなく、自らの考えを公表したり議論したりすることができる」という特徴を使って、知的な議論が交わされ、シリコンバレーでよく使われる用語を使って大げさに言えば「世界をよりよくするため(to make the world a better place)の知識」が形成され、それが多くの人の手によって実行に移されていくことが「すごいこと」なんだと思う。
(中略)
つまり、彼は日本(あるいは日本語世界)の知的エリートたちがふがいないことを攻撃している。同時に、知的エリートの世界に参加したいと潜在的に思っている人たちをつまらない嫉妬で引きずりおろそうとする「大衆の愚」に怒っている。

この解釈は正しいのかな? 正確には、梅田さん本人に確認しないと分からないと思うが、とりあえずその解釈が正しいと仮定して話を進める。

たしかに梅田さんは、「ハイブロウな人やものが好き」と言っている。「ハイブロウ」って何かと思って調べてみると「学問や教養の高い人, 知識」(広辞苑)とのこと。high browは直訳すると「額が広い」ということで、ぼくは学者さんのようなタイプを思い浮かべた。

ただぼくは、「ハイブロウな人」が「自らの考えを公表したり議論したりする」のに最適の場所は、アカデミア(学会)だと思っている。人文・社会科学系にせよ自然科学にせよ、知識を戦わせ、研鑽させるために、アカデミア(学会や大学)は設計されているのだから。

そして当然のことながら、「そのような場としてアカデミアは最適である(そうであるのが当然だ)」という命題は、ネットの登場以前も以降も変わらない。アカデミアは、そのために用意された場だ。

だから逆説的だけれども、「ネットがそのような場にならないのはおかしい(ネットがそのような場になってほしい)」という考えはおかしい。ネットがそのような場にならないのは当然なのだ。過去も未来も、アカデミアこそがそのような場であるのだから。

アカデミアというのは、そもそもが「世界をよりよくするため(to make the world a better place)の知識」を集めるための場所だ。「そのような知識が形成され、それが多くの人の手によって実行に移されていくこと」というのは、ネット以前であっても、アカデミアの存在意義として求められていることだ。

そしてまた、俯瞰してみれば分かるが、「すごいこと」というのは、実はネット以前からアカデミアと社会が実現してきた。仕方のないことだが、一般にそのことは忘れられがちだ。もし海部さんの解釈が正しいのだとすれば、彼らは「ネット」に「アカデミアになること」を求めていることになる。だけどネットは、アカデミアにはなれないだろう。

「チープに手軽に、地理的制約もなく、自らの考えを公表したり議論したりすることができる」という利点を、ネットは世の中一般に提供した。これによってアカデミアは、今まで以上に強力になり得るだろう。しかし、世の中一般が「アカデミア」になることはないし、その必要もない。(人類全体の生産性が向上したことで、アカデミアが抱えることのできる人材規模には、拡大の余地ができただろうとは思う。)

たしかにアメリカというところは、社会とアカデミアの距離が近い。アカデミアで紡ぎだされた知識が、社会に適用されることが多い。逆に日本は、アカデミアの権威が低く、マスメディアも政府も、そして社会も、あまり科学的アプローチを取り込んでくれない。それは残念なことだとぼくも思う。

日本の知的エリートがふがいないというか、日本の社会構造があまりアカデミズムを取り込んでくれないというのは、ここ最近の話ではない。ちょっと前のエントリで書いたように、もうずっと何百年も続いてきたことだ。だから今この段階で、「日本のネットは残念」という風に捉えるのは、ちょっと危ういと思う。「日本の社会が残念」と捉えるならもっと良いだろうと、ぼくは考えている。
2009-06-09 15:57:42 / ふじさわ / Comment: 0 / Trackback: 0

# 匿名と日本の社会

以下の文章は、サーバーでのHDD障害が起こったことにより一時的に消えていたのを復旧したものです。オリジナルの公開日付は、2009/06/05 16:48です。

--

「残念」な状況を作り出した大きな原因は、はてなである。梅田氏が「バカなコメントが多い」といったように、実名の生産的な批判より匿名の悪罵のほうが圧倒的に多いことが「上の人」を萎縮させ、日本のウェブのレベルを下げているのだ。その結果、アメリカのブログは著名人が既存メディアの枠を超えてリアルタイムで議論する場になり、大手メディアに対抗する存在になりつつあるのに、彼も嘆くように日本のブログはますます劣化している。

私は、この原因は「日本人の国民性」だとは思わない。それは戦後の日本企業システムの鏡像である。長期雇用のもとでは、絶えず他人の噂話による「360度評価」にさらされるので、ちょっとした失敗やトラブルがあると、そのreputationが数十年にわたって社内で積み重なり、出世に大きく影響する。このシステムはモラルハザードを抑制する上では強力な効果を発揮するが、上司を批判できず転職という逃げ場もないため、そのストレスが匿名による悪罵にはけ口を求めているのだ。

うーん、違うと思うなぁ。上の人が広く議論を呼びかけたり、行動したりできないのは、まさしくここが日本だからだ。そして逆に、「議論によって政治を変えられる」、「公の場でのぶつかりあいで政治が変わる」というのは、アメリカの特性じゃないかと思う。

また、梅田さんも池田さんも「日本のWebの悪いところだ」(アメリカのWebの良いところだ)と言うけど、それも違うと思う。確かにWebは、オバマ大統領の誕生に大きく貢献したけど。でも、Web以前の下地として、アメリカには公の場で政治を変える文化がある。Webがどうこうという話ではない。社会がそのようになっていて、それがWebにも染み出しているだけだ。

アメリカには、「政治に参加する」という民主主義的文化があるというか。一方日本は、民衆は見てるだけで政治に参加してないんじゃないかな。たとえば、みんなの身近で政治家になろうとする人って、いますかね? 政治家になりたがるのは、あるいは政治家としてずっと続けていられるのは、親が政治家という人ぐらいじゃないかな?

日本では、「いまの政治は嫌だ」とか、「ここがおかしいから変えたい」とか思っても、それを変えられる気がしない。映画の『それでもボクはやってない』を見て、ぼくはあんな裁判は嫌だと思った。みんなも思ったでしょう?でも、どうやってこの国を変えたらいいか、変えられるか、分からない。

いろんな嫌なことがある。変だと思うことがある。でもそれを、政治的に変えられるようにぼくらは感じていないし、政治があまりにも遠い。政治というものが、胡散臭いように感じていたりもする。それに、よく考えたら、自分自身は今猛烈に困ってるわけじゃないし。だからとりあえず、静観しようとする。

でも、もしぼくがアメリカに住んでいたら、そうじゃないんじゃないかという気がする。政治は曲がりなりにも機能をしていて、問題がたくさんありながらも、現実を変えていけるという、可能性を感じられるんじゃないかな。少なくともぼくは、オバマ大統領が誕生したとき、「ああ、彼らはまだやれるんだ」って感じた。あのような感動の選挙が、日本でも実現するだろうか? ぼくには、その実現可能性はかなり低いように感じる。

日本では、「饅頭怖い」方式で政治が密室でなされる。いや、政治だけに限らない。ほとんどのものごとが密室で決められている。日本の「上の人」は密室に拘束され、オープンな場で議論できない。密室の中にいる「上の人」が、密室内での情報を外に漏らせば、密室から追放されてしまう。そして、追放のリスクを冒して世論に訴えたところで、ものごとは変わらない。密室の力が強すぎるからだ。

そもそもこの国では、誰かが顕名で物申したとしても、ものごとの決定には参加できないのだ。なぜなら、どのような正論も、また世論も、関係者(密室)の利害という渦に飲み込まれてしまうから。このことを、うまく説明している記事がある。

国策がないから検察が勝手に暴走できるのだろうし、この暴走の仕組みは別段検察に限らない。日銀とかも暴走しているし、厚労省もそう見える。まあ、仔細に見ればいろいろ違うとか利権のスジとかからのご意見もあるだろうけど、いずれにせよ、民意みたいなものとは独立して、これらのシステムがご勝手に動く。というか、これこそまさに日本がシステムだということにすぎない。

(中略)ようするに、日本にはシステムだけがあって、権力の中枢がない。というか、意志としての国家が存在しているようにはまったく思えない。というときの、国家(ステート)というのをどう考えるか。

要するにこれは、日本の社会が多数の密室によって執行されていることだと思う。このような状況に照らしてみると、「顕名で議論を呼び掛ける」というのはあまりにも脆弱だ。なぜなら相手は、組織という名の密室・匿名であり、また直接の相手だけでなく、周りに存在するあらゆる組織がまた密室・匿名だからだ。国の機関も密室だし、マスコミの言論も匿名だ。正論を言っても取り上げてくれないし、裏から手を回して潰されてしまう。密室は密室と結びつき、相互監視・相互干渉することで権力闘争している。そしてその構造は、「裏側」を成立させやすくしている。

もちろんぼくも、こういったところは日本の悪い面だと思う。アメリカのような選挙をうらやましく思い、日本ももっと良くあってほしいと思う。もしかしたら、日本のネットで顕名を導入すれば、いつかWebでの言論が実社会を凌駕するようになり、実社会も顕名ベースで正論が通るようなものに変わっていってくれるかもしれない。でもそのような理想は、単にネットで顕名を導入するだけでは実現しないだろう。本質的な原因は、ネットの匿名性ではないからだ。

アメリカでも日本でも、「ネットのシステム」自体には同じものを使っている。ただ、アメリカでは顕名で使っている人が多く、日本では匿名で使う人が多いというだけのことだ。では、なぜそうなっているのか? そこを考えなければならない。それはインターネットというシステムの問題ではない。そのように使う人々の心、つまり社会の問題なのだ。単に顕名を強制するようなシステム、罵声を見えなくするようにするシステムを導入したところで、本質的な原因を取り除くことはできず、社会を望む形に変えることもできない。

ネットにいて匿名で罵声を浴びせる人間は、そりゃあ卑怯かもしれない。しかし、密室でものごとが決まる日本社会で、密室から情報をリークできるのは匿名だからこそだ。顕名で告発することもできるだろうけど、告発した者の保障は決して十分ではなく、また告発が成功する可能性も十分高いと言いきれないだろう。トカゲの尻尾切りで逃げられる可能性も高い。

また、ひろゆきさんが言うように#1、匿名だからこそ「誰が言っているか」ではなく、「何を言っているか」で議論可能性が高まる面もある。いままでの日本では、「誰が言っているか」が重視されすぎた。なぜなら、「誰が言っているか」こそが密室の意図を読み解くための鍵であるからだ。現在の日本では、議論の中身は結論に影響しない。薬事法改正の件でも、法案の趣旨とやっていることがアベコベだ。パブコメを送ったところで、勝手に施行されてしまう。

敵はネットではないのだ。ネットの匿名性でもない。(何回か書いてるけど)勝海舟さんはこう言っている:「我が国と違い、アメリカで高い地位にある者はみなその地位相応に賢うございます。(将軍家茂に拝謁した際、幕府の老中からアメリカと日本の違いは何か、と問われて)」#2。「上の人」が(サブカル以外の領域で)才能を発揮できないなんて問題は、江戸の昔からずーっと続いているのだ。それは、たった数年のWebの変化なんかで変えられるものじゃないし、変えられると思うほうがおかしい。もしそれを変えたいなら、それは命懸けでやるべきような仕事だろうと思う。

#1 4Gamer.net ― [OGC2008#03]「2ちゃんねる」と「ニコニコ動画」のひろゆき氏が語る,ゲーム・コミュニティ・文化(シヴィライゼーション4【完全日本語版】)

#2 http://ja.wikipedia.org/wiki/%E5%8B%9D%E6%B5%B7%E8%88%9F
2009-06-09 13:40:53 / ふじさわ / Comment: 0 / Trackback: 0

# さくらインターネットの共有サーバーでHDD障害が起きたのかな?

今日気付いたのだけど、3日前に書いてここに置いていた文章が1つ消えた。「匿名と日本の社会」というタイトルのもの。

ポストしたときに、自分がなにかオペミスをしたのかと思ったけど、たしかちゃんと投稿したはず。サーバー側で何か問題(CGIのバグとか)が起こったのかもしれない。

ただ、momoka.cgiはさくらインターネットの共有サーバーで運用しているため、細かいログ(error.log)やサーバーの障害情報(dmesg等)は取れないのだ。どうしたものか。

まずはポストしたかどうか定かではないので、客観的事実を確認したいと思い、RSSリーダー(Fastladder)に記事が残っていないか確認してみた。すると、果たして問題の記事は残っていた。全文配信しているので、ロスレスで回復できる。やったぞ。

そして、やっぱり記事は投稿していたんだ。3日前、確かにmomoka.cgiはポストを受信し、文章を掲示していた。だけどそれが、何らかの理由でロールバックしてしまったのだ。では原因はなんだろう?

共有サーバーにログインして、データファイルの日付を確認してみる。

[yfujisawa@www1429 ~/data/Momoka-0.51]$ ls -lth
-rw----rw-  1 yfujisawa  users   2.7M Jun  1 21:51 mdb.scm
データファイルの日付

RSSリーダーによると、日付は本当は「2009/06/05 16:48」でなければならない。なのにデータはこれより古い。「CGIでファイルを上書きしてしまった」というような、アプリケーションレイヤでの問題ではなさそうだ。

ならば、バックアップスクリプトが動いたとき、古いファイルで上書きしてしまったのだろうか。この線を疑って、別サーバーに保存されているバックアップ済みファイルを見てみた。バックアップは2世代だけ世代バックアップを取っているので、1~2日前のデータならば確認できる。

結果として、日付は2ファイルとも同じで6月1日のもの。つまり、「バックアップスクリプトの問題であって、かつ少なくともここ1~2日で障害が起こった」という線はなさそうだ。ただし、バックアップスクリプトが問題かどうかは、これ以上追い掛けられない。(スクリプト内容をチェックすることは可能だが後回し)

そこで次に、サーバーの障害か、クオータによるディスクフル(書き込み不可)がロールバックを発生させた可能性を疑ってみた。だが、クオータによるディスクフルはなさそう。共有サーバーのコントロールパネルで確認したところ、まだ8%しかディスクを使用していない。

ということで、サーバーのHDD障害が濃厚になった。さくらの共有サーバーではaccess.logを毎日保存してくれるサービスがあって、それを確認してみると次のとおり。

[yfujisawa@www1429 ~]$ ls -lt log | head
total 5340
drwxr-xr-x  2 yfujisawa  users    3584 Jun  9 00:06 webalizer
-rw-r--r--  1 yfujisawa  users  654968 Jun  9 00:05 access_log_20090608
-rw-r--r--  1 yfujisawa  users   66538 Jun  8 00:05 access_log_20090607.gz
-rw-r--r--  1 yfujisawa  users   14020 Jun  7 00:05 access_log_20090606.gz
-rw-r--r--  1 yfujisawa  users  801419 Jun  4 00:05 access_log_20090603
-rw-r--r--  1 yfujisawa  users   78816 Jun  3 00:05 access_log_20090602.gz
-rw-r--r--  1 yfujisawa  users   59898 Jun  2 00:05 access_log_20090601.gz
-rw-r--r--  1 yfujisawa  users   40379 Jun  1 00:05 access_log_20090531.gz
-rw-r--r--  1 yfujisawa  users   57229 May 31 00:05 access_log_20090530.gz
定期保存されたaccess.log

…明らかにおかしい。6月4日から6月5日までのデータが欠けていて、6月6日のデータ量がやけに小さい。こりゃあ、6月6日にHDD障害が発生したんだな。それで、さくらのオペレータさんが、6月4日に取ったバックアップからデータを復旧したんだと思われる。

ただ、さくらのサイトでは、障害についてとくに報告もないんだよなぁ(→お知らせ)。さくらの共有サーバーって、こういうサポートレベルなのか。や、悪い意味じゃなく。月500円と安いからね。多くを求めるつもりはない。次に同じような問題が起こったとき、復旧の目安にしたいのでメモ。
2009-06-09 13:39:23 / ふじさわ / Comment: 0 / Trackback: 0
recent days<< | >>old days