« 2007年3月 | メイン | 2007年5月 »

2007年4月25日

IE6 + CSS 『border-leftとpadding-bottom』の謎
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんばんは、sashaです。

次のような形のスタイルを実装しようとしていて、
実例
実例 posted by (C)フォト蔵

IE5.5や6でこんな状況に出会ったことはありませんか?
(赤と青のボーダーは、elementの境目がわかりやすいように入れてあります)

実例バグ
実例バグ posted by (C)フォト蔵

どこがおかしいかお分かりになりますでしょうか。2項目目の赤と青で囲まれたテキストが、左に飛び出ていますね。その下にあるテキストまで、左にずれてます。

これは、多くのデザイナーの悩みの種である、「IE」の代表的なバグのひとつです。

このバグを再現させるのに必要なことはたったこれだけ。
  • 「divの中にdiv」など、ブロック要素を2重にする
  • 外側のブロック要素に、border-leftとpadding-bottomを定義する
以上。これだけでIEさんの地雷を踏めます。

以下のHTML構成を見てください。

<div class="sec">
    <p class="caps">caption 1</p>
    <h2>TITLE TITLE TITLE TITLE</h2>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ................</p>
<div class="sec">
    <p class="caps">caption 2</p>
    <h2>TITLE TITLE TITLE TITLE</h2>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ................. </p>
<div class="sec">
    <p class="caps">caption 3</p>
    <h2>TITLE TITLE TITLE TITLE</h2>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit....................</p>
これに、次の次のCSS定義を適用します。
.sec{
  padding-bottom: .5em;
  border-left: 20px solid silver;
}
h2{ /*見やすさのため。バグには関係ありません */
  border: 1px solid red;
  margin: 0;
}
.caps{ /*見やすさのため。バグには関係ありません */
  border: 1px solid blue;
  margin: 0;
}
すると、ずれるんですね。しかも、borderの太さの分(ここでは大げさに20px) x 反復回数の分だけどんどんずれて行きます。 値をemにしても、%にしても、pxにしても、関係ないようです。
バグ
バグ posted by (C)フォト蔵

.sec{
  padding-bottom: .5em;
  border: 20px solid silver;
}
のように、borderで四方を囲んだり、border-topだけ、border-rightだけ、border-bottomだけ指定するには、まったく問題ありません。Firefoxと同じような、予想通りの結果を得ることが出来ます。
4辺にborder
4辺にborder posted by (C)フォト蔵

これに対して、
.sec{
  padding: .5em;
  border-left: 20px solid silver;
}
のように、paddingは、padding-bottomを0以外にすることを意味する指定が入ると、アウトです。

さて、どうしたら解決できるでしょうか。以下に考えられる解決策をいくつか挙げておきます。もちろん、他にもあるかもしれません。とっておきの方法がありましたらご一報ください。

(1) border-leftとpadding-bottomというコンビネーションを避ける
触らぬ神にたたりなしです。こそーっと逃げましょう。 たとえば、padding-bottomを0にするのも、正しい逃げの手段です。

border-bottomが0なら大丈夫なので、
.sec{
  padding: .5em;
  padding-bottom: 0;
  border-left: 20px solid silver;
}
これならOK。

(2)border-leftだけでなく、border-bottomを与える
.sec{
  padding-bottom: .5em;
  border-left: 20px solid silver;
  border-bottom: 1px solid silver;
}
border-bottomを与えてみる
border-bottomを与えてみる posted by (C)フォト蔵

背景と同一色にすれば、問題は解決です。
border-bottomをbackgroundと同じ色にしてみる
border-bottomをbackgroundと同じ色にしてみる posted by (C)フォト蔵
理不尽ですが、不気味ですが、仕方ありません。

(3)Holly Hackする
以下を挿入すれば、回避できます。
/* Hides from IE-mac \*/
* html .sec {height: 1%;}
/* End hide from IE-mac */


どの方法が良いか、ここでは議論は避けますが、あなたの信念にぴったりの方法を選んでください。

それでは、また。

携帯で使える無料のメーリス「sugu.CC(ベータ版)」を公開しました
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

本日、sugu.CC(ベータ版)を公開しました。
カンタン・メーリス!スグCC

