正直に書くブログ

2012年9月からフリーランス活動開始しました。
今後もマニアックでも有用な情報を提供出来るように頑張ります。

ツール

おーくの友だち+gawkでテキストファイルをマージ

今日は久しぶりにPCを使ったお仕事です。最近PCをあんまり仕事で使わなくなったので、メールチェックを始めスマートフォンばっかり使っています。

さて、今日はお仕事の関係であらかじめ手元に確保しておきたいファイルをネットで集めてくる作業をしようと思ったわけです。Web関係の仕事をする以前はHTMLの知識ですら概念的な学習で、実践が伴わなかったものですが、すっかりHTMLだけでなくJavascriptも一応読めるスキルが身についている様で、ソースを読んで規則性を見出し、URLリストを生成してダウンロードツールで自動的にダウンロードさせるべく横着する方法を考えます。

ちなみに未だに使っているダウンロードツールはIrvineです。Irvineは非常に優れたダウンローダーで、Windows 7でも不自由なく使用できるのがありがたいことです。

続きを読む

LibreOfficeのDrawも悪くない

私のVISIO利用歴は非常に長いのだが、Microsoft社に買収されて以来どんどん肥大化して行くと共に、求めてない方向(機能)に進んでいった。それでも左手のショートカットとマウスの操作は、ほぼ無意識に操作する位に慣れていたので(AutoCADに近いものがある)、もっぱら図を描く時はVISIOを使っていた次第である。

ところが、WindowsもXPからVista、7へと移行して行くと、もういちいち最新版を追従して行く事が馬鹿らしくなってしまった。なぜならVISIOをそれほど必要とする仕事をしなくなったからだ。つまりツールとして投資する価値があるか?と考えた時、NOという答えが自分の中で出てしまった。

とは言うものの、挿絵等の図を描く時には何らかのドロー系ソフトウェアが欲しいものである。OpenOfficeのDrawを試した時は全く使い物にならないと感じた記憶がある。現在は当然改良されているのだろうが、私はSun買収騒動をきっかけにLibreOfficeに乗り換えた。

続きを読む

awk単体では出来ないケースが実は多い(ビギナー)

awkを仕事で扱うCSVファイルの編集に使用している事を先日のエントリーにも記しましたが、実に便利なコマンドです。今日は楽天への商品アップロードCSVファイルからコントロールフラグをカギにしてレコードを抽出し、そのレコードだけをawkで取り出すという実に簡単なawkの処理をしました。

社内ではシステムからCSVを生成してそれをアップロードしています。その中から削除した商品レコードだけを取り出す必要が生じたのです。

しかし、楽天の商品データitem.csvには商品説明欄もあり、ここに改行コードが入っているので、そのままではawkで処理できません。なぜならawkは改行コードをRS(レコードセパレータ)として扱うからです。もちろんRSを別の文字列などに変更することもできますが、改行とレコードの末端との区別が付く様に加工してやらなくてはなりません。

少し悩みましたが発想の転換をすることにしました。レコードの末端ではなく先端にマーカーをつけることにしました。awkで処理できる形に成型する作業ですから、テキストエディタ(正規表現置換)で行いました。

規則性を再確認してみましたが、レコードの先端には"(ダブルコーテーション)とコントロールフラグが入っています。

"u","xxxxxxxx","yyyyyyyyy"
"d","vvvvvvvv","nnnnnnnn"
"n","ppppppp","ooooooo0"

こんな感じです。uはアップデート(更新)、dはデリート(削除)、nはニュー(新規)という意味らしいです。

商品説明のカラムに改行が入っていてこの規則性(1レコード=1行)が成り立ってない為に、awkがそのままでは使用できないので、第一カラムにマッチした場合は、そこがレコードの先端だと判断する事にしました。つまり正規表現では下記の様になると思います。^は先頭を意味していますし、"は特殊文字なので\でエスケープが必要です。

/^\"u\"|^\"d\"|^\"n\"/

