ATOK Padでひどい目にあった

以前、iPad mini+ポケモンキーボードを絶賛 したけど、今日のミーティングではひどい目にあってしまった。

何人かの人にインタビューをしている時のメモ書きとしてiPad mini+ATOK Pad を使って書いていたけど、

・初回:途中でいきなり固まった。一度HOMEに戻ってATOK Padを起動すると、書いた内容がさっぱり消えてしまい編集前の状態に戻ってしまっていた。

・二回目:無事に記入し終わってからATOK Padの文書一覧に戻り、また文書を表示すると、これまた途中まで書いた内容に戻ってしまっていた。

発生原因がわからないのでどうやれば再現するかどうかはわからないけど、自分用のメモ書きのようなものならともかく、他人が絡むミーティングの時には危なくて使えない。

問題点の一つとしては、「保存」という機能が無いからだと思う。人によってまちまちだとは思うけど、自分は結構頻繁、それこそ指がちょっと止まったタイミングで必ず保存するような癖がある。

保存という作業をすることで、少なくともそのタイミングまでの文書の内容は固定されるけれど、ATOK Padには保存機能が無いため、そこまでに書いた内容(が保存されること)が保証されない。結果、どこまでの内容の文書が保存されるのかさっぱりわからない。挙句の果てに内容が巻き戻ってしまう。これはきつい。

最初に消えた時に、ALT+Sを押すことで保存されるのかと思い結構頻繁にやってたけど、このザマだ。全然保存されない。これだとビジネスではまったく使えない。漢字の変換などで気に入ったんだけど、別のevernote連携のメモ帳を探さないといけないな。

2012/12/01追記:ちょっと探してみたら、iText Pad というものが評判が良かったので買ってみた。ローカル環境に対して「保存」という機能もあるし、Evernoteとの連携もできる。「圏外の時にはローカルに保存しておいてオンラインになったら差分を同期する」という最も希望していた機能は残念ながらなかったけど、

  • evernoteのファイルをオープン
  • 圏外での編集時はローカルに保存
  • オンラインになったら手動でevernoteに保存

という運用で逃げられるというのがわかった。これで何とか次回のミーティングの時も iPad mini を使えそう。


squid が spam の踏み台になった

一昔前は、グローバルIPを持った回線やサーバを買うコストの問題で、専有サーバを持つのは一苦労だった。しかし最近では、特にVPSサーバが普及するようになってからは、レンタルサーバではなく、専有のサーバを借りることもすっかり珍しくなくなってきた。

VPSによりサーバを持つことのコストが劇的に下がったため、本来であったらサーバ運用も出来ない、そもそも運用で必要なことを理解していないレベルの人が持つようになってしまったため、知らない内に犯罪に加担してしまっている事例が増えているように感じる。

先日知り合いから、「あなたのVPSサーバがspam送信の踏み台になっている。一週間以内に何とかしないとサーバ落とすよ」とVPS運営会社から言われたので助けて欲しい、という連絡があった。昔はクラックされたサーバの調査や再設定などを良くやっていたけど、最近は久しく見ていない。ちょっとワクワクしながらサーバにログインして状況を確認してみる。

spamの踏み台になっているということなので、まずは/var/log/maillog を調べてみたけど、特に不審な点は見あたらなかった。踏み台になっているという連絡があった以上、踏み台になっていること自体は間違いないとは思うけど、状況が良くわからない。

いったんその IPアドレスを RBL で引いてみると・・・出るわ出るわ。あちこちの RBL に登録されまくっていた。これで、少なくとも踏み台になっていた証拠はつかめた。ps で見ても特に不振なプロセスは動いていな・・・! なぜか squid が動いている。

squid のアクセスログを見てみると、もの凄いサイズ。次に netstat してみると、外部の SMTP サーバへのコネクションがある。squid の設定を確認するとアクセス制限がまったくかかっておらず、いわゆる「オープンプロキシ」になっていた。これが犯人だ!

tcp 0 0 192.168.1.1:46708 199.236.32.56:25 ESTABLISHED 607/squid

実際にやったことはないけど、確かに接続先を 25 にすれば、spam を送ることも原理的に可能だ。知り合いに聞いてみると、「過去に実験用として squid を立ち上げた記憶がある。ただ、実験が終わったあとには確実に停止したので、再度起動している理由がわからない」らしかった。