sugu.CC(http://sugu.cc/)は、スグにメーリングリスト(メーリス)が作れるサービスです。

★カンタン

(好きな名前)@sugu.ccと
Cc(To)に追加したい人のメールアドレスを入れて、
メールを送ると、スグ、メーリスのできあがりです。

★メーラだけで作れる

携帯で使うことをメインに据えていますので、シンプルでわかりやすく、使いやすいことを目的に、メーラだけで作れるようになっています。

★メンバなら、誰でも追加できる

webで作成・管理など、手間がかかることは一切ありません。
そのため、管理人などの仕組みもありませんので、
管理人に連絡して、管理人が追加。という面倒な手順もありません。

★携帯で使いやすい

携帯特有の機能については、
・デコメール・デコメ絵文字にも対応しています。(端末が対応している場合)
・auから送られてくるメールの絵文字に対応しています。
部活・サークル・飲み会の連絡など、
グループでの手軽な連絡手段としてお使いいただければと思います。
※注 なりすましメールを拒否している方は解除してからご利用下さい

以下のQRコードから携帯サイトにアクセスして下さい。
カンタン・メーリス!スグCC
QRCode by MOJI-Q

2007年4月23日

ベンチャー流のスパムメール対策術(前編)
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

先週まで風邪や雨の多い日が続いていてなかなか自転車通勤ができませんでしたが、今日から自転車通勤を再開したnaoyaです。

今日は、僕がメールサーバを新しく構築するにあたって新たにスパム対策を施したので、その内容について紹介します。

まず、メールサーバですが、次のようなオープンソースソフトウェアで構成されています。

それぞれ yum で最新版をインストールしていました。さらにウノウではメーリングリストを使っているのですが、メーリングリストの配送プログラムには mailman を使っています。mailman も yum で最新版をインストールしました。

さてスパムメールですが、よくメーリングリスト宛にたくさん送られてくるのに対して個人宛にはまったく送られてきません。

そこで、メーリングリストプログラムでメールの配送前にスパム対策を施そうと、まずはオープンソースで使えるスパムフィルターを探してみました。

次の三つのスパムフィルターが見つかりました。

それぞれのスパムフィルターの特徴は、次の通りです。

SpamAssassin

おそらく世界で一番有名なスパムフィルターだと思います。Perl で書かれており、デーモンとしても動作します。

bsfilter

Ruby で書かれているスパムフィルター。作者が日本人のため、日本語に標準で対応しています。

bogofilter

C 言語で書かれているスパムフィルター。C 言語のため高速に動作する。

すべてのスパムフィルターを使うとメールの配送が遅れてしまう予感がしたので、まずはどのスパムフィルターを使うと効果的か自分のメール環境で試してみました。

それぞれのスパムフィルターを試すために、インストールと設定をしました。

SpamAssassin

  1. # yum -y install spamassassin
  2. 設定ファイル (/etc/mail/spamassassin/local.cf) を日本語対応のファイルに置き換える(*1)
  3. # chkconfig spamassassin on
  4. # /etc/init.d/spamassassin start

(*1) Tokyo Linux Entertainment Community様にて配布されている定義ファイルが便利です。

bsfilter

パッケージはないため、ホームページから最新版をダウンロードして展開します。

bogofilter

日本語に対応させるため、kakasi もあわせてインストールします。

  1. # yum install bogofilter
  2. # yum install kakasi


スパムフィルターをインストールしてたら、まず行うのは Ham& Spam メールの学習です。
スパムフィルターの学習を手動で毎回行うのは面倒のため、次のようなシェルスクリプトを作って cron で深夜 0 時に毎日実行するようにしました。
なお、下記のシェルスクリプトでは、MailDir 形式で spam ディレクトリにスパムメールが存在して、cur ディレクトリ(つまり Inbox)に通常のメールがある前提で作成されていますので注意してください。

#!/bin/sh
BGFILTER=/usr/bin/bogofilter
BSFILTER=/opt/bsfilter/bsfilter/bsfilter
SALEARN=/usr/bin/sa-learn
MAILDIR=$HOME/Maildir

# spam
echo "spam for bogofilter..."
find $MAILDIR/.spam/cur -name "*" -type f -exec nkf -Z -m -j {} \; | kakasi -w | $BGFILTER -Nsv
echo "spam for bsfilter..."
$BSFILTER -sv $MAILDIR/.spam/cur/*
echo "spam for SpamAssasin..."
$SALEARN --spam $MAILDIR/.spam/cur

echo ""

# not spam
echo "ham for bogofilter..."
find $MAILDIR/cur -name "*" -type f -exec nkf -Z -m -j {} \; | kakasi -w | $BGFILTER -Snv
echo "ham for bsfilter..."
$BSFILTER -cv $MAILDIR/cur/*
echo "ham for SpamAssasin..."
$SALEARN --ham $MAILDIR/cur

# update database
$BSFILTER -u

このシェルスクリプトを約2週間ほど自動実行して Ham& Spam メールの学習を行いました。 この状態で、やっとどのスパムフィルターが効果的か試験をすることにしたのですが、長くなってきましたので、続きは後編で書きたいと思います。

後編では、スパムフィルターを試した結果と mailman でのスパム対策方法について書きたいと思います。

2007年4月19日

ThinkITでPHP開発手法の連載の第7回目が掲載されました
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

harukiです。

ThinkITにてご紹介させていただいていますPHP開発手法の連載 の最終回として

本日、私の担当分である

ウノウで行っている取り組みについての記事が掲載されました。


お時間のある時にでも見て頂ければ幸いです。

2007年4月17日

[書評] モバイル大変革時代のケータイ通販ビジネス
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは、matsumotoです。

今日は、献本でいただきました「モバイル大変革時代のケータイ通販ビジネス」のレビューをさせていただきます。

構成としては前半に携帯ユーザーの各種データやそれに対する考察がまとめられています。後半は携帯のECビジネスで実際に実績のある企業の事例をあげています。

売り上げを伸ばすためにいったいなにをしたんだ?などの疑問に実体験を交えて答えているので、携帯やEC関連の人には参考になる本だと思います。

僕の仕事は直接ECには関係ないのですが、モバイルチームに所属していることもあり色々勉強になりました。そのことについて紹介したいと思います。


携帯はPC化している


社内ミーティングで「携帯とPCは文化が違う。両方に対応するよりは携帯に特化すべきだ。」と言われました。確かに現状ではPCと携帯は違うサービスのように思えます。

しかし携帯はどんどんPC化していっているようです。パケット定額などを導入し2010年には光並の通信速度を実現する「スーパー3G」という計画もあるようです。

更に最近はW-ZERO3のようなタッチペンやWindowsが入っているものもあります。そのうちPCと携帯の垣根はなくなっていくような気がします。


携帯の本質的な価値


どうしてPCでは無料で提供されているようなコンテンツが携帯では有料で通用するのか?それはユーザーが「ニッチタイム」をうまく活用できるかららしいです。

ある統計によると1時間買うのに平均2000円出してもいいと言うデータがあるらしいです。そう考えるならば10分時間を潰せるならば多少のお金を出してもいいと思うようです。

しかも安いのでついつい手が出てしまいます。僕も昔100円のゲームを片っ端から買い占めたことがあります。「衝動買い」の精神をくすぐるコンテンツを用意するというのが一つのポイントでしょうか。


どうやってサイトを探しているのか?


ある調査によると

一位、メニューリストから
二位、携帯電話の検索サイトから
三位、メールマガジンから



七位、友人・知人から

のようなアンケート結果がでています。意外なことに「友人・知人から」のクチコミが少ない。これはショッピングサイトのデータなのでモバゲーなどのエンターテイメント系のサービスでは結果が変わるとは思いますが。

しかし携帯のブログはPCのようにクチコミ効果は発揮されていないようです。トラックバックの機能はあるんですが、実際にトラックバックをする人が少ないらしいです。

これから携帯は更に盛り上がるでしょう。その中で沢山のサービスが生まれると思います。それをユーザーに届ける方法がいっそう重要になると思います。僕がPC上で面白いサービスを見つけるときは大抵ソーシャルブックマークかブログを通じてです。

最近の調査によると公式サイトより検索サイトの方が上らしいしです。

携帯はPC化していっているらしいのでそのうち問題なくなるかもしれません、しかしそれまでに何か出来ることがあるかもしれません。これからも色々考えていきたいと思いました。


モバイル大変革時代のケータイ通販ビジネス
柿尾 正之 片岡 俊行 両国 さくら 田中 裕子
翔泳社 (2007/04/11)
売り上げランキング: 1056
おすすめ度の平均: 5.0
5 とても面白くてわかりやすいです

脆弱性評価レポートから何が重要かを読み取る
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは!やまもと@テスト番長です。

ちょっと面白い記事がありましたのでご紹介したいと思います。
Interpreting the Results of a Vulnerability Assessment: How to Focus on What’s Important in Your Web Application Security Testing
by Kevin Beaver on 15/03/07
http://www.infosecwriters.com/text_resources/pdf/Vuln_Assessment_KBeaver.pdf

この記事ではセキュリティテスト(ペネトレーションテスト)の調査結果について、ただ鵜呑みにするのは得策ではなく、何が本当に重要であるかを見抜くことを薦めており、実際にセキュリティテストで報告されたいくつかの誤った報告例を挙げています。



後述する例は、様々なウェブアプリケーションを検査するとき発見された実際の脆弱性の例です。 誤診、見落とし、偏執症、とでも言うべきもので、重大に見えるようでいて結局重要ではありません。


1. 脆弱性調査結果: データベースアクセスにつながるSQLインジェクション脆弱性が発見されました。

結論: 適切なバリデーションチェックは指摘箇所の後で行われていました。そして、実際はどんなデータも抽出出来ませんでした。


2. 脆弱性調査結果: ログインページにSSLが存在していません。セッションIDとログインパスワードが平文で流れており、キャプチャ、ハイジャック、およびその他の行為を許容しています。

結論: 管理者はまだサーバのデジタル証明書を装填していませんでした。


3. 脆弱性調査結果: バッファオーバーフロー脆弱性のあるウェブサーバソフトウェアによって、リモートからのログインが許容されています

結論: ファイアウォールとIDSは、ウェブサーバへのすべてのトラフィックを許容する設定になっていました。


4. 脆弱性調査結果: Microsoft FrontPageのバーチャルディレクトリ、FTPディレクトリなどが攻撃される可能性があります。

結論: ディレクトリのパーミッション設定を妥当な状態にして使用することは出来ませんでした。


5. 脆弱性調査結果: .oldという拡張子のバックアップファイルにおいて、 ソースコード漏出と攻略に通じる問題が発見されました。

結論: そのファイルはアプリケーションのセキュリティにほとんど関係ない、ホームページの実行可能なファイルでした。


6. 脆弱性調査結果: 複数の脆弱性を持っている時代遅れのバージョンのApacheウェブサーバがインストールされています。

結論: システム上にApacheは存在しませんでした。


7. 脆弱性調査結果: Google Hacking Database (GHDB)で ファイル、リンク、およびEメールアドレスが発見され、重要な情報が漏洩したのが判明しました。

結論: これらのファイル、リンク、およびEメールアドレスはウェブアプリケーションの操作に必要なものでした。



8. 脆弱性調査結果: Macromedia Dreamweaver remote database scripts は任意のSQLクエリを実行する攻撃者からアクセス可能です。

結論: これらのファイルはマネージャ/管理者アカウントでログインするとアクセス可能であっただけで、そのように意図されていました。


また、セキュリティテストでは場合によって非常に多くの問題点が指摘されますが、それに振り回されないことが大事であり、現実的な対応の優先順位を決めることが大切であるとしています。



あなたのウェブアプリケーションセキュリティがどんなに強固であっても、どこかの誰か常にアプリケーションを攻撃する方法を見つけるでしょう。
それはあなたがファイアウォール、IPS、バリデーションチェック、確実な認証要件、狭めたアクセス制御、強固なウェブサーバ、基本オペレーティングシステム、システムの監視などなどのフェールセイフのコントロールを層にしなければならなかった理由です。
1つのコントロールが失敗しても、あなたにはシステムを保護する他の半ダースのもの施策があります。

恐らく最も重要なことは、現実的な対応を心掛ける事によってあなたは、あなた、あなたのチーム、および開発者のためにより少ない仕事量を導き出し、皆が本当に重要なものに焦点を合わせることができるでしょう。

セキュリティテストに限らずバグレポートの山でも同様の局面に出会うことがありますが(特にあなたが外部に顧客を持つ身なら!)より的確な判断を下せる見識を身に付けるよう努力したいものですね。

#セキュリティテストはツールを使って実施する故に吐き出されたレポートは正確さを欠きかつ刺激的なので、逐一読み解いて対応の優先順位を決めるべし、というお話でした。

2007年4月16日

生産性を高めるための3つの心がけ
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは、satoです。

プログラマの権利宣言を読みました。要約すると

 すべてのプログラマは2つのモニタを持つ権利を有する
 すべてのプログラマは高性能なPCを持つべきである
 すべてのプログラマはマウスとキーボードの選択の権利を有する
 すべてのプログラマは快適な椅子を持つべきである
 すべてのプログラマは高速なインターネット接続を持つべきである
 すべてのプログラマは静かなる仕事環境を持つべきである

ということらしいです。

会社に求めるのもよいですが、自分の心がけでずいぶん作業効率も変わると思うので、経験的に特に作業効率に影響する項目を書いてみようと思います。

1) 作業前に適度な糖分をとる

 働き始める前に、糖分をとると頭の回転がだいぶよくなる気がします。果汁100%の飲み物がお薦めです。

2) 楽な格好で作業する

 スーツよりは普段着、普段着よりは部屋着、部屋着よりは裸のほうが作業効率が上がる気がします。周りの目を見ながら、靴をスリッパにするなどしてみましょう。あと下着はトランクスにしましょう、これ超重要。

3) 最適な環境音の下で作業をする

 電話をプログラマのいるフロアに置くなというのも酷なので、インナーイヤー型のイヤホンをお薦めします。 SHUREのEシリーズEtymotic Research社のERシリーズがお薦めです。音量は個人差もあると思いますが、無音よりうるさく話声よりも小さい、ちょうど喫茶店の雑音くらいがよい気がします。

他にも奇抜なアイディア募集中です!

2007年4月12日

Webサイトのテキストを読みやすくする
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは!

4月より、デザイナーとしてウノウの末席に加わらせていただくこととなりました。山崎と申します。
周囲が凄いエンジニアの方ばかりで、毎日チビりそうになりながら(?)仕事をしています。

いきなりのラボブログ当番で、さて何を書いたものやら、というところなのですが、このブログをご覧いただいている方々にはエンジニアさんが多いということで、「デザインはよくわからない」と苦手意識を持っている方も少なからずいらっしゃるはず。そんな「デザインとかようわからん」な方々に向けて、Webサイトの「デザイン」について、本当にベーシックな部分から少しずつ少しずつ解説してみようと思っています。

すでにガシガシWebデザインをやっている方々には物足りない、退屈な内容になってしまうかもしれませんが、どうぞよろしくお付き合いください。

というわけで今回は、「テキストを読みやすくする」です。
FlashだリッチコンテンツだRIAだ何だと叫ばれて久しい今日この頃ですが、とはいえBlogにWiki、SNSの日記など、なんだかんだでWebサイトの中身の大部分は「テキスト」です。テキストを制する者はWebデザインを制する……はさすがに言いすぎにしても、「テキストの読みやすさ」がWebサイトの品質に与える影響は馬鹿にできません。
今回は、そんな「テキスト」の読みやすさのためのポイントをいくつか解説してみようと思います。

なにはなくともまず行間を広げる。

まずは、こちらの画像をご覧ください。
行間設定の例
行間設定の例 posted by (C)フォト蔵

一番上が何も指定していない状態。中央が適度に行間をあけたもの、下が行間を必要以上に大きくあけたものです。
IE、Firefoxなどのデフォルトですと、CSSなどで何も指定しない場合、ちょっと行間(行と行の間のスペース)が詰まりすぎていて、ごちゃっとした印象になってしまいます。行間を少しあけてやると、それだけで行の分離がよくなり、横方向に視線がスムーズに流れていきます。

行間が狭いと、

  • 行の一番最後まで読んだ後、次の行の先頭に視線を移動するときに、「どれが次の行なのか」がぱっとわかりにくくなり、ストレスになる。
  • ぱっと見の印象が「ごちゃごちゃしている」印象になり、「読みにくそう」という印象を与える
ということになりがちです。また、文字の大きさと違って、ブラウザの設定で行間をコントロールするのは難しいので、配慮として行間の調整はしておくに限ります。

具体的な目安としては、だいたいline-heightを130~180%くらいの範囲で、

  • 一行の長さ(ブロックの幅)が長い場合にはやや広めに
  • 一行の長さが短い場合はやや狭めに
ということを念頭に置いて設定するといい感じになります。これは
  • 行が長い場合は次の行の頭がどこにあるのか、戻っていく間にわからなくなりがち(=行の間が離れていたほうが、次の行がどれか、が判断しやすい)
  • 行が短い場合は、次の行の頭がどこかはすぐにわかるので狭くてもよい。また、行間を広げすぎると行ごとにバラバラな印象になり、ブロックのまとまりが悪くなる
といった理由からです。

1行の長さに気を使う

個人的にDTP方面のことを勉強していたとき、1行あたり何文字だと読みやすいか、なんていう議論を色々と見かけました。

  • 1行が長すぎると視線の横移動が大きくなりすぎて目に負担がかかります。
  • 短すぎると視線の移動が多すぎるのと、単語が切れ切れになることもあって、文章が頭ににすっとはいってこなくなります。
このあたりは個人の好みや閲覧環境の関係もあるので一概には言えないのですが、一行あたりおおよそ30~40文字くらいが多くの人にとって読みやすいのでは、と個人的には思います。

#とはいえリキッドレイアウトの場合や、ユーザが文字のサイズを変えた場合のこと、また、閲覧環境がそれぞれ違うことまで考えると、「最適な一行の文字数」を設定するというのは難しく、そういう意味ではエラスティックレイアウトって結構いいかもしれない、と思ったり。

文字間

文字間、つまりCSSでいうところのletter-spacingですが、こちらも少しあけてやるとすっきりすることがあります。 「色々調整してみたけどどうしてもなんだかごちゃっとしてしまっているな」と思ったときにはこのプロパティに「.05em」とか指定して、ほんの少しだけ文字間を空ける、ということを試してみるのもひとつのテです。

文字色と背景色のコントラストを十分に

文字と背景の色は、ちゃんと文字が読めるよう、コントラスト(明度差)をちゃんとつけるようにします。 黒背景に青文字など、明るさが近いと文字が認識しづらくなります。
だからといって真っ白な背景に黒文字、黒背景に白文字などだと今度はコントラストが強すぎて、目が疲れます。

文字色と背景色の例
文字色と背景色の例 posted by (C)フォト蔵

ですので、例えば#FFFFFFの背景に#666666の文字、など、文字の色を背景色に近づけてあげる、背景色を文字の色に近づけてあげる、などしてコントラストが高すぎないよう設定してやると、目に優しい、落ち着いた読みやすい印象になります。
また、見た感じ「なんとなくごちゃっとした印象だなぁ」「もうちょっと文字細くならないかな」と思うような場面でも、文字と背景のコントラストを下げると、(実際の文字の太さは何もかわらないのですが)印象として文字が細くなったように見えますので、そういった場面での調整にも使えます。

文字の背景に模様や写真は敷かない

模様や写真などは大抵の場合文字を読むのに邪魔にしかなりませんので、文字のある領域の背景に敷くのはできるだけ避けます。 何かの理由で背景を敷く場合は、シンプルなグラデーションなど、文字を読む上で邪魔にならないようなものがオススメです。

段落とインデント

小学生の時の作文では、「段落の頭は1字下げ」みたいなルールがありました。
ですがこれをWebページのテキストに適用して、段落ごとに最初の一文字下げると、デコボコした感じになって、どうもすっきりしない印象になりがちです。
ひと段落あたり長い文章を書く場合にはその限りではないのですが、多くの場面では一字さげたり、text-indentを設定したりせず、ブロックの左に一本の線が浮かび上がるくらいにしたほうが、整然とした、すっきりしたものに仕上がると思います。

下線、太字、色

文字に下線をつけたり、太字にしたり、途中で色を変えたりするのは、「読みやすさ」という点からは、本来はできるだけ避けたほうがいいこと、です。なぜかというと、人間の目は目立つ部分についつい視線をひっぱられてしまうので、そういう部分があると、そちらが気になってしまって、スムーズに文字を読むということが難しくなるからです。

とはいえリンク部分には下線がないとリンクであることが分かりにくいですし、太字や文字色の変更も「伝える」という意味ではうまく使うととても効果的です。
要はそのテキストで何を伝えたいのか、何を表現したいのか、どう感じてほしいのか。そういった「目的」をうまく果たせる事。それが一番大切です。クリエイティブにいきましょう!

以上、ちょっと抽象的な話が多くなってしまいましたが、何かの参考になりましたら幸いです。 次回以降は色やカタチ、画像の扱い、アイコン、ユーザビリティについてなど書いてみるつもりです。その他「これについて知りたい」とか、何かリクエストなどあれば、コメントなどでお知らせくださいませ~

2007年4月11日

UNIXデーモンを作ろう
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

20070405コードレビュー posted by (C)フォト蔵

尾藤正人です

先日ウノウの勉強会でUNIXデーモンの作り方についてプレゼンしました。 UNIXのデーモンの仕組みはWebサービスの開発にあたって直接関係の深いトピックではないかもしれませんが、知っておいて損はないと思います。 発表資料と動画を公開しますので、よかったらご覧下さい。 普段は気にしないUNIXデーモンが裏で何をやってるのか、少しでも身近に感じていただければと思います。

発表資料の公開にはちまたで話題のScribdを使ってみました。 プレゼン資料はKeynoteで作ったのですが、PowerPoint形式に変換してアップロードする簡単にできました。

デモ用に実際に動く簡単なデーモンプログラム ccho(シコー) を作成しました。 ccho は前々回の勉強会で行ったGnu Autotoolsで作った bat プログラムを外部ライブラリとして使用しています。 UNIXのプログラムがどのようにして外部ライブラリと連携しているのかという例としてやってみました。

勉強会では実際に作ったプログラムレベルでの解説をしたかったのですが、時間ができずに断念。 プログラムも公開しておくので、もしよかったらご覧になってください。

bat-0.0.2.tar.gz
ccho-0.0.1tar.gz

何かありましたらコメント、トラックバックなりでいろいろ突っ込みいただければと思います。

2007年4月10日

Python開発環境を整えよう
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは!4月から入社したYet Another Sakatoku、酒徳千尋です。今まで同じクラス、同じ職場に別の「酒徳さん」がいるのを経験したことがないので不思議な気分です。

ウノウでは新規サービスの開発を担当することになったのですが、言語やフレームワークの選択は開発者に任されているということなので、PythonとDjangoの組み合わせで開発を始めることにしました。

PythonでのWeb開発は、日本ではまだメジャーではないと思うので、このウノウラボでtipsや、ライブラリ・フレームワークの使い方を紹介できればと思います。

今回は、僕が入社してから最初に行ったPython開発環境のセットアップについて書いてみたいと思います。

virtual-pythonで開発環境をつくる

開発にあたって様々なライブラリをインストールする必要が出てきますが、通常のPythonのホームディレクトリ、例えば、/usr/lib/python2.4/site-packages/にライブラリを追加するには管理者権限が必要になります。また、ライブラリの追加、アップデートによって、他の開発者の環境に影響をあたえる恐れもあります。

こうした懸念を避けるには、virtual-pythonを使って、自分のホームディレクトリに自分専用のPython環境を作ってしまうのがもっとも手軽です。

virtual-python
http://peak.telecommunity.com/dist/virtual-python.py

$ curl -O http://peak.telecommunity.com/dist/virtual-python.py
$ python2.4 virtual-python.py

python2.3, python2.4, python2.5のように複数のバージョンのPythonがインストールされている環境では、使用するバージョンを指定して、virtual-pythonスクリプトを実行します。

実行後は、ホームディレクトリに、~/bin/python, ~/include/python2.4/, ~/lib/python2.4/が作られ、追加ライブラリは~/lib/python2.4/site-packages/にインストールされるようになります。

また、これ以降は、~/bin/pythonを使うようにしましょう。~/binにパスが通っていない場合は、.bashrcなり、.zshrcなりに適宜PATHを設定します。

sitecustomize.pyを設定する

まっさらなPython環境ができたので、つぎのこの環境全体の設定を行います。~/lib/python2.4/site-packagesにsitecustomize.pyというファイルを作成しておくと、Pyhonインタプリタ起動時に自動的に読み込まれ、Python全体の設定を行うことができます。

よくある設定には、デフォルト・エンコーディングの設定があります。

import sys
sys.setdefaultencoding('utf-8')

デフォルト・エンコーディングは好みと必要性に応じて設定してください。

easy_installをインストール

Pythonのライブラリのインストールには、easy_installというツールを使います。これはPHPでいうところのpear, Rubyでいうところのgemに相当します。

まず、このeasy_install自体をインストールする必要があるので、ブートストラップモジュールであるez_setup.pyを以下のURLからダウンロードし、実行します。

ez_setup.py
http://peak.telecommunity.com/dist/ez_setup.py

$ curl -O http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py

あとは、~/bin/easy_installを使って、パッケージの追加を行います。

easy_installの使い方

easy_installの基本的な使い方は、次のようになります。

$ easy_install (パッケージ名)

上記のコマンドを実行するとPython Packge Index, 通称Cheese shopにアクセスして、適切なパッケージを探し、見つかった場合はダウンロード、インストールが始まります。

例えば、noseというパッケージをインストールする場合は次のようになります。

$ easy_install nose

パッケージによっては、zip_safeというフラグを設定してあるため、インストールすると、zip形式でアーカイブされた拡張子eggのファイル、"Python Egg"としてインストールされるものもあります。これを抑止するには-Zオプションを使います。

$ easy_install -Z SQLAlchemy

パッケージ内のソースコードを参照したい場合などには、このオプションを使用してみてください。

ネットワークから直接インストールを行わない場合は、あらかじめtar.gz形式やegg形式でアーカイブされたパッケージをダウンロードしておいて、インストールすることもできます。

$ easy_install migrate-0.2.2.tar.gz

パッケージ管理・応用編

Subversionレポジトリからのインストール

Subversionをインストールしていると、Subversionレポジトリから直接ソースコードをチェックアウトしてパッケージをインストールすることができます。これは、開発版のライブラリを試してみたい時に便利です。

$ eazy_install http://pythonhatenatext.googlecode.com/svn/trunk/

pthを使ってインポート元を指定

 あるライブラリの最新のリビジョンに追随していきた場合もあると思います。その場合は、Subversionやsvkで通常通りチェックアウトを行い、site-package内に、pthファイルを作って、インポートするディレクトリを指定します。

 例えば、常に最新の開発版Djangoを使いたい場合は、次のように行います。

$ svn co http://code.djangoproject.com/svn/django/trunk/ django
$ cd django
$ pwd
/home/chihiro_sakatoku/src/django
$ pwd > ~/lib/python2.4/site-packages/django.pth

 pthファイル内には、Pythonのインクルードパスに含めたいディレクトリを記述します。一つのpthファイルに何行もパスを追加しても構いませんが、通常は、django.pthにはDjangoのパスだけを、pylons.pthにはPylonsのパスだけを、と書くのが分かり易いと思います。

おすすめのライブラリ

 最後にeasy_install経由でインストールできて、かつ「これは入れておけ!」というPythonライブラリを紹介します。

cElementTree
Python2.4以前ならば入れておきましょう。PythonでXMLを扱う場合は、これが標準です。Python2.5ではxml.etreeとして標準ライブラリに組み込まれているので、インストールする必要はありません。
Paste
自分でパッケージを作るときに何かと役に立つユーティリティライブラリです。別の機会に使い方を紹介したいと思います。
nose
テストツールです。Pythonには標準ライブラリとしてdoctest, unittestというテストライブラリがありますが、noseはそれらと併用ができて、かつ、非常にテストも書きやすく、実行しやすいと感じています。
SQLAlchemy
非常に優秀なオブジェクトリレーショナルマッパーです。アプリケーション内で実際に使わないとしても、入れておくと何かと便利です。
Migrate
Ruby on Railsのマイグレーション機能を模範にしたスキーマ管理ツールです。上記のSQLAlcheymyを使用しています。

また、easy_installには他にも様々なオプションがあるので、是非マニュアルも参照してみてください。

EasyInstallのマニュアル(英語)
http://peak.telecommunity.com/DevCenter/EasyInstall

2007年4月 6日

CSSの管理と記述法のコツ
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

前回はYUIの紹介でしたが、今回はCSSの管理と記述法について書きたいと思います。
CSSは、主なHTMLエディタなどでは標準で編集できますが、多人数での開発
やスタイルが多くなってくるほど管理が大変になっていきます。
アプリケーションソフトの管理機能もいいですが、CSSコーディング規約のようなものがあると、より把握が容易になるメリットがあります。

サイト基準設定、ページレイアウト、共通要素、個別スタイルに分ける


構成内容によって、上記のような段階に分けると、意図しない表示等が出たとき、簡単に影響箇所の割り出せます。

基準スタイル(ex: base.css)

font-sizeやfamily,デフォルトのmarginやpaddingのリセット等。
前回のYUIのReset.CSSを使う手もあります。

ページレイアウト(ex: layout.css)

カラム構成やグローバルナビボタン、大まかな画面レイアウト等。
ブログなどでよくある3カラム形式、リキッドレイアウトなど、大まかなレイアウト構成を決めます。

共通要素(class.css)

floatのclearや共通コンテンツのマージン幅など使いまわすもの。
class="hoge foo bar"などのように複数指定できるメリットを生かし、
個々のスタイルは簡素なものにする

個別スタイル(ex: xxx.css(ページ名など))

共通以外に、特に個々のスタイルを指定するとき

レイアウトブロックごとに記述する

サイトブロック構成は html, body, container, header, wrapperなど、ブロック毎に独立させている場合が多いと思います。使いまわせるものは使いまわし、出来るだけ階層に沿った形で記述します。
/** header **/
#header{
...
}
/** wrapper **/
#wrapper{
...
}

インデントを使う

タグのDOM構成と同じように、ブロック内部のスタイル指定をする場合に役に立ちます。 親ノード<ul>の子要素<li>等の場合、以下のようなイメージです。
/** header **/
#header{
width:760px;
}
  #header ul {
  margin: 10px, 0
  }
    #header ul li{
    line-height: 0.9em;
    }

圧縮する

最後に、不要なコメントやインデントを削除して転送量を軽くします。 これは転送量が大きくなった今では、あまりやらないかもしれませんが、スタイルの最適化もしてくれます。
CleanCSS
http://www.cleancss.com/
特に16進数指定のcolorなど、直感的に読み解くのは結構面倒なものなので、私はいつもrgb()で指定しています。
body{
color:rgb(100%, 50%, 0);
color:rgb(255, 128, 0);
font-weight:bold;
}
これらの最適化を行った結果、
body{color:#ff8000;font-weight:700}
こういった16進数への変換や、font-weightの変換も行ってくれます。 しかしながら不可逆な変換なので、必ずバックアップしておきましょう。

リンクに引数をつけて強制キャッシュクリア

例) css/base.css?ver=200704062130 headのmetaでcssを指定するとき、ブラウザキャッシュが残っていてうまく表示されないことがあります。 ユーザーに「更新を強制」するのも難しいので、こちら側で指定してあげるテクです。 キャッシュをクリアしたいCSSのURLの最後に、"?ver=200704062124"など、 更新日をつけておくとURLが変更されたとみなされ、ブラウザが新たにCSS要求します。 CSSに引数をつけても意味がないので無視され、新しくCSSがキャッシュされるという仕組みです。

