辞書を引く.appを作ってみた
ルビについて調べていたら、ルビとは無関係だが、辞書ということで、次のようなページにいきあたった。
http://sakito.jp/mac/dictionary.html#url-scheme
http://macscripter.net/viewtopic.php?id=26661
「辞書.app」って使ったことがなかった。
コピーした文字列を辞書で調べるってアプリ、上の情報からできるなっと思って作ってみた。
調べたい言葉をコピーして、アプリを実行すると、ダイアログにこんな感じで表示します。
メインのapplesript部分は、
--* 自身のバンドル・パスを得る
set self to path to me
set scriptBundlePath to (path to resource "Scripts" in bundle self) as Unicode text
set iconPath to (path to resource "applet.icns" in bundle self) as Unicode text
--* スクリプトファイルのフルパスを作成する
set pyScriptFile to scriptBundlePath & "dict2.py"
--* Unix用のパスに変換する
set pyscriptpath to quoted form of (POSIX path of pyScriptFile)
--* paste値を変数にセット
set searchword to do shell script "pbpaste"
--* shell コマンド
set command to "/usr/bin/python2.5 " & pyscriptpath & " " & quoted form of searchword
--* コマンド実行
set theResult to do shell script command
--* 表示
display dialog theResult with title searchword buttons {"Close"} default button {"Close"} with icon file iconPath
Pythonスクリプトは、
#!/usr/bin/python2.5
import sys
from DictionaryServices import *
def main():
try:
searchword = sys.argv[1].decode('utf-8')
except IndexError:
errmsg = 'You did not enter any terms to look up in the Dictionary.'
print errmsg
sys.exit()
wordrange = (0, len(searchword))
dictresult = DCSCopyTextDefinition(None, searchword, wordrange)
if not dictresult:
errmsg = "'%s' not found in Dictionary." % (searchword)
print errmsg.encode('utf-8')
else:
print dictresult.encode('utf-8')
if __name__ == '__main__':
main()
弊社ダウンロードサイトから取得できます。
https://www.web-cte.co.jp/tools/
日本地図センター
先日(とは言っても昨年の9月の事ですが…)
“(財)日本地図センター”という所に行ってきました。
以前勤めていた会社の仕事でGIS(地理情報システム:
Geographic Information System)に携わっていた時に初めて知って以来、
その存在が気になっていたので、夏季休暇を利用して訪れることにしました。
(ここは土日祭日が休業日なので、基本的に平日でないと行く機会が無いので)
センターの中は日本全国の各種地形図をはじめ、道路地図、
地図に関する様々な書籍・グッズなどが陳列されており、
恐らく地図に関する物であれば、何でも置いてあるのではないかと思いました。
私が訪れた当初は東日本大震災から間もない頃だったので、
災害対策のハザードマップなどが平積みで置かれていたのが印象的でした。
その他ですと、近頃の乗り鉄・撮り鉄ブームを反映してか「廃線跡をめぐる」等の
趣旨の書籍がふんだんに置かれていたのが目立ちました。
場所は東急田園都市線の池尻大橋から歩いて5分程の所です。
駅から地図センターまで歩いていると、玉川通り(国道246)の脇に
首都高の大橋ジャンクションが出没します。
(コンクリートで出来た円柱型のループがある所です)
(財)日本地図センター http://www.jmc.or.jp/
Perl Script 習作
Perlのブラッシュアップのためにサブルーチン化した習作を投下します。元はInDesignから書き出したxmlテキストをタブ区切りテキストに成形するスクリプトの一部。内容は順不同に出現するフィールド名のタグで挟まれた部分を抽出して並び替えて揃えるというものです。↓こんな感じのタブ区切りテキストを表組に使えるテキストに加工するのに作りました。
↓
ちょっと記述が長いかもしれないので、折りたたんでおきます。
(シンタックスハイライトを使って整形しました。2012/2/19)
備忘録:ミリ秒を取得する
on getMilSecond()
set theCmnd to "perl -e 'use Time::HiRes;my ($wtime,$msec) = split(/\\./ , Time::HiRes::time);my @t = localtime($wtime);printf(\"%04d%02d%02d%02d%02d%02d.%03d\",$t[5]+1900,$t[4]+1,$t[3],$t[2],$t[1],$t[0],($msec/100));'"
return do shell script theCmnd
end getMilSecond
近づくリリース。リジェクトされないことを祈りつつ
お客様より依頼のあったiPhoneアプリケーション開発が、目下佳境に入っています。精力的に開発に勤しんでいる毎日です。
アプリケーションが出来たら、即リリースということになるわけですが、App Storeの審査を通らない場合には、修正のうえ再提出ということになります(以下、審査を通らないと繰り返し)。
目下開発中のアプリケーションには、iPhone搭載のカメラを利用する機能が搭載されているのですが、これがカメラの一部の情報しか取得しないものの、プレビュー画像を保存する仕様になっています。
プレビュー画像を保存するものは、(いくら切手大の小さな画像でも)「カメラ」として使えてしまいます。
そして、このアプリはカメラの一部の情報しか取得しないので「シャッター音」が鳴らないのです。
開発側に「これはカメラではありませんよ~」という意図があったとしても、客観的に見て「カメラアプリ」と判断することが可能です。しかも、撮影が無音でできてしまうカメラアプリです。
AppStoreの審査担当から見れば、「盗撮にも使える不届きなアプリ」ということに。
電車の中で、つい女性の魅力にさからえず、この撮影時に音が出ないアプリを悪用して、あらぬアングルからの撮影を行ったことがテレビや新聞で報道された日には、Appleのブランド価値は失墜してしまいます。
なので、そういう危険性のあるアプリを審査で却下する可能性があることは、十分に認識しています。
AppStoreの審査で却下される危険性が高いため、お客様と相談のうえ、カメラからの取り込み時にわざと音を鳴らすことにしました。そして、撮影時にシャッター音ではなくアプリケーションの名前をつぶやかせてみよう、という話になりました。
とはいえ、レコーディングスタジオを借りてプロのナレーターさんにお願いするわけにもいかないので、デスクの自分の席で「ぼそぼそ」しゃべってMacBook Proの内蔵マイク(画面の上に付いているもの)で録音。
そのまま職場で録音したので、部署内の他のPCの放熱ファンの音が盛大に入ってしまいます。慌てずさわがず愛用の「Sound SOAP」でノイズリダクションを実施。
最後に、フリーの音声編集ツール「Audacity」で音声をモノラル化したあと、再生速度を速くするなどの編集を加えてみました。なんとなく、それっぽく聴こえます。
リリース後、電車の中でその音が聴こえたら感動モノですが……くれぐれも、悪用されないでほしいです。
BeforeAfter評価版をダウンロードサイトに登録しました。
BeforeAfterの評価版を弊社ダウンロードサイト(https://www.web-cte.co.jp/tools/)に登録しました。こちらより取得してお試しいただけます。機能は製品版と同じです。評価期間は本日より2/25までとなっています。
この機会に是非お試しください。よろしくお願いします。
動作ムービーは下記画像をクリックください。
ルビクラウドサービス 年末年始のお知らせ
いつもご愛顧ありがとうございます。
弊社の看板開発サービス「ルビクラウド」のお知らせです。
誠に勝手ながら、2011年12月27日(火)〜2012年 1月3日(火)まで
お申し込み、サポート、体験版の配布につきましてお休みさせて頂きます。
新規ご契約、継続のご検討をされている方がいらっしゃいましたら、
12/26(月)までにご連絡頂ければ幸いです。
年末年始のお休み中にご連絡を頂きましたものに関しまして、
2012年1月4日(水)より順次ご返答およびご対応させて頂きます。
どうぞよろしくお願いいたします。(U)
イラストレータで株価チャート作成
鎌田です。ご無沙汰しております。
ここしばらく、Excelを入稿データとした案件が3つ程続いています。それをご紹介しようと思います。
今日ご紹介するのは、イラストレータでの株価チャート作成です。
株価チャート(ロウソク足)、移動平均線、売買高、信用取引残高です。
入稿データのExcelの値を拾って、イラストレータの座標値に変換してプロットしていきます。
座標値を計算して「グラフを書く」という点では難易度は高いものでははありません。
しかし、制作にあたって労したところは次の3点になります。
1. 「レイアウトが確定していない時点で設計を開始する」
受注させていただいた時点では、グラフを書く領域のサイズが確定していません。
サイズ変更に柔軟に対応できる必要があります。
2. 「株価の目盛単位は原則100円。10円未満の端数をださない。
かつ、グラフ作成領域に合わせて、できるだけ大きくグラフを作成する」
株価から最大値最小値は求められますが、それを3〜5分割して株価の目盛を作成します。
そのときに、10円以下の端数を出してはならず、区切りのよい目盛にする必要があります。
分割数、目盛の作成ルールはなく、これらについては全て制作側で決めないといけません。
3. 「信用取引残高は、白地と墨アミの二つの折れ線グラフを重ねるが…」
墨アミのグラフを背後に、白地のグラフを前面に配置します。
墨アミの数値が大きく、白地の数値が小さい場合、墨アミのグラフは表示されます。
しかし、逆の場合は、白地の背後に墨アミありますので、墨アミのグラフが見えなくなります。
この場合には、墨アミの折線グラフの「線部」のみを前面に表示し、アミを表示させません。
1について
グラフ領域のサイズと原点の持ち方を工夫することで、対応できました。
2について
これは大変苦労しました。分割数、目盛のルールはないので、グラフを作成してみての判断となります。
日経会社情報が参考になりました。
結局のところ、株価範囲が何円〜何円の場合、分割数幾つで、目盛幾つというテーブルを作成しました。
グラフを作成させ、できるだけ大きいグラフとなるよう、値を調整していくことを繰り返しました。
3について
このようなグラフを作成する場合どうしたら良いか?
イラストレータの使い手に相談したところ「パスファインダー」を使用すれば良いことが分かりました。
しかし、「パスファインダー」はスクリプトで制御できません。
ネットでググっていくと、次の情報を見つけました。
“Can javascript execute pathfinder commands?”
http://forums.adobe.com/thread/433284
これに基づいてスクリプトを作成し、無事動作させることができました。
時間がかかっているのは、信用残高の読込み部分です。年52週の値を10年分、売買いでその2倍、約1000行を読込んでいるためです。株価、売買高は、12ヶ月の10年分、120行ですので、瞬間で終わります。
他のエクセル入稿の案件については、その制作が終わったタイミングで後日、紹介できればと思っています。
よろしくお願いします。
【InDesignCS4】【Excel2008】スクリプト2件ご紹介
InDesignCS4:全てのリンクをLinksフォルダの同名のファイルに置換
InDesignのリンク画像は、絶対パスで管理されているらしく、親フォルダの名称を変更したり、別フォルダに移動したりすると、次にドキュメントを開いたときにリンクが切れてしまっている場合が多いです。
リンクパレットから再リンクボタンをoptionクリックしてフォルダを選択し……とすると再リンクはできるのですが、ドキュメントの数が多いとそれも面倒なのでこのスクリプトを作成しました。
ドキュメントがパッケージされており、最新の画像データがドキュメントと同一階層の「Links」フォルダにあることを前提にしています。
ドキュメントを開き、このスクリプトを実行すると、全てのリンクをLinksフォルダの同名のファイルに再リンクします。
スクリプト名:全てのリンクをLinksフォルダの同名のファイルに置換.scpt |
tell application “Adobe InDesign CS4″ tell document 1 set myPath to file path as Unicode text set linkPath to myPath & “Links:” as Unicode text set allLinks to object reference of every link repeat with aLink in allLinks tell aLink set filePath to file path as Unicode text set itemName to item -1 of textToList(filePath, “:”) of me set newLink to linkPath & itemName as Unicode text set newLink to newLink as alias relink aLink to newLink end tell end repeat end tell end tell – —————————————————––テキストをデリミタでバラしてリストにして返すルーチン –—————————————————– on textToList(aText, aDelim) set retList to {} set oldDelim to AppleScript‘s text item delimiters set AppleScript‘s text item delimiters to aDelim set retList to every text item of aText set AppleScript‘s text item delimiters to oldDelim return retList end textToList |
▼新規書類にペースト ▼カーソル位置にペースト ▼ドキュメント末尾にペースト |
Excel2008:タブ区切りテキストを全列文字列フォーマットで開いてxlsで保存
UTF16BEのテキストを前提にしています。スクリプトを実行するとダイアログでファイルの選択を求められます。複数選択可能です。
選択したファイルを全て、全列文字列フォーマットで開いて、テキストファイルと同じ場所にxls形式で保存します。saveAsXLSX内の、「–xlsx形式」のコメントがついている行をアンコメントするとxlsx形式で保存します。その際は「–xls形式」のコメントがついている行はコメントアウトしてください。
スクリプト名:タブ区切りテキストを全列文字列フォーマットで開いてxlsで保存.scpt |
set tgtFiles to choose file with prompt “Excel形式で保存するテキストファイルを複数選択” with multiple selections allowed
repeat with tgtFile in tgtFilesset tgtFile to tgtFile as Unicode text openTabTxt(tgtFile) of openTabTxtKit –タブ区切りテキストを全列文字列フォーマットで開く saveAsXLSX(tgtFile) of saveAsXLSXKit –active workbookを指定のフォルダに保存 end repeat – —————————————————––タブ区切りテキストを全列文字列フォーマットで開く –—————————————————– script openTabTxtKit –タブ区切りテキストを全列文字列フォーマットで開く on openTabTxt(tgtFile) tell application “Microsoft Excel” set aDelim to tab set aFormat to text format set cntLabel to getCountLabel(tgtFile, aDelim) of me –テキストの一行目から,列見出しの数を取得 set fieldInfo to getFieldInfo(cntLabel, aFormat) of me –field infoを取得(全列text format) (* open text fileのパラメータ: data type delimited:区切り記号付き text qualifier text qualifier double quote:文字列の引用府=ダブルクオーテーション tab true:区切り文字=タブ *) open text file filename tgtFile data type delimited text qualifier text qualifier double quote field info fieldInfo with tab end tell end openTabTxt –field infoを取得(全列統一限定) on getFieldInfo(cntLabel, aFormat) tell application “Microsoft Excel” set fieldInfo to {} repeat with i from 1 to cntLabel set the end of fieldInfo to {i, aFormat} end repeat return fieldInfo end tell end getFieldInfo –テキストの一行目から,列見出しの数を取得 on getCountLabel(tgtFile, aDelim) set tgtFile to tgtFile as alias set inTxt to readFile(tgtFile) of me set aLabel to paragraph 1 of inTxt set aLabelList to textToList(aLabel, aDelim) of me set cntLabel to count of aLabelList return cntLabel end getCountLabel –テキストファイル読み込み(UTF16限定) on readFile(tgtFile) set aTxt to read tgtFile as Unicode text set aTxt to aTxt as Unicode text log aTxt return aTxt end readFile –—————————————————– –テキストをデリミタでバラしてリストにして返すルーチン –—————————————————– on textToList(aText, aDelim) set retList to {} set oldDelim to AppleScript‘s text item delimiters set AppleScript‘s text item delimiters to aDelim set retList to every text item of aText set AppleScript‘s text item delimiters to oldDelim return retList end textToList end script – —————————————————––active workbookを指定のフォルダに保存 –—————————————————– script saveAsXLSXKit on saveAsXLSX(tgtFile) set tgtFol to getParentFol(tgtFile) of me –親フォルダを取得 tell application “Microsoft Excel” tell active workbook –ファイル名から保存名を取得 tell active sheet set aName to name –set aName to replaceText(aName, “.txt”, “.xlsx”) of me –xlsx形式 set aName to replaceText(aName, “.txt”, “.xls”) of me –xls形式 set saveTo to tgtFol & aName as Unicode text end tell –xlsx形式で別名保存 –save as active sheet filename saveTo file format workbook normal file format –xlsx形式 save as active sheet filename saveTo file format Excel98to2004 file format –xls形式 end tell close active workbook end tell end saveAsXLSX on getParentFol(tgtFile) set tgtFile to tgtFile as alias tell application “Finder” set tgtFol to parent of tgtFile set tgtFol to tgtFol as Unicode text end tell return tgtFol end getParentFol –—————————————————– –文字置換ルーチン –—————————————————– on replaceText(origText, targetText, changeValue) set delim to AppleScript‘s text item delimiters set AppleScript‘s text item delimiters to targetText set str1 to text items of origText set AppleScript‘s text item delimiters to changeValue set str2 to str1 as string set AppleScript‘s text item delimiters to delim return str2 end replaceText end script |
▼新規書類にペースト ▼カーソル位置にペースト ▼ドキュメント末尾にペースト |
記事投稿日
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
« 9月 | ||||||
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |