ひさしぶりに日記を書こうと思ったら使い方わすれとる。


んーやっぱり日記続かないなあ・・・。
マイペースで書いていこうと思っているんですが。


このブログ、私がタイトルを付けた時は、たぶん、読書日記というか買った本の紹介とかをメインに書いていこうと思ってたはず。
なんだけど、まったく本のことに触れてない。最近は書いてすらいない。


ということに気づいたので、いっちょ積読紹介

デザイニング・ウェブナビゲーション ―最適なユーザーエクスペリエンスの設計

デザイニング・ウェブナビゲーション ―最適なユーザーエクスペリエンスの設計

デザイニング・インターフェース ―パターンによる実践的インタラクションデザインをだいぶ前に読んで、なかなか面白い内容だったので、似たようなコンセプトっぽいこの本も読んでみようかな?と購入しました。
ほんとのほんとに積読で、昨日やっと通販の箱から空けたところ。パラパラみたけど1文字たりとも読んでないです。


家ではあんまり本を読まなくて、読むのは電車かカフェなので、どうしても小さい本のほうが読みやすい。文庫とか新書とか。


私は特に新書が好きで、それも世間でブームになっちゃうようなビジネス実用っぽい新書じゃなくって、もーすんごくシブいやつ。雑学っぽいのとか。


最近買って、やっぱり積読状態な新書。


続・発想法―KJ法の展開と応用 (中公新書 210)

続・発想法―KJ法の展開と応用 (中公新書 210)

零の発見―数学の生い立ち (岩波新書)

零の発見―数学の生い立ち (岩波新書)


いつか読む。きっと読む。

現代人には、充電するものが多すぎる

土日はほとんど家にいて、大掃除を敢行していました。
とにかくモノがあふれすぎているので、いらないものは捨てて、必要なものは押入れにしまい、最終的には机とベッドだけの部屋にすることを目標にがんばっています。
が、どうしても押入れにしまえないものもあります。「充電するべき機械」です。


充電しておくためにはコードをつないでいないといけないし、そうすると押入れにしまったとき、扉が閉まらない。
ウチの押入れは扉がクローゼット風の折れ戸なので、ふすまや引き戸のように「コードのために数cm開けておく」という芸当もできません。
自然、充電が必要な電子機器は外に出しておくことになってしまいます。


どうしようかと悩んで、とりあえず机や棚の上にあった充電するモノたちを、箱にまとめてみたら、こんなラインナップでした。

  • 携帯
  • 携帯音楽プレイヤー
  • Nintendo DS
  • PSP
  • デジカメ(小)
  • デジカメ(大)
  • ノートパソコン


最終目標であるところの「机とベッドだけの部屋」にするには、これらの充電をどこでやるかが問題なのです。ってか、押入れに入れられないなら、机しかありません。しかし机も、今つかっているものが異常に大きくてやや使いづらく、なるべく小さい机に変えようと思っています。そうなると、これらの機器を常に置いておくようなスペースはありません。


結局のところ「やっぱり小さくても棚が必要だな」となりそう。電池のもちがよければ、充電するときだけ出しとけばいいけど、いまここにあげたやつでそれができそうなのってDSくらいですからね。あとは日々使っているとすぐ充電がなくなるから、毎日でも充電しとかないといけない。
「机とベッドだけの部屋」への道のりは険しいです。


余談ですけど会社で週イチの定例ミーティングがあって、ノートPCで議事録とってるんですけど、ダラダラ会議が長引きそうなときは「ノートPCの充電が切れそうです!」っていうと早く終わったりします。そういうときだけは充電がもたない非力PCに感謝します(笑)

IE8リリース

3/20についにIE8が正式リリースとのことで、とりあえず会社でインストールしてみようと思ったら、どうもうまくインストールできない。
なんかいろいろといじくっている間に時間がなくなって、今日は検証できなかったー。
動かなくなるような部分はないと思うけど、早めにチェックはすませておきたいです。思っていてもなかなか手が付けられないのが困ったものです。