2007年4月 5日

職場をフリーアドレスにしてみませんか
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちはmatsudaです。

ウノウの職場はフリーアドレス(座席の場所が決まっていない)を採用しています。最近では大手の企業も採用したり、また導入しようと考え中の企業も多いようです。

ただ、これまでの環境もあったり、“何を用意すればできるの?”と疑問をもったりと、なかなかフリーアドレスに踏み切れない会社もあるようですので、今回はウノウの環境(写真)もまじえ、フリーアドレスに最低限必要なものをご紹介します。

●机とイス
机とイス
机とイス posted by (C)フォト蔵
これがないと始まりません。職場のカラーを決める部分でもあるので、カフェっぽくしたいのであれば、それなりに。オフィスっぽくしたいのであればアスクルに。といったセンスが必要になってきます。

●ノートPC
ノートPC
ノートPC posted by (C)フォト蔵
ノートPCのみで仕事をします。デザイナーさんはマシンパワーの大きいデスクトップを利用している場合もあるかと思いますが、フリーアドレスには不向きなので捨ててしまうか、フリーアドレスを実施しないようにするという選択も必要です。

●個人ロッカー
ロッカー
ロッカー posted by (C)フォト蔵
ビバリーヒルズ青春白書なみのロッカーです。業務終了後、ノートPCや個人の資料などはここに片付けます。
個人のロッカーに片付けるため、極力資料を出さないようになる事と、机の上にはゴミがなくなりいつもすっきりしています。

