2012年11月18日日曜日

いろいろ試したがgPadというテキストエディタがいい

テキストエディタに悩み始めるとあっという間に時間が過ぎる。

そしてどのエディタもとても良くできてるので、凄く悩む。

古いタイプのWindowsユーザなら秀丸エディタがエディタの代名詞だっただろう。しかし、秀丸はシェアウェア。企業内できちんとライセンス管理できるかどうかは不安だ。また、シェアウェアは人に勧めにくい。

vimというマッチョな人もいるだろう。プログラミングをする上ではよく出来ているのだが、日本語をたくさん書くときには、コマンドモードの切り替えが煩雑だ。何よりも非プログラマーには操作が複雑すぎる。自分がいくら慣れても、職種の違う人にナレッジが共有できないと、戦力増強フェーズでは厳しい。

僕たちは、htmlも書けば、議事録も書く。議事録も書けば議事録も書く。

そんな分けで、Web制作する会社人がとりあえず持っておくテキストエディタを探し求めていて、たどりついがのが、gPad。以下、見所。

1.タブが保存&復帰できる
タブエディタはたくさんあるが、タブが保存できるというのは珍しい。アプリを終了しても、再度立ち上げた時には、前回開いてくれていたファイルをもう一回開いてくれるのだ。会議の議事録いっぱいと、HTMLとPerlとPHPとってやつが、せーので開いてくれるのはありがたい。

2.フォントサイズがぬるぬる変えれる
議事録をとるときいには、プロジェクターに映しながらということを良くやる。そうなると、大きな文字でタイプしたい。Windowsアプリには、コントロールキーをおしながらホイールを回すと、拡大ができるという機能を備えたアプリが多いが、gPadもこの機能をサポートしている。ホイールでぐりぐりやりながら拡大するので、ちょうどいいサイズに拡大できる。

3.DIFFツールとの連携がいい
ファイルの比較機能はどのエディタもがんばっては居るが、gPadは外部のファイル比較ツールを呼び出すことができる。Windowsを使っているWeb制作者なら、ほとんどの人が、TortiseSVNを使っているだろう。TortiseSVNに組み込まれている、TortiseMergeを呼び出すことができるので、いつも使っているファイル比較ツールをテキストエディタからでも呼び出せるのだ。

4.マクロがある
秀丸の時には大量にマクロを作っていて悦に至っていた。プログラマーとしての母国語は秀丸マクロだと言ってもいいくらいだった。ところがいくら作ってもシェアウェアだと人に勧めるのが難しい。gPadもJavaScriptでマクロがかける。私は「一行目の文字列をファイル名にして、固定フォルダに保存」というマクロを自作して使っている。保存フォルダをDropBoxとかにすれば、なんちゃってエバーノートのできあがり、メモがどんどんクラウド化される。超便利。

5.最近使ったファイルだけじゃない
最近使ったファイルという機能は、どのアプリでもよくあるが、gPadは「最近閉じたファイル」というメニューと、最近使ったフォルダという機能がある。さっき閉じたファイルを開きたいというニーズはあるし、よく使うフォルダをダイレクトに開くことができるというのも便利。

そんな感じ。逆に、gPadの売りとなってる、csv、tsv編集機能は試しに使ってみたが、そんなにしっくりこなかった。話だけ聞くと、それは便利だと思うのだけれど、表っぽいUIでエクセルのようでエクセルでないというのは、違和感が最後まで抜けなかったのだ。そもそもエクセルのないPCなどない。

アウトライン機能も使いそうで使わなかった。本格的なプログラミングはEclipseでやっているからかも知れない。

また、サクラエディタもかなり便利で、ほとんどのことはできるのだが、僅差でgPadが便利かなという感じ。

相場からみたセキュリティ対策

ITセキュリティには一定のルールがあって、業務上はそれに従わなくてはならないことがほとんど。

ただ、漫然とルールに従っているだけでは、ユーザサービスにおいては競合優位性は作れない。「簡単ログイン」やFaceBookのいいねボタンなどは、一般的なITセキュリティレギュレーションからは離れているが、圧倒的な利便性から普及した。