会社で、先輩に「IE8出ましたよ」と言ったら、「なんか静かに出たねえ〜」と言っていました。たしかに、リリースが祝日だったこともあってなんか「出たぞー!」って感じがしない(笑)
IE8出たし、もうIE5系の検証なんかやめたいんだけど、アクセス解析を見るとまだそれなりにいる。IE6なんて全然現役だしなあ。みんな早く移行してくれないかなあ。
Firefoxのユーザーは、するすると3に移行していった感じなんですが、IEはその辺うまく移行していかないですね。
Chromeユーザーも増えていってるし、チェックしなきゃいけないブラウザが増えるばっかりで減っていかないです。ふう。

WEBデザイナーが目指すこと、求められていること

はてブでホットエントリー入りしていた「プログラマが1ヶ月でWebデザイナーに転身する方法」というブログ記事を読んで、つらつらと思ったこと。


サイトを構築していると、プログラマWebデザイナーと共同作業をしなければならない。

しかし高度なRIAを実現しようとすると思っているようにWebデザイナーに素材を作成してもらうだけでもとても骨の折れる作業だ。

そこで、一層、「すべてのプログラマWebデザイナーになればいいんじゃね?」と思った。

今回は、私の実体験に基づき、「プログラマが1ヶ月でWebデザイナーに転身する方法」というのを考えてみた。


続きにはWEBデザインを勉強するために何を勉強しなければならないか、またそのための本が紹介されています。HTML、CSSJavaScriptActionScript、レイアウト、配色、Photoshop/Illustratorなんかが列挙されています。


プログラマからみたら、やっぱりWEBデザイナーっていうのは「HTML屋さん」であり、「画像加工屋さん」っていう扱いなのかな。・・・ちょっと落ち込んでしまいます。
HTMLが書けて画像作ってレイアウトしてくれさえすれば「WEBデザイナー」の役割を果たしてる。そう思われてしまうくらいの価値しかデザイナーには提供できていないんだろうか。そう思うと凄く寂しい気持ちになります。
結局のところ、「デザインは、プログラムを出力するための装置」でしかないんでしょうか?


私は、「WEBデザイン」には、ユーザーに情報を提供し、心を動かし、行動にまで結びつける、そんな力があるはずだと、信じてます。ユーザーの中にある何かの課題・迷い・悩み・欲望、そういうものを解決する力があるはずだと思うのです。
見た目が綺麗に整っているとか、美しくてセンスがあるとか、HTMLがValidだとか、そういったことは、「WEBデザインの目的を達成するための手段」ではあるけれども、それがデザインの最終目的ではないはず。


アートじゃなくて、ビジネスとしてデザインをしているんだから、「デザイン変えたら売上が10倍になったよ!」というようなことを目指したい。
そのためには、マーケティングや広告の知識だって要る。アクセス解析だって出来なくてはいけない。「HTMLやPhotoshopを覚えて見栄えのいいWEBページを作ること」を最終目的にする人たちとは、ベクトルの違う知識・経験が要ると思うのです。


プログラマの方にも、デザインという行為が持つ力をもっと信じてほしい、引き出そうとしてほしい。デザインの内面・背景に迫ろうとしてほしい。課題解決の方法として、プログラムができないことを、デザインに託そうとしてほしいです。
それは、HTMLやPhotoshopを学ぶことでは得られない、コミュニケーションの問題だと思うんですよ。
もし私が一緒に仕事をする人を選べるのなら、デザインの力を信じているプログラマと仕事をしたいし、そういうプログラマの要望にこたえられるデザイナーでありたいです。

Excel VBAでUTF-8のテキストファイルを扱う(ADODB.Stream)

自分にとっての覚書です。

Excel VBAでテキストファイルを書き出すために、こんなマクロを組んでいました。

Dim n As Long
n = FreeFile
Open "C:\sample.html" For Output As #n
Print #n, "テキスト"
Close #n