●ティスプレイ
デュアルディスプレイ
デュアルディスプレイ posted by (C)フォト蔵
ノートPCはプロジェクタなど、外部出力可能なものがほとんどだと思います。たくさんのウィンドウを開く人向けにデュアルディスプレイの環境も提供しています。

また、ウノウではペアプログラミングの時間を設けているので、そのときにも大きなディスプレイの画面でお互いが確認する時などに活躍しています。

●ルール
これが重要です。ウノウでは「昨日と同じ場所に座らない」というルールをもうけています。なにもかも自由というわけではありませんが、ルールで会社の個性がでる場合があるので面白いルールがあればいいかもしれませんね。


職場を急にフリーアドレスにするのは難しいという会社がほとんどだと思います。そういう時は一ヶ所そのような場所を用意するか、もしくは動きやすい部署だけでフリーアドレスにしてみてはいかがでしょうか。

メリットがわかれば導入しやすいでしょうし、逆にメリットが出なければフリーアドレスにしないという選択もできます。まずは体験してみてはいかがでしょうか。私も初めは戸惑いましたが、今では快適にフリーアドレス業務を満喫しています。

以上、導入をお考えの方への参考になれば幸いです。
面白いルールや仕組みがありましたら教えてください。

2007年4月 4日

FlashでWiiリモコンのイベントを取得する方法まとめ
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