とにかく、squid の停止とアンインストールをして、RBL に delist の申請を行った。その後、特に連絡もないし RBL からも削除されたようなので、事態は収束したようだ。その時はなぜ squid が起動していたのか不明だったけど、その後どうやら、VPS の母艦サーバがハードウェア障害で落ちたため、ゲスト OS にもリブートがかかったらしい。squid が自動起動になっていたので、その時に起動してしまっていた。運用会社から障害報告の連絡がなかったので、再起動したことにまったく思い当たらなかったと。

VPSになってサーバを持つ敷居が下がったのは素晴らしいことだけど、あまり運用に関する知識が無い層の人達も、VPSを持つようになってきてしまった。Heroku や Google App Engine あるいは Windows Azure のような PaaS は、オートスケールなど、どちらかというとプロユースを想定したものになっている。従来であればレンタルサーバを使っていた層を吸収してくれる PaaS は(PaaS に当たらない物を勝手に PaaS と呼んでいる場合を除いて)今の所は思い当たらない。

「安価で使いたいときだけ起動して使う」といったカジュアル利用を目的とした PaaS サービスが出てこないだろうか。それが他社との差別化に繋がるかどうかはわからないけど、使わないときには落とすという習慣により、結果として知らないうちに加害者になっているという状況は改善するように思える。というか、踏み台になってうちに spam を送りまくるサーバは全部落ちて欲しい。


受注者にとって「やりづらい」発注者になるには

社内の自分の目が届いていなかった部署で、ある開発会社に対して明らかに不要な費用を支払っている例があった。横柄になれとか圧迫しろという意味ではなく、騙しづらいという意味で、受注者にとってやりづらい発注者になる方法を考えてみる。

知識がないと騙される

業者にいいようにされてしまう場合、往々にして自分達に適正な知識が無い場合が多い。業者から出された金額や工数、あるいはその作業内容が妥当なものかどうかを自身で判断することができないため、そのまま丸呑みするしか無くなってしまう。最近あったケースだと、問題集アプリを作ってもらった業者に、別の問題を差し替えるだけの作業にも関わらず、初期開発の時と同じぐらいの費用を請求されていたということがあった。これは直前に知ることが出来たのでストップかけられたけど、危ないところだった。

自分でちょっとしたものなら開発できるぐらいまで知識を身につけておけば、勘所を理解できるようにはなると思う。ただ、いま騙されてしまうレベルの人達にそれを求めるのはちょっと難しい。

受注側の事情

発注者側の理不尽な依頼や、締め切り直前の急な仕様変更などに振り回された経験のない受注者は居ないと思う。明らかに騙しに来ている場合はともかく、誠実にやろうとしている受注者であっても、可能な限りバッファをいっぱい取りたいと考えてしまう。往々にして発注者側の怠慢や横柄さを起因とした結果でもあるため、なかなか業者だけを責めるのは難しい。

「比較」は知識の代替になる

まったく未知の領域の事柄で、自分自身に知識が全くない状況にも関わらずその評価をしなければならない場合には、同種の物を「比較」することで知識不足を補うことが出来る。複数の業者に相見積もりをすることで、見積もりのケースにおいて「比較」をすることが可能になる。

複数の見積もりを比較することで、作業項目やその単価がわかる。比較をすることで、突出したものや過剰な項目、あるいは不足しているのが何かを把握することができる。不明なことがある場合には、全ての会社に対して同じ疑問をすることで、騙されずに「正解」を知ることが可能だ。つまり、たとえ自身に知識が不足していたとしても、相見積もり先の企業の知見を間接的に借りられる。

相見積もりをされた場合、受注者側は自分達と同様の知識・スキルを持った同業者との戦いになるため、かなり「やりづらく」なる。さらに、相見積もりを取っているということを事前に言うことで、「やりづらい」効果は増していく。


「オフショア開発」と「コンテキストをあわせる」

コンテキスト(コンテクストとも言う)は、文脈や文章などの前後関係、事件・出来事の事情や背後関係、と定義されている。わりと範囲の広い言葉で、自分自身は共通認識や文化が異なるときに「コンテキストが違うのでウンヌン」と言う使い方をすることが多い。