けれど、この方法だと、できあがったテキストファイルの文字コードはShift-JISになります。
Excelのデータから大量にHTMLを生成するVBAを組もうと思っていたのですが、今回作成したいファイルの文字コードUTF-8
テキストファイルを作成した後に、文字コードを変換するという手も考えましたが、ひと手間増えてしまいます。どうにかならんかと検索してみたところ、VBA文字コードを指定してテキストファイルを読み書きするにはADODB.Streamを使えばよいということが分かりました。


[参考にしたサイト]

Stream オブジェクト
http://msdn.microsoft.com/ja-jp/library/cc364272.aspx#

ADODB.Streamでファイル読み込み@Excel マクロ・VBA
http://www.cocoaliz.com/excelVBA/index/41/

いろんな文字コードでファイルを読み書きするにはADODB.Stream
http://d.hatena.ne.jp/nacookan/20080222/1203689686



[実際に書いてみた]
まずは参照設定で「Microsoft ActiveX Data Objects」というものにチェックを入れておきます。
以下は、VBA初心者の自分が、テキストファイルを1行ずつ読み込んで配列に格納し、それをさらに別のテキストファイルに格納するコードを作ってみた例です。


ファイルの読み込み

'ファイルを読み込むための配列
Dim Arr()
ReDim Preserve Arr(0)

'オブジェクトを作成
Dim txt As Object
Set txt = CreateObject("ADODB.Stream")

'オブジェクトに保存するデータの種類を文字列型に指定する
txt.Type = adTypeText
'文字列型のオブジェクトの文字コードを指定する
txt.Charset = "UTF-8"

'オブジェクトのインスタンスを作成
txt.Open

'ファイルからデータを読み込む
txt.LoadFromFile ("c:\sample.html")

'最終行までループする
Do While Not txt.EOS
    '次の行を読み取る
    Arr(UBound(Arr)) = txt.ReadText(adReadLine)
    ReDim Preserve Arr(UBound(Arr) + 1)
Loop

'オブジェクトを閉じる
txt.Close

'メモリからオブジェクトを削除する
Set txt = Nothing


ファイルの書き込み

'オブジェクトを作成
Dim txt2 As Object
Set txt2 = CreateObject("ADODB.Stream")

'オブジェクトに保存するデータの種類を文字列型に指定する
txt2.Type = adTypeText
'文字列型のオブジェクトの文字コードを指定する
txt2.Charset = "UTF-8"

'オブジェクトのインスタンスを作成
txt2.Open

'配列をオブジェクトに書き込む
For Each sample In Arr
    '1行ずつ書き込む
    txt2.WriteText sample, adWriteLine
Next

'オブジェクトの内容をファイルに保存
txt2.SaveToFile ("c:\sample2.html"), adSaveCreateOverWrite

'オブジェクトを閉じる
txt2.Close

'メモリからオブジェクトを削除する
Set txt2 = Nothing


[ADODB.Streamのつたない解説]
(1)Typeプロパティ

'オブジェクトに保存するデータの種類を文字列型に指定する
txt.Type = adTypeText

Typeプロパティに、テキストデータを指定します。
adTypeTextはテキストデータで、バイナリはadTypeBinaryのようです。


(2)Chasetプロパティ

'文字列型のオブジェクトの文字コードを指定する
txt.Charset = "UTF-8"

Chasetプロパティに、UTF-8を指定します。
使用できる文字コードですが、MSDNには、利用できる値は、インターネット文字セット文字列としてインターフェイスで渡すことのできる通常の文字列です ("iso-8859-1"、"Windows-1252" など)。 とあります。
http://msdn.microsoft.com/ja-jp/library/cc364313.aspx


(3)Openメソッド

'オブジェクトのインスタンスを作成
txt.Open

オブジェクト.Open Source
SourceにVariant型の値を指定して開くようですが、Sourceを省略すると、メモリ内でオブジェクトのインスタンスが作成され、WriteTextメソッドやLoadFromFileメソッドを使用して動的にデータを追加することができるそうです。
・・・とMSDNに書いてあります。実はいまいち意味がつかめてないです・・・。
http://msdn.microsoft.com/ja-jp/library/cc364198.aspx