ただ、この正規表現にマッチした場合、その先端にマーカー@を付けるとした場合の置換方法を私は知りません。仕方ないので一つずつ実行するしかありません。置換作業を三回繰り返しです。

/^\"u\"/ >>> @"u"
/^\"d\"/ >>> @"d"
/^\"n\"/ >>> @"n"

とにかくこれでレコードの頭に@が着きました。

次に改行コード(\n)を削除します。これも正規表現でマッチさせられますので、\nを何もナシに置換します。改行が削除されるので、正常に出来たら一行のデータになってしまいます。

ここで先ほど付けた@の出番です。@を改行(\n)に置換すれば、目的は達成です。これで1行=1レコードのCSV書式となります。なーに、商品説明欄は要らないのですから改行コードを抹殺しても構わないのです。

今回はdフラグを付けたレコードのみを抽出したいのです。awkなら$1=="d"で簡単にチェック出来ます。実際はダブルクォーテーションをエスケープしなくてはならないので円マークを前に付ける必要がありますけどね。

$1==\"d\" {print $0;}

今回の作業の様に、awkだけでは解決しないケースは結構あります。PerlやRuby、PHPなどではCSVのカンマ区切りと、データを””で囲っているという構造に対応しているので、改行コードが入っていてもそのまま処理できるそうです。awkは古い言語ですから仕方有りません。

その代わり、プログラミングビギナーにも比較的容易で、目的を達成できるのがメリットです。柔軟性が無いというのがむしろ簡素だという点でプログラミングが苦手な私はawkを評価しています。

もちろん更にawkの使いこなしを理解すれば、今回のケースでもawkだけで処理できると思います。しかし私はプログラマーでは無いので、何がなんでもawkだけで処理を完結させる必要はありません。他の方法と組み合わせてでも、仕事をなるだけ早く正確に終わらせるのが一番の課題です。(もちろん今後もawkについての学習は進めますけどね。)

でも、もしどうしてもawkでは話にならない、ということになったらその時は私も成長したと言うことで、次へステップアップする時期だということでしょう。それは現時点想定できませんがもしそうなったら喜ばしいことです。

おーくの友だち+gawkでCSVファイル編集無敵!

仕事がら、CSVファイルを編集する機会が多い。CSVファイルを編集する作業となると、一般的にはExcelを使用すると思うが、実に余計な事をしてくれてトラブルの元となるのでExcelは極力使いたくない。

具体的には、桁数の大きい数字を「文字列」ではなく、「数値」と勝手に解釈してくれたり、かっこで囲った数字をマイナス値として勝手に解釈してくれることなど。

「CSVファイルなんだから文字列として編集させてくれ!Excelは見やすく表に整形してくれるだけでええねん!」と声を大にして言いたいが、私の知っている範囲では、Excelを純粋なCSVエディタとして気楽に使用する方法は見あたらない。

勿論、拡張子を一度.TXTにしておいて、Excelから開くとして、カンマセパレートとか、文字列として取り込むとか、ウィザードで指定しながら取り込めば目的は達成出来るのだが、うざったくて仕方がない。

KutoCSVエディタがこの穴埋めをしてくれると期待していたのだが、レコード数が多くなると、べらぼう重くなってフリーズした様になる。とてもテキストエディタの様な軽快な動作は期待出来ない。PCのHDDランプを見ているとチラチラと点滅しているので、ディスクアクセスがボトルネックになっていると思われる。きょうびのアプリとしては、メモリー実装量に余裕があるならRAM上で処理して欲しいものである。改良を期待する。

そんな訳で私はプログラムを作れる方には、是非ともCSVの編集作業をサクサク快適に大量のデータでもパフォーマンスが落ちない仕組みでツールを開発して欲しいと本当に願っている。ネットショップを運営する人も多くなっているからニーズは間違いなくあると思う。残念ながら私にはそのかゆい所が分かるが、それを解消するツールを作る能力が無い。

ちなみにExcelは2007からは開けるレコード数(行数)が格段に多くなったが、それよりも古いExcelは6万何千行かで制限があある。OpenOffice.orgのCalcも最新版はこの制限が取れたので、かなり期待したのだが、レコード数の多いCSVを取り込むとフリーズする。つまり信頼性に欠ける。一番手っ取り早いのは正規表現の置換機能を実装したテキストエディタだったりする。しかしルーチンワークには向かない。

ここでもう、繰り返し同じ作業を毎日行うならスクリプト言語の出番だろうと、以前も記したawkの出番だと私は思った。ただ、UNIX系由来の古くから有るアプリケーションなので、コマンドラインでの操作が前提となる。ここがWindowsで育った人でそこを脱していない人には大きな壁になる。(Mac OS XはFreeBSDベースなUNIXなので、おそらくawkは標準で実装されていると思われるが検証する環境が無いので・・)

続きを読む

クリップボード拡張+入力支援ツール「Charu3」

個人的にはWordPress、MovableTypeをブログ用CMSとして使っていますが、Livedoorブログもデザインをカスタマイズできる点、複数名で一つのブログを編集できるの点で気に入ってます。自前のWebサーバーを持っている身としては、Livedoorブログが無料だからというのは大した理由ではないです。使いやすさとカスタマイズ性を評価しています。

さて、今日は当ブログでエントリーする際の超基本的ルールを紹介したいと思います。当ブログで意識しているのはたった一つのタグです。理由は一字字下げをする定義をCSSで設定しており、空行を無駄に入れないためです。その為に便利なのが「Charu3」という入力支援ツールです。

段落を意識する(Pタグ)

HTMLで最も基本的なタグの一つとしてpタグがあります。pタグを使用する事により、段落を意識したマークアップが出来ますので、いちいち空行を入れなくても段落を開けることが出来ます。段落と段落のスペースはCSSの定義で調整すれば、ブログ全体で統一させることが出来るので便利です。

Livedoorブログの場合、pタグを入力するためには、HTMLボタンをクリックしてHTMLソースエディタからpタグを入力しなくてはなりません。その際にいちいち<p>段落の文章</p>てな感じで手入力してから始めるのは手間です。もちろんIMEなどに登録して一発で呼び出せる様にすれば効率は上がります。

しかし、Charu3なら更に便利なテンプレート機能がありますので、段落の文章を入力した後に、pタグで前後を挟むことが可能です。つまりpタグを入力し忘れた後でも一発でpタグを前後に挿入することが出来ます。これは慣れるともう手放せなくなってしまう機能です。下の編集はCharu3で一瞬で出来ます。

一段落目を入力しました。
<p>一段落目を入力しました。</p>

Charu3を単なるタグテンプレートとして使用しても構いませんし、より発展的な用途に使用してもいいですね。クリップボードの履歴も便利です。いずれにしてもソースレベルでブログを記入するということを意識し始めた人にとっては、HTMLソースエディタを開いて、直接ソースをいじることが多くなる筈ですから、似たような作業が増えるものです。

Livedorブログの旧入力画面は、改行した時に前のタグを継承してくれる点が便利ですし、見た目も段落と段落が少し開いているので段落を意識した記事入力が出来て便利なのです。段落の中で強制的に改行したければ、SHIFTキーを押しながらENTERで強制改行<br />できます。実に便利です。

残念ながら最近リリースされた新画面では段落がビジュアル的に分かりづらくなっています。みんなで改善要望を出せば改善させるかも知れませんね。(私は要望を出しましたが・・やっぱり旧入力画面を使っています。)

どっちが作業しやすいと感じますか?私はもちろん・・

livedoor Blog

OLD-livedoor Blog

参考

窓の杜 - 【Review NEWS】マクロ拡張機能が追加されたテキスト入力支援ソフト「Charu3」v3.02.01
記事検索
月別アーカイブ
SEO的な実験
RSS

ブログランキング

track feed 正直に書くブログ
メンバー
最新コメント
スポンサードリンク
QRコード
QRコード
  • ライブドアブログ