FlashでWiiリモコンのイベントを取得する方法まとめ

ここでは、任天堂Wii上で、Flashゲームなどを作るのに必須である、Wiiリモコンを操作する方法を紹介します。

ウノウで酒徳率急上昇の真相

こんにちは。酒徳峰章です。これまでの人生で「酒徳」という名字の人は、妻と家族親族だけだったのですが、なんと、先日より、ウノウ(株)に、酒徳千尋さんが入社されました。そこで、酒徳2号(もしくは、クジラ飛行机)と呼んで下さい。酒徳千尋(1号)さん、ともども、今後ともよろしくお願いします。(※私の方が先に入社しているのですが、酒徳1号をかけて勝負したところ負けてしまったので、私が2号となりました。)

Wiiの可能性

先日より、Nintendo Wiiについて研究しております。Wiiを使うと、お茶の間のTVでインターネットができるようになります。これは、とてもすごいことで、Wiiが持つ今後の可能性にワクワクしています。

但し、お試し版のブラウザ上のFlashでは、使えると思っていた「XMLSocket」が使えないという不具合を発見しました。製品版で直っていることを願います。

そんなわけで、今日は、Wiiのインターネットチャンネル上で使える、簡単なチャットを作ったりして研究をしてみました。その成果として、Wiiリモコンを操作する方法を紹介します。

WiiリモコンのイベントをJavaScriptで取る

Wiiリモコンを操作する方法は、既にいくつか研究がなされていまして、下記のサイトが参考になります。

その中で、wii.js は非常に使いやすく、JavaScriptから、以下のように書くだけで、Wiiリモコンのイベントを検出することができます。

var wiimote = new Wiimote();
// イベント
wiimote.handleA = function() {
  alert('Aボタンが押されたよ!');
  return true;
}
// コントローラを登録
wii.addController(wiimote);

WiiリモコンのイベントをFlashで...(失敗)

JavaScriptで簡単にキーイベントを取ることができるので、Flashでも簡単にできるだろうと、いつもの要領で、Keyイベントにイベントを登録して、実行してみるのですが、うまくいきません。