【文脈/コンテクスト】 に、コンテキストとは何かを理解するのに、とてもわかりやすい説明があった。

 <コンテクストのすり合わせ>とは特に、演劇において使われている用語です。
例えば、劇のとあるシーン。役者Aは自分の演じるキャラクターが、そのシーンで怒っているのだと思った。しかし役者Bは、そのシーンで役者Aの演じるキャラクターは、悲しんでいるものだと考えてしまった。
このまま舞台練習を開始しても、役者AとB、ふたりの演技は食い違ったものとなってしまいます。ですから事前に、脚本その他演劇全般に対する解釈を、皆の間で一致させる作業が必要となってきます。
解釈、すなわちコンテクストを共有・一致させる。このような作業が、<コンテスクとのすり合わせ>なのです。

日本は高コンテキスト文化と言われる。最近はそうでもないのかもしれないけど、おおよその価値観が人や地域によって大きく異なることは少なく、「空気を読む」ことで、お互いが求めてるものを理解することができる。一方、アメリカなど多くの人種が入り交じっているような国は低コンテキスト文化とされている。そもそも読むべき空気が無く、価値観もまちまち。両者の差異は本の厚さでも比較することができる。低コンテキスト分化の国では、経緯や背景、心理状況などを事細かに記載することで、まずコンテキストのすり合わせから入る必要がある。

同じような職種の人のように、お互いに同一のコンテキストを持っている同士では、非常に楽にコミュニケーションできる。お互いにお互いの空気を読めるため、それをわざわざ伝えなくてもその背景が共有できてしまう。これはいっけん良いことのように思えるけど、この「コンテキストをあわせる」という能力がまったく育たなくなってしまう。

オフショア開発の課題の一つとして、「日本側の要件・要求が正しく伝わらない」ということがある。これはこの高コンテキスト文化でのコミュニケーションが主な原因だと思う。異文化間でコンテキストをあわすことは難しい。いや、おそらく無理だ。欲しい物、つまり品質目標も含めて「要件をすべて書き切る」必要がある。

面白いのは、「いい感じによろしく」と、他人にある程度丸投げてやってもらっていた人にオフショア開発向けの要件定義書を書かせてみると、いくら頑張っても「要件を書き切る」ことができない。しょっちゅう、望んでいたものと違うものが出来上がってくる。書かせてみることで、内容についてどれぐらい網羅的に考えているかの判定に使うことができる。誤解されがちだけど、頑張っても「伝わらない」のはコミュニケーションスキルの問題ではない。

なるべく、コンテキストの共通点が少ない人と話すことで、このあたりの能力を伸ばすことに繋がってくる。例えば同じ会社の中なら「まったく技術の分からないセールス」と「技術者」のように、専門用語が通用しない相手がいい。技術がわからない人に対して、技術の話をわかりやすく話すという経験を積みまくることで、このあたりのスキルがすごく身についた。


SSL証明書の期限切れを事前にチェック

SSL 証明書の期限を、期限切れの前に事前にチェックするようなスクリプトが必要になったので、ちょっと調べてみたところ nagios の check_http プラグインを直接呼んだらニーズを満たすことがわかりました。

nagios をダウンロードして configure –with-openssl=/usr/bin/openssl ; make して出来上がった check_htttp を利用して、こんなスクリプトでチェックするようにしました。証明書の期限が60日を切ったらエラーを返します。

expireDays=60
tmpfile=/tmp/sslcheck.tmp

for url in site1.example.com site2.example.jp
do
	/usr/local/sbin/check_http -H $url -C $expireDays > $tmpfile
	if [ $? -ne 0 ]; then
	  	echo "SSL will soon expired: $url"
	  	exit 9
	fi;
done

rm $tmpfile
exit 0

UNIX Timeを人間がわかる形式に変更するコマンド

時々ですが、Unix Time を人間が見てわかるような形式に変換したくなる時があります。そういう時は今までは Ruby か Python で適当なワンライナーを書いてすませていたんですが、実は date コマンド一発で相互変換できちゃうのを知りました。

例えば、2013/7/13 21:00をUnix Timeに変換する場合

$ date +%s --date "2013-07-13 21:00"
1373716800

逆に Unix Time から変換する場合

date --date @1373716800
2013年 7月 13日 土曜日 21:00:00 JST

あまりに手軽すぎて、今まで何をやってたんだろう、と思っちゃいました。