逆に言えば、「ユーザを守りながらも」「利便性の高い」セキュリティ指針であれば、競争優位に立てるということ。

ということで、ルールではなく「相場」としてのセキュリティを示す。

1.究極はセッションなんて無くてもいい
図書館の貸し出しシステムをご存じだろうか。東京都の中央区の図書館システムと渋谷区の図書館システムは両方とも「セッション」という概念がない。検索まではログインせずに使えて、貸し出し依頼をする瞬間に、IDとパスワードを入力する。貸し出し依頼という行為の数がそもそも限られているのだから、その瞬間で十分なのだ。セッションがなければセッションが乗っ取られるリスクも少ない。

2.情報が取り出せなければ、緩くても大丈夫
誰かにメールを送るのに、相手側のメールサーバへのログインは必要ない。鍵をかけなくちゃいけないのは、情報の取り出しであって、送信にはさしたるセキュリティは必要無いのだ。例えば「出前」という仕組みは、電話一本でできる。(気を利かせて会員登録させようとするのは野暮)
図書館の貸し出しシステムも、デフォルトのパスワードが緩くて、初期パスワードのままでも使えるケースがあるが、いたずらで予約をいっぱいされるくらいの被害で、何か情報を盗まれるという心配は無い。

3.同一セッションだけを対象にするのならログインの概念は必要無い
国税庁がe-taxという仕組みを提供している。確定申告の電子申請まで全て行うには、そのための手続きに何度も役所に足を運ばなくてはいけない(意味が無い)。ところが、確定申告の書類をつくるだけなら、ログインしなくても、必要な情報を記入すれば、確定申告のための生類は生成される。一次情報はサーバ上にあるのだが、永続化はされないし、別の端末からのアクセスもできない。データを保持したいというニーズに対しては、「今作りかけの確定申告情報をファイルとしてダウンロード」という機能が提供されている。PCのファイルをアップロードすれば続きから再開できる。

4.大事な情報の前にはログインしっぱなしでいい
Amazonの仕組みがよくできているのは、基本ログインしっぱなしであるということ。だから、再訪問したときにも、ずっと私を覚えていてくれていて、商品をレコメンドしてくれる。じゃぁ、パソコンを盗まれたら、物が買い放題じゃないかと言う心配があるかもしれない。しかし、商品を実際に購入するときには、パスワードを入れ直さなくちゃいけない。さらにさらに、万一パスワードが盗まれて居たとしても、届け先の住所を変えるには、クレジットカード番号をもう一回いれなおさなくちゃいけない。クレジットカード番号を入れ直すということは、もはや何も盗めてないのと一緒。

レコメンドから素性がばれるのはそれはもう情報流出として被害がでかいのだ!って人もいるだろうが、このあたりが利便性とのバランスだろう。

5.リアルな住所に届けるという認証
クレジットカード番号だけで物が買えてしまうという通販の仕組みは、酷いセキュリティのようにも見えるが、最終的には荷物を受け取るときに住所がばれるので、なりすましがやりにくい。ここにうまく目をつけているのが、オンラインバンク。窓口で対応する銀行に比べて、全て郵送で手続きをするため、なりすましがやりにくくなっている。

まとめ

セキュリティというのは、「今アクセスしている人が本人かどうかの確認」ができているかどうかに尽きる。
  1. 同一クッキーを送ってくる人は同じ人だろう
  2. パスワードは本人しか知らないだろう
  3. メールの受信箱は本人しか見れないだろう
  4. ショートメッセージの受信箱は本人しか見れないだろう
  5. 電話は本人しか受け取れないだろう
  6. 郵便物は本人しか受け取れないだろう
という感じ。パスワードが一番メジャーだが、すぐ忘れるし不便。メールはとてもメジャーだが、一人で複数人を名乗れる。ショートメッセージや電話は、大量に取得するには契約が面倒なので、本人かつ一人だけという特定をするのには便利。郵送物は本人確認ができる上に、電話に比べてもさらに複数の受信BOXを作りにくい。