それで、WiiCadeのWiiのFlash用ライブラリを使ってみるものの、うまくいきません。実は、これは、WiiCadeにゲームをアップロードして、WiiCadeの中でないと使えないというものなのです!なんと。(2007年4月現在)

FlashでWiiリモコンのキーイベントを取得する方法を調べてみると、下記の手順でJavaScriptと連携してイベントを取るとうまく行くことが解りました。

  • (1) JavaScriptで onKeyPress(), onKeyDown(), onKeyUp()などのイベントを取る
  • (2) Flashのオブジェクトに設定する
特にポイントとなるのが、JavaScriptで、onKeyPress() を受け取るようにすると、普段は、拡大やブックマークなどに使用される(1)や(2)などの特殊キーを無効にし、ブラウザ側で好きな処理を行うことができました。下記のようなコードで検証しました。

<script type="text/javascript">
function a_press(e) {
  var keyCode = e.which;
  alert("press " + keyCode);
  return false; // ----------- (*1)
}
</script>
<body onKeyPress="return a_press(event)">

ポイントは、(*1)の部分で、ここで false を返さないと、特殊キーを無効にできません。

次に、キーイベントをFlash側に伝える方法ですが、こちらも工夫が必要です。Flash8からは、JavaScriptと相互に通信する ExternalInterface という機能があるのですが、WiiのFlash7では、これが使えません(泣)。

そのため、com.quasimondo.wii.WiiMoteから取得したFlashのコードを見てみると、FlashのStageサイズ変更のイベントを介して、キーイベントを取っています。手順は下記の通りです。

  • (1)1ページに2つのFlashを作る。1つは、ゲーム用のFlash(A)1つは、キーイベントを取得する専用(B)。
  • (2)JavaScriptでキーイベントを取ったら、キーイベント取得用Flash(B)のオブジェクトの「width」と「height」をキーコードの番号やキーの状態に変更する。
  • (3)Stage変更イベントを取ったら、実際のゲーム用のFlashオブジェクトへ、LocalConnectionを使って通知する。

ちょっと複雑ですが、WiiCadeのAPIでもLocalConnectionのコードを見つけましたので、似たような感じで行っているっぽいです。

最後に

WiiでいろいろとFlashを動かして試してみましたが、ちょっと不便な点も分かって来ました。まず、上記のように面倒な手順を踏まないと、キーイベントが取れないこと(マウスは onPress イベントで取れます)。それから、ブラウザ上では、リンクの上にポインタが来ると、ぶるっと震えてクリックできることがわかるのですが、Flashでは、これができません。(裏技で振るわせる方法ないでしょうか?)また、Wiiリモコンのポインタの座標は取れますが、Wiiゲームに必須の傾きや速度のセンサは取得できません。

今後は、これを踏まえて、作る側で工夫して、面白いコンテンツを作っていけたらいいなぁと思います。

※私が現在開発中の、Web開発環境「葵2」でも、Wii上で日本語プログラミングができるようにする予定です。

2007年4月 3日

エラスティック・レイアウトのご紹介
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

yamaokaです。

エラスティック・レイアウトというwebサイトのレイアウト手法をご存知でしょうか?  「エラスティック(elastic)」とは、ゴムのように弾力性がある状態のことです。 言い換えると「伸び縮みするレイアウト」になるでしょうか。

webサイトの代表的なレイアウト手法として、次の2つが挙げられるかと思います。

  • 固定幅レイアウト
  • リキッド・レイアウト

固定幅レイアウト

固定幅レイアウトでは、 コンテンツを格納するボックスの幅を以下のように絶対値で指定します。

div#container {
  width: 800px;
}
固定幅レイアウトの場合、ウィンドウや文字のサイズが変更されてもレイアウトの枠は変わりません。 したがって、ウィンドウを大きくすると表示されるエリアが小さくなってしまったり、 文字のサイズを変更すると外枠が変わらないので読みづらくなってしまったりします。

リキッド・レイアウト

リキッド・レイアウトでは、 コンテンツを格納するボックスの幅を以下のように相対値で指定します。

div#container {
  width: 80%;
}
リキッド・レイアウトの場合、ウィンドウのサイズが変更されるとそれに応じてレイアウトも変化します。 ユーザーの環境に最適化した表示をさせることが可能です。 しかしウィンドウの幅が大きくなった場合に、レイアウトの横幅が伸びてしまい、 1行あたりの文字数が増えてしまった結果、やはり読みづらくなってしまう場合が多いです。

エラスティック・レイアウト

では、エラスティック・レイアウトとはどのようなレイアウト手法なのでしょうか。 CSSを使用したサンプルの宝庫、CSS Zen Gardenエラスティック・レイアウトの実際例があるので見てみましょう。

以下がそのサンプルを文字サイズを変更しつつ閲覧した場合のスクリーンショットです。 上から順に、文字のサイズを小、中、大と変更しています。

エラスティック・レイアウト例(小)
レイアウト例(小) posted by (C)フォト蔵

エラスティック・レイアウト例(中)
レイアウト例(中) posted by (C)フォト蔵

エラスティック・レイアウト例(大)
レイアウト例(大) posted by (C)フォト蔵

一見して気づくのは、それぞれが相似形のようになっている点です。 全体のレイアウトを保ったまま、文字のサイズが変更されているのがわかります。 ちょうどゴムを伸ばしたような感じですね。 どのようにしてこのレイアウトは実現されているのでしょうか。

エラスティック・レイアウトの場合、以下のように文字サイズ単位で最大幅を指定します。

div#container {
  max-width: 70em;
}
このようにすることで、レイアウトの最大幅が文字のサイズと同期するようになります。 したがって、レイアウトがウィンドウの幅に左右されることなく、 幅が広がって1行あたりの文字数が増え、読みづらくなることを防ぐことができます。

また、以下のように最小幅も同時に指定することでより細密なレイアウトを定義することもできます。

div#container {
  max-width: 70em;
  min-width: 60em;
}

IE6以前への対応

CSSのmax-width属性、min-width属性はほとんどのモダンブラウザでサポートされていますが、 残念なことにInternet Explorer 6(以下IE6)以前ではサポートされていません。 そのため、IE6にも対応するためには別の方法をとる必要があります。

IE6でもmax-width属性、min-width属性を動作させるためのJavaScriptライブラリ、 minmax.jsを利用するか、 下記のようにInternet Explorerでだけ動作するexpression属性を使うと エラスティックなレイアウトのようにすることができます。

* html div#container {
  width: expression(document.body.clientWidth < 600 ? "600px" :
    document.body.clientWidth > 800 ? "800px" : "auto");
}

アクセシビリティの問題

エラスティック・レイアウトはいいことづくめのように聞こえますが、もちろん欠点もあります。 レイアウトが文字のサイズに応じて決定されるため、文字のサイズを非常に大きな値にすると、 水平方向のスクロールバーが表示されるようになってしまいます。 そのままでは、弱視の方などにとってのアクセシビリティを欠くことになります。