(4)LoadFromFileメソッド

'ファイルからデータを読み込む
txt.LoadFromFile ("c:\sample.html")

読み込むファイルを指定します。


(5)EOSプロパティ
(6)ReadTextメソッド

'最終行までループする
Do While Not txt.EOS
    '次の行を読み取る
    Arr(UBound(Arr)) = txt.ReadText(adReadLine)
    ReDim Preserve Arr(UBound(Arr) + 1)
Loop

EOSプロパティは、現在の位置がファイルの末尾であればTrue、そうでなければFalseを返します。
ReadText(読み取る文字数)でデータを読み取ります。
読み取る文字数は、Long型の値のほかに、以下が指定できます。

  • adReadLine・・・1行ずつ
  • adReadAll・・・すべて


(7)WriteTextメソッド

'配列をオブジェクトに書き込む
For Each sample In Arr
    '1行ずつ書き込む
    txt2.WriteText sample, adWriteLine
Next

オブジェクト.WriteText 文字列,オプション
文字列を書き込みます。
オプションは以下が指定できます。

  • adWriteChar・・・改行なし
  • adWriteLine・・・改行あり(LineSeparatorプロパティで設定、デフォルトはCRLF)


(8)SaveToFileメソッド

'オブジェクトの内容をファイルに保存
txt2.SaveToFile ("c:\sample2.html"), adSaveCreateOverWrite

書き込むファイルを指定します。オプションは以下が指定できます。
(実はこのオプションもよく理解できていない・・・)

  • adSaveCreateNotExist・・・ファイルがない場合に新規作成
  • adSaveCreateOverWrite・・・ファイルがある場合に上書き保存


(9)Closeメソッド

'オブジェクトを閉じる
txt.Close

オブジェクトを閉じます。


[まだ困ってること]
いろいろ調べていたのですがUTF-8をBOM無しにする方法が分からず、引き続き調査中。

Yahoo!のインデックスアップデートで上位から消えたっぽい

2月25日のYahoo!検索スタッフブログで、インデックスアップデートが発表されています。


Yahoo!検索において、Yahoo! inc.が開発しているウェブサーチエンジンYahoo! Search Technology (YST)」のインデックスのフルアップデートを開始しました。


運営してるサイトでも、おそらくこのインデックスアップデートが原因?と思われる変動がありました。


・・・というか、じつは表示順位が変動したかどうか、本当のところよく分からないのです。
上位から消えたと思われるキーワードは、「社名」なのですが、お恥ずかしい話ながら、あるビッグワードのSEOばかり追いかけていたために、「社名」というキーワードにはまったく注意を向けていなかったのです。

で、ある日アクセス解析を見ていたら、Yahoo!からの訪問が、この日近辺を境にガクッと減っていて、異常事態に気づいたというわけです。どれくらい減ったかというと、ざっと3分の1くらいになってしまいました。


具体的な現象は、こんな。
まず、ウチで運営しているサイトはこんな感じのドメイン構成になってます。もちろん社名はすべてのサイトのサイト名・タイトルに入っています。

  • www.AAA.com
  • www.AAA.com/directoryA/
  • www.AAA.com/directoryB/
  • subdomainA.AAA.com
  • subdomainB.AAA.com
  • www.BBB.com
  • subdomain.BBB.com


このうち、「www.AAA.com/directoryB/」のサイトのみが、検索結果の1ページ目からはじき出されてしまっているようなのです。
ちなみに今現在は「www.AAA.com」が1位、「www.AAA.com/directoryA/」が2位です。
「subdomainA.AAA.com」「www.BBB.com」「subdomain.BBB.com」も1ページ目に表示されています。