一般的な、Webサービスは、会員登録時にメールで、ログイン時はパスワードという組み合わせが多い。セキュリティを強化する場合にはショートメッセージを組み合わせている。AmazonのEC2なんかは電話のコールバックを入れている。メルマガサービスなんかはメールだけで購読の登録解除ができるようになってる。

2012年11月3日土曜日

非デザイナーがイラストレーターをインストールしておいた方がいい理由

自身はデザイナーではないので、イラストレーターはあまり使ってなかったのだが、やっぱり観念してインストールした。

実際にはイラストは書かない。しかしイラストレーターには、「画像形式のコンバーター」としての機能がある。

こんなシーンに使える。

1.年賀状を写真屋さんで印刷してもらうために大きなJPEGファイルを作りたい

PCで年賀状を作れても、印刷はとても面倒。自宅のプリンターでは時間がかかる。何よりもインク代がかなりかかる。何色のインクが足りなくなるかは、やってみてからでないと分からない。来年にインクジェットのノズルが詰まっているかも知れない。

一方で、写真屋さんに持ち込めば、一気に解決。印刷ミスもない。ところが写真屋さんでは写真を印刷するフローしかなく、PDFなどを印刷はしてくれない。ということで、Wordで作った印刷データをPDFに変換し、それをイラストレーターに取り込んで、高解像度のJPEGファイルにすれば、写真屋さんで印刷してもらえる。

最初からイラストレーターで年賀状を作ってもいいのだが、Wordの方がテンプレートが充実していたり、何よりも、Officeの操作なら誰でも文字組ができる。行間の調整なんて、イラストレータの初心者ではまるで分からないだろう。

2.PDFの一部をエクセルやパワポに取り込みたい

企業内では、PDFでの情報のやりとりが多い。特に会社をまたがる情報は、再編集可能なOfficeドキュメントではなく、PDFでやりとりされる。発注先からの提案資料の一部を取り出して、自分の企画書に取り込んで、吹き出しでコメントしたいというようなケースはある。

そういうときも、イラストレーター!PDFをイラストレータに取り込んで、WMF(ウィンドウズメタファイル)に書き出す。WMFはオフィスのオートシェイプの形式だから、拡大してもキレイ。

つまり、PDFやWMFなどのドロー系のフォーマットと、JPEGなどのラスタイメージのコンバーターとしてイラストレータは優秀なのだ。

「パスとしてコピー」を使えば、作業効率がめちゃくちゃ上がる

マウスを使ったグラフィカルインターフェースには、「ドラッグ&ドロップ」という操作がある。ところが、実際にはこのオペレーション、「掴む」「掴んだまま移動させる」「別のウィンドウに落とす」という一連の作業を途切れることなくやらなくちゃいけないので、小さなマウスパッド・小さな画面では難しい。

だから、ファイルの移動でさえも、ファイルを右クリック→切り取り→対象のウィンドウをアクティブに→右クリック→貼り付け、ということの方が「確実」なオペレーションになる。割とやってる人は多い。

ウィンドウズのフォルダ上でのファイル操作では、ファイルのカット&ペーストの概念があるが、アプリをまたがるとそうは行かない。

例えば、できないのだけれど、理想としてはこういうことをしたい。

  1. デスクトップ上のファイルをコピー
  2. gmailを開いて、ファイルを添付したいので、ペースト
  3. 送信
みたいなことをしたい。企業内のメールなんて、ほとんどファイル共有ツール。ファイル添付をなんぼほど確実にするかが仕事の精度みたいなもん。でもできない。メールソフトとが、OUTLOOKだったりすると、Officeソフトの「送信」機能で、一気に添付ファイル登録まで行けるが、このご時世、なんでもかんでも、ファイルを開くダイアログからのファイル選択。

てことで、発明したのが、このフロー。
  1. 対象のファイルをシフト+右クリック→パスとしてコピー
  2. gmailのファイルを開くダイアログでペースト
  3. 送信

「パスとしてコピー」機能は、ファイルのフルパスをコピーしてくれる。ファイルを開くダイアログは、フルパスを入れると、直接指定が可能。だから、フォルダを探し回る必要がない。文字通り、目をつむってもファイルが添付できる。