画像の問題

また、文字のサイズを変更した場合に画像のサイズが変更されないという問題もあります。 swfIRなどのJavaScriptのライブラリを利用すればいいのですが、 画像を拡大した場合には解像度が低下してしまうので注意が必要です。 この問題に関しては、できるだけ影響しない範囲で画像を使うようにするしかありません。

まとめ

エラスティック・レイアウトはリキッド・レイアウトの一形態として捉えることができます。 しかし同時に、最大幅を文字のサイズに応じて決定することで、固定幅レイアウトの長所を取り入れているともいえます。 上記のような問題もありますが、新しいレイアウトの試みとして面白いのではないでしょうか。

参考

最後に、記事を書く上で参考にしたページを挙げておきます。

2007年4月 2日

デコメールを使ってみる
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

harukiです。

1ヶ月ほど前になりますが、社内の勉強会でデコメールについて説明しました。

その際の資料をPDFファイルとしてULしておきます。

http://labs.unoh.net/deco.pdf (183KB)


これだけでは少しさみしいので、もう少し携帯を使ってみたいと思います。


最近の端末では、PDFファイルなどをドキュメントビューアで見ることができる端末があります。


携帯の液晶で、1画面1ページで見ることができる(240x320で倍率25%)ぐらいの、

小さい文字が使用されていないドキュメントは、閲覧も思っているほど、苦になりません。


閲覧する方法としては、

PDFファイルのURLをメールで送って、携帯のブラウザでアクセスするとダウンロードできたり、

PCから携帯へメールで送る際にPDFファイルを添付すると見ることができると思います。


各キャリアでの対応機種などの情報は以下にあります。


・DoCoMo

PDF対応ビューア

http://www.nttdocomo.co.jp/service/imode/content/pdf/index.html


・au

EZドキュメントビューアー

http://www.au.kddi.com/ezweb/service/document_viewer/index.html


・SoftBank

http://mb.softbank.jp/mb/product/3G/

※左下の「携帯電話 機能一覧(PDF)」 → オリジナル機能の項目


また、SoftBankのシャープ製の端末では、SVG Tiny(Scalable Vector Graphics Tiny)形式で表示が可能です。

変換するためのソフトウェアが提供されています。

シャープ - PCドキュメント変換ユーティリティ

http://k-tai.sharp.co.jp/download/tools/pcdc/


携帯でドキュメントを見たことがない方は、一度お試し下さい。

また、携帯で見るのに適した資料があれば、是非教えて下さい。

2007年4月 1日

[April Fool]ウノウラボの名称変更と新サービス開始について
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんばんは、naoya です。
ウノウラボは、やっと無事一周年を迎えて一歳になりました。
さらにその上、本日ウノウ株式会社があのムノウ株式会社に買収されることが発表されました。詳しくは、プレスリリースをご覧ください。

この買収に伴い、ウノウラボという名称ではあわないということで、ウノウラボもムノウラボに装いも新たにリニューアルいたしました。

なお、ムノウラボは、ムノウエンジニアが大小のアウトプットを行う場として情報を配信していきますので、今後も期待してください。

今後ともムノウラボをよろしくお願いいたします。

4月2日追記

エイプリルフールネタです。

[April Fool]「フォト蔵」から学ぶ効率のよいマルチスレッド処理と自社サーバのススメ
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

ムノウラボをご覧の良い子の皆様、こんにちは。

以前フォト蔵サーバをホスティング業者から自社サーバに移民させたことは記載せていただいたと思いますが、今回はフォト蔵サーバ内でどういう処理を、どう効率よく進めているか?を写真を交えながらご紹介したいと思います。

非常に高効率なマルチスレッド処理なので、サーバ構築の際は是非参考にしてみてください。

まず、処理のノウハウに先だちまして、フォト蔵のサーバをホスティング業者から自社サーバに移民させた理由を説明します。

【移民させた理由】

  1. マシンの増員に時間がかかり、フレキシブルに対応できない
  2. フォト蔵のような写真系のサービスの場合、十分広い暗室を確保する必があるが、暗室を確保するにはコストがかかる。
  3. フォト蔵のような写真系サービスの場合、大容量の現像液・現像停止液必要になるが、大容量の現像停止液を搭載したマシンは酢酸臭くなり、ホスティグ業者に迷惑がかかる。

とにかく、自社サーバにしてから処理速度の向上と、高効率なマルチスレッド処理を、低コストで実現する事ができました。そのノウハウを写真を交えながらご案内します。

まずはサーバルームの写真から紹介しましょう。

サーバルーム
サーバルーム posted by (C)モロ蔵

サーバは熱を発するため、サーバルームは常に熱気ムンムン。クーラーでは追いつかないため、扇風機も常時動かしています。サーバ内部はさらに暑いです。時折、サーバから出てしっかりとすずまないと理性がなくなります。温度は常に監視し、緊急時には外へ出す事が処理速度をはやめる秘訣です。

次はサーバ内部の様子です

サーバ内部
サーバ内部 posted by (C)モロ蔵

主に写真の現像、アルバムへ保存する作業をしています。暑さと酢酸の刺激臭と戦いです。流れ作業ではなく、各自が自主的に仕事を探し、処理を行っています。人数分だけマルチスレッド処理が可能になり、非常に効率があがりました。また、写真にこだわりをもったサーバなので、写真のチェックは常に2人がかりです。

最後は動画のエンコード処理、熱暴走手前の状態です。

動画のエンコード処理
動画のエンコード処理 posted by (C)モロ蔵

動画のエンコード中です。動画のエンコードは非常に高負荷な処理のため、CPUの熱が急上昇します。理性がなくなったサーバがいますが、この後外に出してすずませます。常に監視をしておく必要があり、手間がかかりますが、彼らのおかげで処理速度は以前に比べてはるかに向上しました。

今回はサーバ構築にあたってかなりコアな部分を書きました。精神面でもいろいろ工夫をしていますので、それについてはまた後日書きたいと思います。

なお、非常に残念ではありますが本日ウノウ株式会社がムノウ株式会社に買収されたため、今後はムノウラボとして活動していきます。

4月2日追記

エイプリルフールネタです。

[April Fool]プチプチAPI
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

Keitaです。

新規サービスのプチプチAPIを公開いたしました。

プチプチAPI

弊社ではかねてより、Webのバックエンドとして、現実社会の仕組みを動作させる研究を行っておりその結実ともいえるのが本サービスとなります。本サービスを使うことにより、ムノウ株式会社のスタッフをプチプチに集中させ、ムノウ株式会社に対してDoSを行うことが可能となります。

エアパッキンの粒をつぶすことは、万国共通であり。
たぶん、ノーベル賞(癒し系部門)も目じゃないと思います。

これで、とりあえず、国内はもとより、世界中で、暇をもてあましている人がぷちぷちを、家にいながらにしてつぶすことができます。

4月2日追記

エイプリルフールネタです。