よく本やSEOのサイトなんかに「Googleでは、ある検索クエリに対し、同じドメインからは2ページしか表示されない」と書いてあります。
それが正しいならば、このドメイン構成でいくと、「www.AAA.com」のドメインからは2ページしか表示されません。そして、実際に以前から、Googleでは「社名」で検索すると「www.AAA.com」からは2ページしか表示されないという状態でした。表示されるページはその時々によって違うのですが、今は「www.AAA.com」と「www.AAA.com/directoryB/」が上位表示されています。


もちろん、「同じドメインからは2ページ」というのは、Googleの話。Yahoo!でもそんな決まりがあるのかは寡聞にして知りませんが、今、この状況で、考えられる原因があるとすれば、ドメインが一番の有力候補なのです。
実はYahoo!対策をしっかりしようと、「www.AAA.com/directoryB/」をYahoo!ディレクトリに登録したり、サイトマップを送信したりもしていたのですが、それはインデックスアップデートより前の話だし、どちらも掲載順位にマイナスの影響が出るとは考えにくいですよね。サイトマップはちゃんとメンテしてるし・・・。もちろん、サイト内部のソースをいじったりもしていませんし、ペナルティになるようなこともしていない・・・と思います。


とりあえず、「ドメインが原因のような気がする」、というだけでは、そうカンタンにドメインを変えることができないので、しばらくは様子を見るつもりです。けど、もう2週間近く元に戻らないということは、このまま行きそうな気がしています。
Googleでは上位表示されているし、「www.AAA.com/directoryB/」が出なくてもさほどクリティカルな問題ではないので、あわてる必要もないのですが、ちょっとしょんぼりしてしまいます。

「読書」という言い方はやめようじゃないか。

よく、履歴書とかに「趣味:読書」とか書いたりします。
または、「月にどのくらい読書されますか」とかアンケートされたりします。
「読書」は本を読むこととほぼ同義でしょうが、この言い方、果たして適切なんでしょうか?


世の中にはいろんな種類の本があります。
小説、ビジネス書、絵本、お料理レシピ、雑誌、コンピューター書、辞書、地図、マンガ・・・。
どれも立派な「本」です。そのはずなのですが、たとえば、料理が趣味でレシピ本を何冊も買っているような人のことを「読書家」とはいいません。たいてい小説や小難しいビジネス書や学問の本を読む人を「読書家」とか呼びます。「よく読書をします、月に○冊〜」などというと「わぁすごい」となるわけです。しかし、なにをもってして「すごい」なんでしょうか。


本を読むという行為は、「本を読む」ために行うことではありません。
自分が何かをする・知る・感じるために「本を読む」のです。
レシピ本を買った人は、事実としては「レシピ本」という"モノ"を買ったのですが、本質的なところでは「おいしい料理を作るための手順」という"知識"を買ったのです。
もしもこの人が「わぁすごい」と認められるときがあるとすれば、それは誰かに「おいしい料理」を供したときになることでしょう。
ビジネス書をよく読むのならば、本を読んで知った新しいビジネス手法で効果を上げたときにこそ「すごい」と言われるべきです。勉強しようという姿勢だけで褒められるのは中学生までですから。


だからこそ、「読書」なんて言い方はいっそやめてしまったらいいと私は思うのです。
本は「読む」だけではダメです。本は「使う」ものです。自分の心を揺さぶり精神的に充実したいのならば小説を使う、ビジネススキルをアップしたいならビジネス書を、新しいパソコンを使いこなしたいならコンピューター書を、人においしい料理をつくってあげたいのならレシピ本を使う。
もしかしたら、本を読んだそのときには目的を達成できず、本をもとに何度もリトライし、自分の頭で考えていくことで、ようやく目的を達することができることもあるかもしれません。


「読書」という言葉の字義にとらわれて、本を読んだだけで満足し思考停止状態に陥っている人間は、他人に読書量を褒められて「自分は知識も教養もある人間だ」とカン違いしている分だけタチが悪いのです。
本は使わなくてはいけません。使っていない人を褒める理由はありません。自戒も込めて。