さてこの、パスとしてコピー機能。フォルダでなくても使える。ウィンドウズキーから、ファイルを検索しても、シフト右クリックでパスとしてコピーできる。それだけではなく、「ファイルの保存ダイアログ」でも可能なのだ。

まさにこのブログを書いているときにも使っている。画像を加工して、それを添付するのに、Paint.netというお手軽ペイントソフトを使っている。まず、保存する。もう一回「名前をつけて保存」をすると、さっき保存したこのファイルがダイアログに出てくる。それをシフト右クリックで、パスとしてコピーを選ぶと、「今編集中のフルパス」がクリップボードにコピーされる。

あとは、そのフルパスを、ブログのファイルアップロードダイアログにペーストすればよい。

この作業工程でいいのは、「今のフォルダの位置」を一切意識しないということ。だからこのブログにアップしているファイルは、無題.pngをデスクトップに上書きで作ってはアップしている。ファイル名さえ自分では着けてない。パーマリンクとしてのファイル名フルパスがやりとりできさえすれば、コンピュータ様は満足なのだ。

フォルダを探し回っている時間は無駄でしかない。間違ったファイルを公開してしまうというミスはとんでもなく大きい。だから、「今僕が触っているファイルのフルパスを確実に伝える」ということは、時間もリスクも減らす上で大事なのだ。

エクセルのWebクエリでログインまでしちゃう方法

昔に比べると、社内業務システムも柔軟になってきて、Webブラウザだけで入出力ができるようになり、会計上のルールで印刷が必要な場合にはPDFで出力できるようになってる。

しかしながら、グラフに出力してみたり、分析の軸をあれこれ変えてみたいというニーズに対しては、サーバーサイドエンジニアリングは、「素のエクセル」の前には手出しができない。やりたいことがエクセルならエクセルでやってもらうのが一番。

ところが、エクセルには情報を収集する仕組みがなく、情報システムのDBに格納されている。間をとって、CSV出力機能を設けているところが多いだろうが、Webシステムからのダウンロードは、PCのダウンロードフォルダを汚す。何よりも重要な情報が暗号化されてない中間ファイルが存在することがよろしくない。

そこで、最もエクセルと情報システムとを最短距離で結ぶのが、エクセルのWebクエリ機能。機能としてはシンプルで、ブラウザにHTMLのTABLEとして出力されているものが、そのままエクセルのセルにセットされる。

中間ファイルがなく、さらに情報システムも特殊なことをしないでよい。

ところがこのWebクエリ、画面遷移ができない。とあるURLをGETするだけ。だから、ログインが必要な深い画面で、Webクエリを使うと単にログインフォームを取得するだけになる。

じゃぁってことで、エクセルの別の昨日で、ログインをしておけば、きっと同じセッションを使えるはずだから、Webクエリでもログイン後の画面が見えるはず。

ということで長くなったけど、手順。

1.開発ツールから挿入→AnctiveXコントロール→コントロールの選択を選ぶ
2.MicroSoft Web Brouser を選択

3.そのままだと、どこにもナビゲートできないので、マクロで画面を遷移させる
この例では、シートがアクティブになった瞬間に、フェースブックのトップページに移動している。

あとは、デザインモードを解除して、シートをアクティブにすると、ログインフォームが画面上に出てくるので、手動でログインすればよい。オートメーションでログインまするという方法もできそうではあるが、それはセキュリティの穴を作ることになるので、要求があってもやらない。

これで、ログイン後にしか見れない画面のTABLEをWebクエリで取得ができる。Webクエリそのものの説明はあちこちにあるのでそちらを参照。

ちなみに、表のデータなのにがんばってDIVで表現しているページがあったりすると、Webクエリは使えない。いやいや表なんだからTABLEで表現しなさいよと。Tableタグを排除するのがモダンなHTMLなんだと勘違いしている先進的コーダ-はちと困る。

ログイン機能付きWebクエリつきエクセルファイルは、位置づけとしては、「分析機能の付いたブラウザ」。データを保存しなければ、セキュアだし、仮に保存したとしても、エクセルには暗号化機能があるので、CSVよりはセキュリティ的にまし(少なくとも内容が検索インデックスされることはない)。