2016年2月16日火曜日

呼出先WinアプリでSQLite の「unable to open database file」が出たら

自分用メモ。

普通はSQLiteのDBファイル、およびDBファイルがあるディレクトリに書き込み権限がない場合がほとんどだと思いますが、以下のような特殊な状況の場合の対応策。

シチュエーション

DBにSQLiteを使っているWindowsアプリケーション(例:SomeApp.exe)があって、それを別のWindowsアプリ(例:MyApp.exe)から引数2つを付けて呼び出さないといけない。
DBファイル(例:SomeApp.db)は、呼出先のEXEと同じ階層にある。

現象

MyApp.exeのコード(C#)から、SomeApp.exeをこんな感じで起動させようとする。引数は、「user001」と「C:\\work」の2つ。
[C#]
System.Diagnostics.Process p =
 System.Diagnostics.Process.Start(
  "C:\\SomeApp\\SomeApps.exe",
  "user001 C:\\work");
そうすると、件のエラー「unable to open database file」が出てしまう。

原因

SomeApp.exeが、「カレントディレクトリにあるDBファイル(SomeApp.db)を開く」という処理をしているため、別アプリから起動すると、別アプリ自体があるディレクトリをカレントディレクトリとして認識してしまうため、当然「カレントにDBファイルはないよ」となっている。まぁ、単純な話。

対応

以下の2つの手順を踏んで、無理やりSomeApp.exeがある場所がカレントになるようにSomeApp.exeを実行してあげる。

(1)SomeApp.exeの場所に移動してSomeApp.exeを起動するbatファイルを作る。
(2)呼出元のMyApp.exeからは、上記1のbatファイルをキックする。

まず、(1)のbatファイルはこんな感じ。
[kick.bat]
SomeApp.exeがあるフォルダに移動
cd "C:\\SomeApp" batファイル起動時の引数2つをそのまま渡す
SomeApp.exe %1 %2

次に、(2)の呼出方をこう変える。
[C#]
System.Diagnostics.Process p =
 System.Diagnostics.Process.Start(
  "C:\\Path\\to\\kick.bat",
  "user001 C:\\work");
以上、こんな状況、他にあるのか知らないけど備忘録として。

2015年8月15日土曜日

「テストはこちらでしますので」の無意味

システム開発の現場において、ユーザーさんが追加機能の実装をねじ込みでお願いしたい時に使われる定型句に、
「テストはこちら(=ユーザー自身)でしますので、何とかお願いできませんか」
という便利な言葉があります。

わかりますよ。ユーザーさんの思いとしては、
「とりあえず(自分達では出来ない)実装(=設計とプログラミング)さえやってもらえれば、テストは自分達で出来るので、その分、開発工数も工期も少なくなりますよね、なので、元の計画をあまり変更せずに対応できちゃいますよね」
ということですよね。

でもね、いざバグとか何かあった時に対応するのは結局開発者なわけで、となると、開発者としては何もないようにしてユーザーさんに提供しないといけないわけです。
そうすると結局、作ったものを一旦こちらでテストしないといけないわけで、そっちでやろうがやるまいが、こっちはいつも通りテストしないといけないから工数減ったりしないです

なのでねじ込みでお願いしたいときは、そんな小細工せずにエクレアの差し入れでも持ってきてください(違

結論

本番直前とかで爆弾級のバグが発生して、元を辿ると単体テスト不足だった...というのは笑えないけどよくある「開発あるある」なので、テストはこちらでやらせてください。 そして、そちらでもやってください。

2015年4月1日水曜日

【誰得】Excelで画面設計書作る人向け。丸番号を生成するExcelマクロ。


昔から「日本のシステム屋は、Excelで設計書を作るんだぜ。まったくイカれてるぜ!」と言われておりますが、Excelがお絵描きツールだと思っているボクにとっては至極自然な感覚でございます。すいません。

さて、今日はこのクレイジーな文化をさらに助長するツールを作ったので、共有します。
例によって、世の中の3人ぐらいにビビっとくれば、本望です。

これは何ですか

画面設計書で、こういうのを求められる場合ってあるじゃないですか。画面のキャプチャとかを貼って、項目1つ1つに番号振って、その項目一覧表を別紙に書いて…みたいな。

(出典)

この番号振りが、意外と地味に堪える作業なわけですよ。
なんかもう、地味に面倒で時間がかかる。
しかもまったく生産的な作業じゃない。
ならば一気に生成できるようにしようじゃないか!

というものです。

使い方

ここからダウンロードしたら、ダブルクリックで起動して、マクロを有効にしてください。
まず最初に、色を決めます。

「色選択」を押しましょう。


カラーパレットで、好きな色を選べます。親切ですね。


選択した色がA1のセルに反映されたら、もう半分ぐらいできたようなもんです。


「丸番号を作る」というボタンを押すと、開始番号と終了番号を入れるダイアログが出ます。
素直に「1」から作りたければ開始に「1」、途中から作りたければ「5」とか入れます。
終了番号は当然、開始番号より大きい数字で。


ダイアログの、なんか「■■■」みたいなボタンを押したら、あら不思議。
ドバっと生成されます。

ちなみに、ひたすら右に配置していくので、調子に乗って100個とか作ると「BD」列ぐらいまで行っちゃってめんどくさい。

でも、手で作成するよりは、まぁマシでしょ。っていう。
ロジックで「何個まで作ったら折り返し」とかしたらいいんだけど、めんどくさいし。
はぁ?なんでそこまでしなきゃいけないの?っていう逆ギレ。

免責事項

まぁ使う人もそういないだろうから、「マクロの記録」で作った感じのままアップしてます。気の利いた機能とかエラーチェックとか、ほぼありません。
ご利用は自己責任でお願いします(まぁ、特別なにか悪さをすることはありませんが)。
心配な方は、Alt + F11でソース見たらいいし。
このExcelマクロを使ったせいでExcelがちょくちょく「応答なし」になる、そもそもWindowsは使いにくい、iPhoneの電池の減りが早い、今日のお昼はおにぎり一個しか食えなかった、などの苦情は一切受け付けません。

ダウンロード

こちらです。
http://www.boldweb.jp/apps/marumacro.zip

※万が一気に入っても、Facebookで「いいね」とかしなくていいですよ!

2015年3月17日火曜日

【誰得】テスト用MACアドレス(っぽいもの)を生成するもの

とあるシステムのテストで、MACアドレスをやたらと入力しないといけない事があったんだけど、テストとはいえ意外とランダムにMACアドレス風の文字列を作るのが面倒だったので、ランダムにMACアドレス風のものを生成するものを作りました。

この広い世界で3人ぐらいに「こういうの欲しかった!」って言ってもらえれば、本望です。

■MACアドレスっぽいものを生成する
http://www.boldweb.jp/genmac/

2013年10月23日水曜日

【営業】大切なことはすべてIR情報が教えてくれた

友人(いや、向こうからしたらまだ「知人」かもしれないがボクは友人だと思い込んでいる)が、営業フェーズや案件を固めていく際にとても役に立つノウハウをブログに書いていました。

2つの愛を守るために立ち上がった、ディレクターの仕事効率化②

で、ボクは最近こっちのブログはかなり放置気味で、あっちのブログでクダラナイことを書くことに命を燃やしているんですけど、そうか、ボクもいい歳だし、ちゃんとしたこと書かないといけないなぁ、と急に恥ずかしくなってきたので、当たり前だと思ってたけどこれってどう?的な営業ノウハウを書いてみようかな、と思います(割にタイトル釣り気味)。

事前の情報収集に命をかける

これから書くのは、例えば問合せを受けて、あるいは紹介されて初めて先方の企業にお話を伺いに行く場合を想定しています。
大枠の流れは、先述の友人(知人じゃなくて友人だもんね)のブログに書いてあることを実践すれば良いので、ここではその中の「情報収集」について少し掘り下げてみようと思います。

さて、初めて問合せを受けてその企業に訪問する前、当然その企業のことや業界全体のこと、競合のことは調べていくかと思います。ただ、まだ案件の影や形もハッキリしない時、事前の情報収集って何をすればいいのでしょうか

ボクがよくやっていたのは、先方のホームページ、特にIR情報とトップメッセージをくまなくチェックする、という方法です。

上場企業であれば必ずHPでIR情報を出してくれていますね。IR情報のページで、決算説明会の資料や、短信資料なんかを開いてみると、
  • 中期経営目標がこれなんですが、
  • この事業は去年から順調ですけど、この事業は去年より悪くて、
  • 原因は販管費が嵩んでしまったからでして、
  • ですからそこを重点的に改善しまして
  • さらに新規需要が見込まれるこの事業にも積極的に力を入れていきまして
  • 全体として目標に向けて順調に推移しております
的なことが暴露されていますね。

つまりここで「販管費を削減するようなソリューションに興味あるかもな」とか、「新事業についてこの辺の関連情報を持って行くとウケるかなぁ」などと仮説を立てることが出来ます。

さらに同業他社のものと比較して見たりすると、その企業の特色がより浮いて出てくるので(というか比較して初めてわかる)、とにかく多くの企業のIR情報を見てアレコレ考えてみると良いと思います。

※決算書読むのが苦手だ…という方は、簡単にでも読めるようになるとより具体的にその企業が抱える課題が見えてくるので、ぜひ学習されることをお勧めします。
ど素人が読める決算書の本(Amazonへ)
あとは上場企業の場合だと企業価値検索サービス Ullet(ユーレット)とかが便利ですね。


そして2つ目のトップメッセージ 未上場企業でIR情報が載っていなくても、経営者のメッセージというのは大抵掲載されていますね。
たとえばそのメッセージの中に「ホニャララへ挑戦し」とか「ナンチャラの改革を実行し」とか書いてあれば、それは即ち「ホニャララという状態に早くなりたい」「ウチの課題はナンチャラ」と言ってるようなもんですから、それをベースに仮設を立てていけば良いわけです。


事前の情報収集に命をかけた感をふんわりと出す

さて、そうやって集めた情報で仮説も立てて、いざ先方の会社へ。俺の情報収集力と仮説力を見せつけてやるぜ!と意気込んで行っても、残念ながら大抵ハズします。俺のあの1時間は何だったの?というぐらいにハズすことなんてザラにあります。

そりゃ先方は毎日その課題や目標のことを考えているので、話はもっと先に進んでいて当たり前ですよね。

ただ、例え仮説が全部ハズレても、そうやって事前に情報を収集しているだけである程度業界知識が(一夜漬けレベルであっても)頭に入りますので、初めてのお客さんと話す場合もスムーズになりますし、専門用語などの不明点が少なくなっている分、無駄な質問(先方にとっては常識的なこと)をすることもなくなりヒアリング精度も上がります。

そして何より、「事前にガッツリ調べてきた感」をそこはかとなく出せると、先方のテンションも上がってきます

ポイントは、そこはかとなく出すことで、どういうことかと言うと、先方のお話を聞きながら相槌を打つ際に「(ライバルの)○○商事さんも確かそうでしたよね」と挟んでみたり、「ホニャララっていうのを実践されてるお客様がいらしたんですけど」など、相手の頭の中にあるであろうキーワードを差し込みつつ話す。
そうするだけで、先方は「あ、しっかり調べてきてるな」と感じ取ってくれますし、もう少し突っ込んだ情報を出してくれるかもしれません。

間違ってもやってはいけないのは、自分で立てた仮説を話しまくること。これはただの自己満足なので、「せっかく調べたし考えたんだから言いたい!」という気持ちをグッとこらえて、キーワードを差し込みながら先方にお話してもらう。そうするといつの間にか「あの人は分かってるな」なんて思ってもらえて、営業で一番大事な「信頼感」も生まれやすくなります。



以上、長々と当たり前のことを書いた上に、内容がタイトルからどんどん逸れていって結局別のことを書いたような気がしますが、また気が向いたら(もっと長々と)書いてみようと思います。

あとがき

営業はよく、恋愛というか、女性を口説くのと同じ、と例えられたりしますね。接触頻度を少し高めて存在感を示す、とか、相手の期待してそうなことを事前に準備しておく、とか、人の心を捉える、という意味では共通的なノウハウが多いですね(たぶんね)。
でも、今回の「初めて訪問する前の情報収集」ノウハウに関しては、実践するとただの気持ち悪いストーカーまがいになるので、絶対に恋愛には応用しないでくださいね。

ただ、友人(間違いない)のブログにもあるように、やはり必要なのは「愛」ですよね。声をかけてきてくれた先方を愛し、感謝の気持ちで向かい合えば、良い関係が築ける。はず。

2013年10月18日金曜日

Amazon EC2のインスタンスに接続できない

クライアントの担当者さんから「(Amazon EC2で)運用中のサイトにアクセス出来ない、落ちてるのでは…」と連絡が来た。
試しにサイトにアクセスしてもリモートデスクトップで繋ごうとしてもエラーになるばかり。
EC2の管理画面でインスタンスの状態(Status)を見ても、完全に正常稼働中で、落ちているどころか何のトラブルも発生していないように見える。

これは厄介かも…と思いながら Elastic IPsの設定を見てみると、見事にIPアドレスとインスタンスの紐付けが外れてました…。 そりゃアクセスできるわけがない。

インスタンスを再起動するとElastic IPの設定は外れちゃうってことだから(確かに「起動中のインスタンスに割り当てる」仕組みだから、そりゃそうだ)気を付けよう!

ってことで、紐付け再設定して事なきを得ました。
#以下、自分用メモ。

EC2管理コンソールで「Elastic IPs」を選択。

該当のIPアドレスで右クリックして「Assosiate Adderss」を選択。

割当先のインスタンスを選んで「Assosiate」押す。
以上で設定完了。しばらくしたらアクセス!

2013年5月29日水曜日

【活版印刷】で新しい名刺を作りました

今まで名刺は自宅プリンターで印刷したものを使っていたんだけど、きちんとした名刺を作りたいなぁ、とずっと思ってました。
そんな折、高校の同級生で小値賀島の広報や島おこしのような仕事をしている友人が仕事で東京に来た時に、活版印刷で作られた自身の名刺を見せてくれました。

質感やフォントなど、活版印刷でしか出せない独特の風合いがとても新鮮ですぐ気に入ったので、その友人に尋ねてみると、「三代続いている、島で唯一の活版印刷屋さんがあって、今はお父さんである三代目と、四代目見習いとして娘さんが頑張ってる」とのこと。
さらに聞くと、娘さんは小値賀島から上京して勤めていたものの、この小値賀の活版印刷を残して行きたい!と思い立ち、親(つまり三代目)の反対を押し切って島に戻り頑張っている、と。

そんな話を聞くと余計に(応援の意味も込めて)欲しくなるじゃないか!

名刺が届いた

というわけで、その友人に紹介してもらったのが「晋弘舎活版印刷所」さん(リンクはFacebookページ)。四代目見習いの娘さんからメールが届き、早速デザイン含めて発注(ちなみに名刺をいわゆる「業者さん」に発注するのは初めて。記念すべき第一版であります)。

メールでやり取りしながら最終的にデザイン案を2案いただき、散々悩んで決定し、出来上がって届いたのが・・・これだ!


う~ん、実際に触れてみると、想像していた以上に・・・イイ!!
画像だと全然わからないと思いますが、厚手の紙で表面に少しボコボコとした加工が施してあり、文字の部分が凹んでいます。そして一枚ずつ刷るので、それぞれ微妙に異なる表情があります。それが何だか普段触れているデジタルなものには無い感触で、琴線に触れるものがあるんですよね~。

届いたのは、名刺だけじゃない

そんな、非常に満足度の高い名刺を眺めながら、届いた郵パックの袋の中を覗くと、綺麗な字で書かれたお手紙も入っていました!

なんとボクの名字「柏」は、昭和初期に二代目であるお祖父さんが使われていたものなんだとか。どうりで、「柏」の文字だけ少し様子が違って、名刺にも良い表情が出ています。

そしてさらに!
実際に使った(作っていただいた)版の写真!

これは、何かわからないけど、コーフンする!(笑)
「こうやって一文字ずつ組んでいくのかぁ…」と、工場見学的知的興奮を覚えると共に、まさにオーダーメイドを目の当たりにして、何だかやたらと満足度が高いのです(笑)。

そして、四代目見習いに会ってきた

そんな今回作っていただいた名刺。制作をお願いすることになってメールのやり取りを始めたのが2月末。その後、晋弘舎さんもかなり忙しかったり、ボクも5月頭に引越しがあってその住所にしてもらうために待ってもらったりして、5月半ばに届きました。
その間、場所も相当離れているだけに当然一度もお会いすることが出来なかったんですが、たまたま先日、調布で開催された「第3回東京蚤の市」に出展するために東京に来られる、ということだったので、これはチャンスとばかりに行ってお会いしてきました。
四代目見習いの娘さん、とっても明るく気さくで、活版印刷への情熱と小値賀への愛が溢れている素敵なお嬢さんでした。
(ちょうど写真を撮るタイミングで猫がっ・・・!)


ブースには昔使われていた版や、小値賀の海で拾った瓶に入れて持ってきた赤い砂浜の砂(本当に赤かった)など、面白いものがたくさん飾られていて、もちろんポストカードやメモ帳、一筆箋など、味わい深い活版印刷グッズが販売されていたので、いくつかゲットしました。

(ちなみに、「東京蚤の市」自体も非常に楽しいイベントで、掘り出し物を探しに行く価値はあります。人はかなり多いですが…)

さて、そんなわけで長々と活版印刷名刺の魅力と魔力について語ってきましたが、とりあえずワタクシ、名刺がステキになってかなりウキウキしておりますので、既にお渡しした方にもまたあらためてどんどん渡して自慢していきますので、皆さん覚悟してください(笑)。

2013年5月3日金曜日

WindowsサーバーのApacheのSSLが起動しなくてヒヤリ

WindowsサーバーにApacheで構築したWEBサーバーをSSL化することになり、余裕ぶって作業してたらSSLスタートが出来なくてハマってしまったのでメモ。

Apacheが起動に失敗する

秘密鍵ファイル、証明書ファイル、中間CAファイルを保存し、「httpd.conf」でIncludeした「httpd-ssl.conf」に正確なフルパスを記述しているけど、Apacheを起動しようとするとエラーになる。
logs/error.log を開くとこんなエラーメッセージ。
[error] Unable to configure RSA server private key
[error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
秘密鍵の値が合ってない…とか、マジか。

で、調べる。
まずは秘密鍵。
D:\Apache2.2\conf>openssl rsa -text -noout -in server.key
Private-Key: (2048 bit)
modulus:
  00:9c:~ホニャララ~

次に、証明書。
D:\Apache2.2\conf>openssl x509 -text -noout -in server.crt
Certificate:   Public-Key: (2048 bit)
  modulus:
    00:a6:~ホニャララ~

もう、modulusの値がいきなり全然違う。
で、あらためて各ファイルの中身をサクラエディタ確認すると…。
[秘密鍵ファイル]


[証明書ファイル]


分かりますかね。
そう、改行コード。証明書ファイルの方の改行コードが「CR+LF」になってやんの。(ついでに中間CAファイルも)

というわけで、証明書ファイルの改行コードをサクラエディタでLFに指定しなおして上書き保存、再度Apacheを起動させると、無事に立ち上がってくれました。Windows使ってる時点ですぐ疑うべきところなんですけどね。

やっぱりApache使うならサーバーはLinuxですな…。

2013年4月18日木曜日

【C言語】free関数で落ちる

ちょっとハマりかけたのでメモ。

free()関数の実行で落ちる

とあるプログラムで、論理エラー終了した際に実行する関数内に、プログラム内で malloc した、あるいはする可能性のある領域を漏れなく解放する処理があって、そこの free の処理で落ちた。サンプルでソースを書くとこんな感じ。
→そんなことより答えへ急ぐ

--------------------ココカラ---------------------
#include <stdio.h> #include <memory.h> /*--------定数----------*/ #define COLUMN_MAX_LEN 50 /*--------------------------------*/ /* うっかりグローバル変数宣言 */ /*--------------------------------*/ char *p1; char *p2; /**********************************/ /* 初期処理 */ /**********************************/ int init(){ // いろいろと初期処理する // 初期化とかもする p1 = NULL; return(0); } /**********************************/ /* 終了処理 */ /**********************************/ void error_end(int code, char* msg){ // いろいろとログ吐いたりなんだかんだする // 使用していた領域解放 if(p1 != NULL){ free(p1); } if(p2 != NULL){ free(p2); } return(code); } /**********************************/ /* main */ /**********************************/ int main(){ // 初期処理 if(!init()){ // 初期処理でなんかエラー発生 return error_end(9, "init") } // 領域確保 p1 = malloc(sizeof(COLUMN_MAX_LEN)); if(p1 == NULL){ return error_end(1, "p1:alloc"); } p2 = malloc(sizeof(COLUMN_MAX_LEN)); if(p2 == NULL){ return error_end(2, "p2:alloc"); } // 主処理とかが続く hoge(); piyo(); // 終了 exit(0);
--------------------ココマデ---------------------
(ちなみにソースはこれでHTML化。一応、宣伝)
コンパイルとかしてなくて殴り書いたからテキトーだけど、とりあえずこれ、最初のinit()で何かしらエラーが起こって error_end() に飛ぶと、free()で落ちます。 なぜ落ちるか、答え。


原因はポインタ変数の初期化漏れ

当たり前っちゃ当たり前だけど、free関数はmallocした領域に対して実行しないと落ちる。なので、error_end() で free()する前に、「ポインタ変数にアドレス値が割り当てられてるか」ってのをチェック(p1 != NULL )してるんだけど、p1 についてはきちんと init() で初期化しているから良いとして、 p2 については初期化漏れ。

C言語は、その他多くの素敵な言語と違って、宣言と同時に初期化なんてしてくれないので、「char *p1;」とした段階で、p1には何か変なゴミが入っている。だから、init()でエラーが発生してerror_end()を実行する段階で、p2はアドレス値ではない何かが入っているので NULL じゃない。
NULLじゃないから、if( p2 != NULL ) の条件が true になっちゃって、p2 を free() しようとするんだけど、そもそも p2 に入ってるのはゴミだから、free()が困る。で、落ちる。

という罠でした。
アドレス操作は便利だけど、こういうことがあるから厄介ですね。デバッグもしにくいし。気を付けよ。


■おまけ
ポインタが全然わかんないけど、やっぱりきちんと理解したい…という人には個人的にこれが超お勧め。
C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

2013年4月9日火曜日

「フリーランスとサラリーマン」っていう分け方の話じゃないでしょう。

まぁ別にスルーすればいいんだけど、例えばこれから社会に出て行こうとする若者たちが最近のイケダハヤトさんの極論断定ブログを読んでも害の方が大きい気がするので、滅多としない他人のブログに絡みつく、ということをやってみます。(別にアンチ・イケダハヤトとかそういうのは全くないです。いやむしろ自身の価値観で生き抜いていて素晴らしいとも思います)
#リンク貼っておきます。読んでないけど。
年収150万円で僕らは自由に生きていく (星海社新書)

とりあえず、今日のブログ(これは完全にWeb Logレベルなのであえて記事とは言わずブログと呼びます)。
社畜と家畜の共通点 - ihayato.書店 | ihayato.書店

これスタート地点がヒドすぎる。
もともと「家畜」という言葉があった上で、一定規模の会社なら必ず存在する給料ドロボー的な社員を家畜になぞらえて社畜と呼んだ話であって、比喩なんだから共通点もへったくれもない。例えるなら「AKB48とNMB48の共通点」について話してるだけで、同じ物を並べて話しているのでまったく意味が無いというか、プロブロガーとしてこんなこと書いてて恥ずかしくないのかなぁ、とすら思います。
イケダさんはFBのコメントで「昨日の夜布団に入ってピピーン!とタイトルだけ舞い降りたので、朝起きて15分ほどで記事化してみました。(中略)こういうことがあるから、創作活動はやめられないんですよね。このアナロジースタイルはものにしようと思います。」とおっしゃってるんだけど、これアナロジー(類比)でも何でもないですよね?(決してアンチとかそういうのはないです)


と、本当は別に今日のブログに絡みつく気は全然なくて、何日か前のこの記事を読んだ時にちょっとイラッときたんです。(いやだから全然アンチとかじゃないです)

サラリーマンの仕事の質がフリーランスよりも低い理由 - ihayato.書店 | ihayato.書店

なんというか、本当にこの人は世間を知らないんじゃないか、自分が知っていること・体験したことがすべて、という狭い世界で生きているんじゃないか?と悲しくなると同時に、これを鵜呑みにする若い人たちが増えだしたらエライことになるぞ、と思ったわけです。
なので、鵜呑みさせないために、釣りタイトルに思いっきり釣られて、サラリーマンとかフリーランスについて思うところを書いてみます。

ボクは現在フリーランスを丸3年ほどやってますが、それ以前は小さなベンチャーで営業を5年近くやっていました(その前は500人ほどの会社でシステム開発職です)。営業職だった当時、繰り返しますが小さなベンチャー企業だったので、専任営業はボク一人だけという期間も長くあり、そのおかげで多くの会社の社長や役員をはじめ、優秀なマネージャーや社員の方々とお話させていただく機会をいただきました。

社長や役員、マネージャーの方が意識高くハイパフォーマンスな仕事をされるのはもちろん、社員の方でも目的意識をもって高いパフォーマンスを出している方はたくさんいらっしゃいました。決して、(フリーランスに対比して)「サラリーマンは~」と一括りなんて出来ないです。サラリーマンでも、フリーランスより質の高い仕事をする方なんてゴマンといるんですよ。そんなの皆さん、知ってると思いますけど。
イケダさんは、売上目標に縛られて、無理矢理にでもモノを売りつけるような会社で働いていたんでしょうかね。もしくはそういう会社とばかりお付き合いされているんですかね?そうじゃない会社もたくさんあります。
それを「傾向」として言うのであれば、フリーランスだって必要のないモノを売りつける人だって普通にいます。

そもそもボクは、自身がフリーランスですが、それは決して他の人と比べて優秀だからというわけではもちろんなく、自分で自分に責任を持つための一番の近道がフリーランスという方法に思えるからフリーランスをやっているわけです。ぶっちゃけ能力とか仕事の質とか関係なし。会社に所属するメリットとデメリット、所属しないメリットとデメリット、それを自分の価値観で判断した結果、フリーランスが良い、という結論にたどり着いたわけです。
従って当然、この判断をするためには「会社員」としての経験がないとその良し悪しなんて分かりません(ベストセラー「ストーリーとしての競争戦略」にある『理屈じゃないから理屈が大切』の論理に似てますね)。
今、ボクはイケダさんのこれらのブログを読んだ若者が単純に「やっぱサラリーマンなんてやってらんねーぜ!」と思考放棄してしまう危険性を慮りながら書いているわけですが、なのでボクは、これから社会に出て行く若い人に向けては「絶対にこれをやり遂げる!」という強烈な思いやビジョンがない限り、会社勤めを少なくとも2年はするのが良いとお勧めしたい(強い思いとビジョンがあるなら、すぐやった方がいいけど)。
「なんかノマドとか自由なスタイルで仕事できていいよね、っつうか社畜になんてなりたくないし」というレベルで世の中に出るリスクの大きさを、しっかりと認識しておいて欲しいのです(そんなヤツぁいないかw)。というか、就職試験で面接官を口説き落とせない人が、ビジネスの世界で、きちんと対価を得る仕事を取ってこれるとはどうしても思えないので、悪いことは言わないから、「絶対にやりたいこと」がないのであればまずは会社に入って社会勉強すべし。
ちなみに「2年」としたのは、2年目には後輩が出来て、先輩としての勉強ができるからです。

それでもどうしてもサラリーマンなんてダサくてヤだぜ!という方に向けて、フリーランスとサラリーマンの違いをイケダさんに倣って極論してみましょう。

フリーランスで一番大事なのは、ボクは健康な体と営業力だと思っています。フリーランスは有給休暇というサラリーマン最大の特権がありませんので、仕事を取ってこないと、あっという間に死ねます。仕事を取ってきたとしても、体を壊して仕事できなかったら、やはり軽く死ねます。
というわけで営業力はとても大事。かく言うボクもサラリーマンの時に営業職をやって初めて仕事を獲得する難しさを知ったわけですが、例えばある企業に提案をする時、相手の担当者の方の社内でのポジションと所属組織のライン、他部署との関係、上長の決裁額辺りが重要ですね(「顧客目線の提案になっているか」とかそういうのは当たり前の前提条件として、その先の営業実務の話ですからね)。
企業規模にもよりますが、相手の担当者の方はこちらの提案内容を検討していくに当たって、いろいろと社内政治が必要なこともあるかもしれない。そんな時、その担当者が社内で動きやすくなるような情報などをまとめたり、各所に働きかけたりして進めていくことになると思います。
これ、自分が会社員としての経験がないと、そこまで想像が及ばない、想像できたとしても何をすればいいのかわからないんじゃないかと思います。自身が会社人の経験をしていないと、相手の状況を想像できない、理解できないと思うんですが、どうですかね。

そしてさらに大事なのが、人脈の作りやすさ。会社員としてある程度の肩書きを持つと、会社の信用度を使って結構いろんな人に会えます。いろんな会合にも参加できます。初見の信用度という意味ではやはりフリーランスより格段に上がるので、いろんなお話や商談も出来ます。
フリーランスになると自分の信用力一本で食っていかないといけないので、ほとんど人脈もない状態でフリーになると商談どころか会ってもらうのも大変です。また、フリーランスだと会社組織に比べて出来る仕事の規模が小さくなるので、ある程度実績がないと、商談の規模もどうしても小さくなりやすい。予算規模数億円、というような大きな仕事をしようと思うと、(個人ではないという意味で)サラリーマンじゃないと難しいところです。


あと、なんか意見を権威付けするために書いていると思うんですが、これ、気になります。
とあるベンチャー企業の取締役が、「優秀な広告パーソンは『このマーケティング課題だったら、広告を使わなくても達成できますよ』と伝えられる人材だ」という話をしていたのが印象的です。
このベンチャー企業の取締役の方がどの方なのかはわかりませんが、ボクもフリーランスの傍ら、一応ベンチャー企業の取締役ですので、ボクから言えることは「優秀な広告パーソンは『このマーケティング課題だったら、広告を使わなくても達成できますよ。ただ、こういう広告を打てばその数倍の効果を出せますよ』と伝えられる人材だ」と話します。
どう考えたって、それがビジネスでしょ。

そもそもですよ、イケダさんに倣って極論すれば、フリーランスばっかりになって皆が「これは無駄なんで削っちゃいましょう」なんてやってたら経済全体がシュリンクしますよ。極論ですけど。


ダラダラと書いてきましたが、多くのPVを稼ぎ影響力のある(であろう)プロ・ブロガーの方が、自分の知っている世界だけでそれを“即ち世の中”と当てはめてただの愚痴のようなブログを書くというのは、あまりにも浅はかなのではないか、自身の記事を読んだ人たち(特に社会に出る前の若者)にどういう影響を与えるか、ということについてあまりに無責任なのではないか、と思い、絡みついてみました。

ここまできて、なんか絡み方の方向性を間違えたっていうか、全然違う話をしている気もしてきましたが、とにかく「質の高い仕事をする人もいれば低い人もいて、それはフリーランスだから、サラリーマンだから、というレベルで区分けできる話では決してない」ということを言いたい。ってそんなこと本文で全然言ってなかったんですけど…。

最後に。
今回の件のブログを機に議論を巻き起こしたい…という目論見があったのであれば、イケダ氏の勝ち。

2012年12月11日火曜日

【雑談】邪魔にならずに特長を表現する演出(コールド・ストーン台湾HP)

セブンイレブンでコールド・ストーン・クリーマリーのカップケーキが発売される、というニュースを見て、ふと世界のコールド・ストーンのページを見てみたくなり、海外のコールド・ストーンから辿って台湾のページを開いてみました。

COLD STONE CREAMERY TAIWAN 酷聖石冰淇淋

ページを開いて何気なく見ていると、メニューが…

段々と凍ってくる。

凍って見えにくくなってくると、店員さんの手が出てきてロゴ部分をゴシゴシと。

しばらくすると全体もまた段々と元に戻り、これが繰り返される。


昔からよくあると言えばよくある演出ですが、大抵、演出が凝りすぎていてユーザーが操作を待たないといけなかったり、無駄な過剰演出であることも多い中で、特にこれはコールド・ストーンの特長(-9度の石板の上で作る)をよく表現しつつ、邪魔にならない(やり過ぎてない)演出で、「いいね!」と思いました。

HTML5とかで出来てるのかな、とちょっぴり期待しながらソースを見てみましたが、(残念ながら?)Flashで出来てました。

しかし、こういう、製品の特長を表現しつつ操作等の邪魔をしない、粋な演出というのは参考にしたいですね。

2012年10月25日木曜日

2012 Japan IT Week 秋 に行ってきたメモ

幕張メッセで明日まで開催されている「2012 Japan IT Week 秋」に行ってきたので、メモ。

スマフォ絡みで何かイケてる展示があるかなぁ、と思ったけど、目を引くようなものはあまり無かったような。注目のキーワード「BYOD」をプッシュしているのも1社ぐらいで、ちょっと期待ハズレでした。
とりあえず、ちょっと面白そうだな、と感じたサービスをメモ。

PITCOM

ピットメディア・マーケティングス株式会社さんが提供するコンテンツ生成ASP「PITCOM」。今回の展示の中で、一番いろいろと企画が作れそうで、個人的に最もグッときたサービスでした。
ユーザーが写真を投稿するとそれがモザイクタイルになる、というもので、実際に海外ドラマのキャンペーンなんかで今まさに走っているサービス。
担当の方の話だと「まだECでの活用はない」ということだったんだけど、共同購入とか、タイムセール的なものとか、ビジュアルに購入を促すような形でいろいろ活用できるんじゃないかなぁと感じます。いくつか企画を考えてみたい。ただ、ASPなのに価格帯が高いがちょっと難点…。

マンガマーケティング

株式会社シンフィールドさん。WEB×マンガで、CVRアップ・直帰率/離脱率改善・クリック率アップ等を謳われています。オモシロイ。230名以上のマンガ家さんが登録されているそうで、一発で「うまいとこ突いたなぁ」と感じたので、説明を受けることもなく、このサービスはハマるだろうな、と。あと、「お昼寝」とか「両親へ感謝を伝える」とか、ユニークな社内制度もオモシロイので、企業HPも一見の価値あり。

置き手紙

ジョーカーピース株式会社さんのGPSを利用した店舗向け集客サービス「置き手紙」。観光地の飲食店とかにあったりするような、お客さんが書き込んでいく訪問ノートをスマフォでやろう、というもの。たぶん。どうなんだろ。あとヒトヒネリしたら面白そうな感じがします。
(説明聞いてみようと思ったけど、誰も声かけてきてくれなかったので説明聞いてないのでちゃんと把握してません…。あと、Google検索で候補に表示される第2キーワードが気になっちゃう会社さんですね)

風評対策コンサルティング

シエンプレ株式会社さんの、悪評・風評対策。歩いてたらいきなり「御社の悪評はありませんか?」って呼びかけられたのが面白かった(笑)。

その他、気になること諸々

SEO対策業者さんも結構出展されているんですが、名著「閉じこもるインターネット」で指摘されているように、フィルターバブル(同じキーワードで検索しても、パーソナライズされた環境においてはボクが見ている検索結果とあなたが見ている検索結果は違う)におけるSEO対策ってのは、どうなんでしょうね?その辺、詳しく聞いておけばよかったな。

まとめ

「これは!」というようなサービスや製品との出会いはなかった。
あと、とりあえず、幕張メッセ、遠い。

2012年9月10日月曜日

【オフライン限定】Facebook人気者を気取れるブックマークレット

現実逃避したくなると、こういうしょうもなさ過ぎるものを作ってしまいます。
許してください。

詳細は下記ページで。
Facebook人気者を気取れるブックマークレット
(ブックマークレット作成:約1分、上記ページ作成:約30分。現実逃避にも程があるわ)


■合わせてゲンナリしたい
技術への名残り: Googleの資源を思いっきり無駄なことに使う(誰得の続き)

2012年9月2日日曜日

ノマドなITボーイが山リュックを使うべき3つの理由

久しぶりの更新ですが、休日ってことでちょっと別の話題をば。

快適なカフェやコワーキングスペースを渡り歩いて仕事するノマドなITボーイズ&ガールズ。同じ場所に留まることのないサスライの仕事人にとって、移動をいかにスムーズに、かつ快適に行うかは重要なテーマ。
そこで今日は、そんなノマドITボーイズ&ガールズに鞄についてひとつ、提案してみたい。



ノマドITボーイズ&ガールズよ、登山用リュックを使え。

急な天候の変化や険しい道が次々と迫り来る登山。そんな過酷な状況を快適に乗り切るために生み出され、作りこまれた登山用リュック。それを日常生活で使うとなれば、それは、F1カーでコンビニに行く、あるいはスーパーコンピューターでソリティアをやる、もしくはマイケル・ジャクソンがSMAPを踊るようなもの。
…微妙にどの例えも分かりにくいが、要するに「お茶の子さいさい」ってことが言いたい。


では具体的に、ITボーイズ&ガールズたちが登山用リュック・・・、いやここからはそれっぽく「ザック」と呼ぶことにしよう、このザックを使うべき理由を見ていこう。

1.暑い夏でも背中の汗からPCを守る

PCの大敵といえば、水分。しかし普通のザックを背負うとどうしても発生する、背中の汗。PCが入ったザックを背中に密着させて暑い夏の日差しを浴びながら移動しようものなら、ザックの中のPCは背中の汗によって傷んでしまいかねない。

そこで、この登山用ザックを見ていただきたい。

なんと、背負っても背中とザックの間に隙間が空くように作られている。背中に当たる部分はメッシュになっており、このメッシュとザック本体はワイヤーでしっかり距離を保たれているため、常にザックと背中の間には空気が流れる仕組みとなっている。
密着している状態と比べれば、この効果は計り知れない。
現に歩くことが好きな筆者は、仕事現場まで40分ほどかけて歩くこともよくあるが、密着型の(普通の)リュックを使っている時は背中のアツさに耐えられず、背負うのをやめて片腕で担ぐようにして持っていたのだが、このタイプにしてからは、背中がアツくなることもなく、ずっと背負いながら歩き続けられるようになった。



2.突然の豪雨、でも安心

夏の終わりの天気は、唐突だ。晴れていたと思ったら、急に雨が降り始めたりする。
しかしそれも、山では日常茶飯事。
突然の雨が降ってきたら、サッとジッパーを開けて、スポっとザック全体をカバーで覆ってしまえば雨がザック内に入り込んでしまうことは、まずない。

例えばこのタイプは、ザック最下部に収納されていて、大きなシャンプーハットのようになっているので、雨が降ってきたらこれを広げてすっぽりとザックに被せてしまえば、あっという間に防水完了となる。
ちなみにこのカバーはザック本体に取り付けた(繋げた)まま被せることができるので、何かの拍子にカバーが取れてしまっても、どこかに飛んで行ったり、という心配はない。

3.肩こり、腰にも優しい

モノにもよるが、今回紹介しているザックには、腰ベルトが付いている。この腰ベルト、知ってる人は知ってると思うが、あるのとないのとで、全く違う。
腰ベルト付きのザックを背負ったことがない方は、是非一度、お店に行って店員さんにお願いして体験してほしい。実際筆者も、お店で、自分のPCやら書籍やら書類やらをこのザックに移して背負った時に、腰ベルトパワーを実感した。
両肩と腰の三点で支えるから、通常より肩への負担が減って凝りにくくなるし、両肩への負担が軽減することで結果的に腰に真上からかかる負担も減って、腰にも優しい。

超腰痛持ちの筆者にとって、これは非常にありがたい作りだ。

おまけ)脱・運動不足

登山用に作られたザックなので、逆に日常生活のことなんてあまり考えらてはいない。特に、電車に乗ることは恐らく全然考えられてない。

このザック、電車でイスに座って膝の上に置こうとしても、全然収まらんのです。思いっきりかさ張る。かさばって、なんか隣の人とかに嫌な顔とかされて、つまりこのザックを持って電車のイスに座ってはいけない。

しかし逆に、ただでさえPCの前に座りっぱなしで運動不足になりがちなITボーイズは、電車に乗る時ぐらい立って、日頃の運動不足を解消することが出来ると考えれば、それはそれで運動を強制してくれるものとしてありがたい。

いや、まぁ、電車で立ってるだけのことを運動とか言ってる時点で全然ダメですけど。



その他、ペットボトルをホールドできたり、小物を収納するポケットや、引っ掛けておく紐が多かったりして何かと便利な登山用ザック。
実はノマドなITボーイズ&ガールズにピッタリなのではないか?と思ったので、今日はこんな記事仕立てにしてみました。気になった方は、是非チェックしてみてね。

ではまた!

ちなみに今回紹介した、ボクが使っているザックはこれ。


マムート クレオンエレメント並行輸入ブラック25L
MAMMUT(マムート)
売り上げランキング: 45546

2012年7月1日日曜日

[Visual Studio]HTMLを修正してデバッグ実行しても修正が反映されていない場合

ちょっとハマってしまったのでメモ。

VisualStudio2010を使ってWEBの開発をしていたら、なぜか、いつの間にか、(静的)HTMLを修正してデバッグ実行しても修正前の内容がブラウザに表示されるようになってしまった(仮に、このHTMLファイル名を[hoge.html]としておきます)。

で、ググるとキャッシュを消せとか言ってるんでIEの[インターネットオプション]からキャッシュを削除しまくったんだけど、状況変わらず。


IEオプションからキャッシュを消しても実は残ってたりする

というわけで、念のため、本当にキャッシュが消えているのかエクスプローラで確認してみる。
Windows7だと、IEのキャッシュフォルダはココ。
C:\Users\<ユーザー名>\AppData\Local\Microsoft\Windows\Temporary Internet Files

このフォルダを見てみると、なんと、残ってるではないか、[hoge.html]が。
取り急ぎ、これをエクスプローラ上で削除すると、無事[hoge.html]の修正内容がデバッグ実行時に反映されるようになりました

この事象が発生する要因

原因はわかんないけど、何をしたら発生するのか、というのは分かった。
どうやら、VisualStudioでデバッグ実行中に該当htmlを修正して保存すると、Temporaryに保存されて、IEの[インターネットオプション]からのキャッシュの削除では消えなくなるようだ。
デバッグ実行中は、C#のソース(cs / cshtml)は修正しようとすると(当然)エラーが出て修正できないんだけど、htmlはシレっと修正出来てしまったりする。
でも、そうやって修正・保存してしまうと、今回の事象が発生してしまうらしい。
以前までこんなことはなく使えていた気がするので、何か設定がおかしくなってしまったのかもしれないが、とりあえず、今後のためのメモ。

2012年6月6日水曜日

Chromeを使ってるとPhotoshop5 が起動しない場合

たぶんそんな人いないと思うだけど、Windows7 に Photoshop5入れて使ってて、Chromeを使ってる時にPhotoshopを起動しようとすると起動画面のまま固まっちゃうよ(:_;)っていう場合、それはChromeオリジナルのPDF ViewerがPhotoshopとバッティングしているのが原因だから、ChromeでPDF見れなくてもいいや!っていう人はPDF Viewerを無効化すると幸せになれますよ。


PDF Viewerがバッティングしているって特定できたのは、今の開発現場の同僚との話からヒントを得て気づきました。ヒントっていうか、ほぼ答えだったけど。とにかく、多謝。

Chrome PDF Viewerを無効にする

Chromeのアドレスバーに「about:plugins」と入力、Enterすると、プラグインの一覧画面が表示されるので、「Chrome PDF Viewer」を見つけて、「無効にする」をクリックすればOK。
(キャプチャは、もう無効化しちゃってますけど)

2012年5月30日水曜日

【SVF】SVF for PDFラッパークラスの使い方

前回の続き。
前回紹介したラッパークラスには、DataTableを渡すとルールに従ってズバーッと出力してくれるメソッドを用意していますが、肝心のルールについて記載していませんでした。すいません。

帳票設定サンプル

SVF Designer で SVFの帳票定義ファイル(以下、様式ファイル)を作成するとき、DBから取得したデータをセットするフィールドは、以下のルールでフィールド名を付けます。

フィールド名と、データを取得するSQLの列名を一致させること。

この後で挙げるSQLのサンプルと合わせて見ていただきたいのですが、例えば上記のような様式ファイルを作成して、フィールド名は以下のように設定したとします。
商品名 PRODUCT_NAME
単価 PRICE
数量 NUM
単位 UNIT
小計 LINE_TOTAL

この場合、この様式ファイルに対してSQLは以下のように書きます。

出力するデータを取得するSQLサンプル

DBから印刷対象を取得するSQLのルールは、(様式ファイルのルールと同じことですが)取得結果を格納しているDataTableの列名が様式ファイルのフィールド名と一致することです。

例えばこんな風に、SELECT文の取得項目に対して「AS」で列名を(様式ファイルの定義に合わせて)定義します。
SELECT
    M.PRODUCT_NAME
    ,M.PRICE
    ,T.NUM
    ,T.UNIT AS UNIT
    ,M.PRICE * T.NUM AS LINE_TOTAL
FROM
    T_ORDER T
    ,M_PRODUCT M
WHERE
    T.ORDER_NUMBER = :ORDER_NUMBER
AND T.PRODUCT_ID = M.PRODUCT_ID

このように、様式ファイルのフィールド名と、データを取得してくるSQLの列名を一致させておけば、勝手にラッパークラス側でマッピングして出力してくれます。わぉ。

これちなみに、究極的にはDBのテーブルの列名と様式ファイルのフィールド名を完全に一致させておけば、
SELECT * FROM ~
でいけてしまいます。
あ、SQLの整形とC#用のコード化は、こちらをどうぞ(宣伝)。
「SQLフォーマッター For WEB」で整形したSQLをStringBuilder化するブックマークレットを作りました

ラッパークラス利用のサンプル

というわけで、とりあえずの使い方サンプルコード。サンプルなので、普通のMainメソッドを持つクラスです。

サンプルコード


DBからデータを取得してDataTableに格納する部分は「こんな感じで」っていうサンプルなので、DB無しで動きを確認したい場合は、以下を参考にDataTableオブジェクトを手動で作って試してみてもいいかと。
C#学習メモ)DataSetに手動で値を設定する方法(C#)


さて次回は、ASP.NET MVCにおいて、大量の帳票印刷PGを効率よく書くためのサンプルについて書いてみようと思います。

2012年5月28日月曜日

【SVF】SVF for PDFをC#で利用するならラッパー的なクラスを作るのが吉

ウィングアークさんが販売している(開発元はこっち)帳票作成ツール「SVF for PDF」を使った開発を行ったので、得たこと、知ったこと、Tipsなどを順次公開していきます。

対象読者

このシリーズ(シリーズ化するぞ!という気合を込めて)は、以下のような方々に少しでも役立てば…と願いつつ、時間があるときに少しずつ書いていきます。
  • C#、ASP.NET MVCについて基本的な知識がある方
  • SVFマニュアルのJavaサンプルコードは理解できたけど、さぁC#でどう作ろう?という方
  • SVFの技術情報はWEB検索してもほとんど出てこなくて、毎回サポートに問い合わせないとダメだから面倒!という方

開発・実行環境

WEBサーバーOS Windows Server 2008
WEBサーバー IIS 7.5
APフレームワーク ASP.NET MVC 3
帳票サーバーOS Cent OS 5.6
帳票サーバーJVM Sun Java SE 6
SVF SVF for PDF 9
IDE Visual Studio 2010
※当然DBもありますが、SVFとDBが直接触れることがないので(DataTableクラスとかを対象にするので)割愛。


C#でSVFを利用するならラッパークラスを作れ

C#で SVF を利用するには、(当然ながら)SVFのDLLを参照設定してやります。
で、ここに含まれるAPIをC#から直接呼んでもいいんですが、厄介なのは、APIの各関数が終了状態を戻り値として返してくるってところ。
せっかく素敵な例外機構を持っている言語で利用するのであれば、やっぱり呼出元でちまちま戻り値判定するよりは、サクっと例外処理でまとめてしまいたいですよね。

というわけで、API側でエラーになった場合は例外をスローする、というラッパークラスを用意しておくと便利です。

また、関数によっては「エラー」コードと「警告レベル」のコードを返してくるものもあるので、例えば「警告レベルのものは無視しておk」みたいな設定もラッパークラスに対して行えるようにしておくと、さらに便利ですよね。ね?

さらに、DBから取得したデータを保持させているDataTableオブジェクトをポイっと渡せばルールに従ってズバーっと出力してくれるようなメソッドがあると嬉しいですよね。ね?

サンプルソース

上記の要件をまとめたのが、こちらです。
(例によって宣伝も兼ねてCode 2 HTMLにて公開)

サンプルソース

このサンプルソースでは、新たに作成したSVFExceptionという例外をスローするようにしています。
取り急ぎ試したい方は、これを全部普通のExceptionクラスなりに変更して使ってみてください。
(ちなみにAPI内部で致命的な例外が発生した時は、SvfrExceptionだったかな?そんな名前のExceptionがDLL側から投げつけられます)

で、このクラスを使う側のサンプルコードですが、それはまた次のエントリーで…。

2012年5月27日日曜日

【読書】デザインの輪郭

デザインの輪郭 最近はWEBアプリにしろスマホのアプリにしても随分とUI/UXが重視されるようになっていて、昔からPCのシステムやアプリの画面の使い心地の悪さをどうにかしたいな、と思っていたボクにとって、この流れはとても自然だし、ほとんどの人がやはりそう思っていたから、そういう潮流になっているんでしょう。

ただ、自分が日頃目にしているシステムやアプリの画面を見ていて、以前に比べて洗練されているとはいえ、それでも、生活の中で心地良く使うような椅子や時計や靴などのプロダクトに比べてまだ使い心地が自然じゃないような気がして(※)、ではその違和感というか、自分が考えているものとの距離は何なんだろう、と思い、デザイン論の本を読むことにしてみた。
(※その点、facebookはデザイン会社を買収しながら絶えず細かな修正を行なっていてスゴイと思う)

そこで選んだのがこの本で、2005年発刊なので少し古いけど、結果的に、個人的にはものすごく大当たりな本だった。
現に、ボクと同じような感覚で引っ掛かりがありそうな何人かの方には強くお勧めしたし、読書好きな恩師に、おこがましくも送りつけたりもした。


この本の、何がすごいかと言うと、著名な現役工業デザイナーである著者、深澤直人氏の、とても感覚的で観念的で抽象的なデザイン観が、丁寧に紡ぎだされた言葉を重ねていきながら、見事に読み手の中に植え付けてられてしまうところ。


正直に言うと、デザイン論本を本屋で物色している中でこの本を手に取り、冒頭を立ち読みしている時は、あまりに観念的な話で頭の上に「?」がたくさん並んだんだけど、それでも著者自身が冒頭、「はじめに」の出だしで
これは、私のひとり言のようなものである。
デザインという抽象を語るときには、私と読者がひとつの像を共有しておかなければならないと思った。さもないと私の言葉はあまりに観念的で、しかも脈絡なくあちらこちらに飛び回るので、読者を混乱させてしまうと思ったからだ。
と始めてくれており、とても丁寧に語り進められるので、読み手としても感覚的に読み進めてもいいのかな、という感触のもと、合間で具体的なプロダクトの例や学生のワークショップで教える時の話、俳句、写真家との対談などもあったりして、実のところスイスイと読んでしまうことが出来た。

スイスイと読み終えた結果、自分が漠然と感じていたことが少しクリアになり、かつ第一線で活躍する現役デザイナーのデザイン観を感じ取ることができ、読後感が非常に気持ち良い。さらに、その状態でもう1度最初から読みなおしてみると、「ははぁ、う~ん、なるほど!」と、一読しただけでは「?」だった部分が急に納得ポイントになっていたりする。

これからもボクはいろいろとアプリやシステムを作っていくと思うんだけど、本書で得た知見、感覚は、間違いなく役に立つと思う。
この本、引用しながらの感想文はとても難しいので、印象的な文章をいくつか抜き出しておくにとどめます(たぶん、読む度に抜き出すポイントも変わってくるんだけど、とりあえず)。

P.16「01 デザインの輪郭」
デザインの輪郭とは、まさにものの具体的な輪郭のことである。それは同時に、その周りの空気の輪郭でもあり、そのもののかたちに抜き取られた、空中に空いた穴の輪郭でもある。その輪郭を見いだすことが、デザインである。周りの空気とは環境のことで、それは人やものによって成っている。デザインの輪郭を見いだすということは、ものの輪郭をみるというよりはむしろ、環境の穴の輪郭を見いだすといった方がいいかもしれない。

P.26「02 選択圧」
デザインは、生き残るということが目的ではない。製品をできる限り長く生き続けさせるためにデザインをするということは、力の誇示ともとれる。その境遇における調和したものの立場が持続すれば、結果として長く生きることはある。他を生かして自ら朽ちることをよしとすることも、デザイン上の配慮である。デザインをつくり込むということは、そのものが生きながらえる安定した調和を邪魔する要因を取り除いていくということである。適合度(Fitness)を高めるということである。すべて、状況における調和である。

P.32「03 張り」(この項はとても重要)
張りは、輪郭の力のことです。

P.45「04 考えない」
幅七ミリ程の目地と同じような溝を、玄関の隅に壁から10センチ程離して壁と平行に引けば、傘立てになると思った。訪れた客は傘立てらしきものが見当たらないので、その溝に傘の先をあてて立てるだろう。私は傘立てをデザインし、客は結果的に傘を立てるという目的を達したことになる。しかし、そこにはよくあるような、円筒のような傘立てらしき物体の存在はないということだ。デザインは存在し、目的も達しているが、物体は消える。これは「行為に溶けるデザイン」ということだなと思った。

P.59「05 行為に溶けるデザイン」
最初に見たときに、そのかたちの意味がよくわからないというのがいいと思う。何かあたりまえのことをしていて、それが立ち現れてきたときに、「あれ?」・・・「!」となるのがいい。もちろん本当にそのものが溶け込んでしまっているわけだから、その存在すら気づかずに通りすぎてもいい。意識の中心に置かれるものは、気づかれることを目的にしているわけではない。気づいた人はちょっと微笑み、気づかなかった人は行為が止まらず流れていくということでいい。

P.88「07 ふつう」
買うときと使うときでは、また違うんです。人はものを買うときの期待値としては、ふつうを求めていないんです、わざわざお金を払うからです。でも生活に戻ったときに急にふつうを期待するわけですよ。結果的に生活の中に個性的で、突出したものがあふれるんです。自分で選んだのに。「ふつうのものを探すのが大変だ」という声をよく聞くじゃないですか。ないんですよ、そういうものが。だから僕は、ふつうのものをつくりたいと思ってしまうんです。

P.103「08 そのものの周り(外側を見る)」
小泉 僕は、レンズとものの間の空気を撮りたい。(中略)そのものを見ると、そればっかり撮りたいという気持ちになりがちですが、でも実際にはこの間(ま)があって、それがこのものをよくしていたりすることがあるんです。
深澤 見えてないんだけど、間が見えるといい。
山口 俳句でいわれたのは、いいたいことをいうのではなくて、いわないことをいうために17文字を使うんだっていうこと。17文字でいえることではない、17文字以外のことをいうために、17文字を使うんだといわれたことがあって。

P.196「26 アイデアとエクスキューション」
デザインというのは、アイデアとエクスキューション(出来映え)の両方が揃ってできることです。

アイデアは寿司で、エクスキューションは醤油のようなものです。
寿司を食べていると思っても、醤油がないと料理として成立しない。
本当は醤油がデザイナーの力だということです。
寿司の味を引き立てても表には出ない。

P.217「情報と経験」
礼儀がないとか、マナーが悪いとか、だらしないとかいうことは、
精神的なことよりも、関係性が見えない、
インタラクションの欠如だと思います。
相手が動いたらこう来るというような。自分がやったことに対して、周りの環境がどう変化するかということのセンサーがまったく働かない。
タバコを吸っていて、
後ろを歩く人は煙たいということがわからないことのように。
音のうるさいバイクのように。
インタラクションの欠如はインテリジェントに見えない。
センサーが弱いんです。

デザインも同じで、環境に対して、
この机はどうあればいいのかということは
経験から割り出されてくるものです。
それによって「このテクスチャーがいいよね」と決まっていく。

P.281「39 もてなすということ」
手をできるだけ加えないようにするということは、掃除したときに、きれいすぎるときに客をよぶということは失礼な話で、掃除してそれが少し落ち着いてから来ていただくとか、そこまで考えてないといけないみたいな、たまたまそこに水を打って、それが乾き始めた頃にお客がちょうどみえるとか。タイミングをケアすること自体が、人をもてなすということだから…。

P.282「40 自分を決めない」
自由であるということは、細胞しか鍛えていないということです。
何をするためにその筋肉を鍛えるかじゃなくて、
単に「鍛えている」ということです。
そうすれば、どんなゴールにでも行ける。


デザイナーさんだけじゃなく、モノをつくる人、企画する人にお勧めの一冊。

「デザインの輪郭」深澤直人(著)/2005年
デザインの輪郭

2012年3月27日火曜日

「SQLフォーマッター For WEB」で整形したSQLをStringBuilder化するブックマークレットを作りました

適当にダラダラと書いたSQLをキレイに整形してくれる、ATLさん作成の『SQLフォーマッター For WEB』をボクはすこぶる愛用しているのですが(いくつかフォーマットツールを試したけどこれが一番使いやすかった)、結局整形した後のSQLをC#などのソースに貼りつける時にStringBuilderとかにしてやんないといけなくて、毎度置換するのが面倒だったので、だったらってことでStringBuilder化するブックマークレットを作りました。よかったらどうぞ。
※ChromeとFireFoxでしか動作検証してません


■C#版
StringBuilder(C#)


■Java版
StringBuilder(Java)


インストール方法

Chromeで説明します。
上記リンク(ブックマークレット)を、Chromeのブックマークバーにドラッグ&ドロップして追加してください。


使い方

まずは、SQLフォーマッター for WEBでSQLを整形し、作者さんに感謝します。


無事整形されたら、ブックマークバーに追加したコレを押します。


無事、StringBuilder化されたら全選択した状態になるので、そのままコピーしてC#等のソースに貼りつけて、私に感謝します。


うまく動かなかったときは、その旨、こっそりコメント欄等で教えてくれると、私があなたに感謝します。

いずれにしろ、SQLフォーマッター for WEBへの感謝は忘れないようにしましょう。

まぁ、そんな感じで。
※JavaだったらEclipseプラグイン(DBViewerとか)使えばいいんすけどねー