2010/01/04

PCスピーカー~BSSP06MA

すっかりJangoなどの音楽サービスにハマってしまったワタクシ。iPhoneともつなげるPCスピーカーがあれば、Y!Musicアプリからストリーミングも流せちゃうなぁ、なんてことをコトを考えながら家電屋をウロウロ。

大型家電店だと、ズラリとPCスピーカーが並んでいて、音を聴き比べることができます。「そんなに高いものでもなさそうだし、自分がいいと思う音を選ぼう」と思って、あれこれ視聴した結果はコレ。BSSP06MA。──「なんでスピーカーでわざわざバッファローなのよ」と周囲からは絶賛ツッコまれ状態でしたが。

ほどほどのサイズ(←私にとってはコレ、かなり重要)と、ほどほどの音と、ほどほどの価格──という3つ指標のバランスの結果です。

音についていえば「やはりある程度のサイズのあるスピーカーが低音もしっかりしていていいなぁ」ということが聴き比べの結果、歴然としていましたが(価格よりサイズの方がモロに音に影響しますね)。低音を響かせすぎると、聴いている本人は気持ちがイイけど、周囲からはウルサイと云われますからね。

  • なるべく小型で
  • ほどほどにナットクできる音で
  • 電源はPCとは別で(なぜならPCを起動せず、iPhoneをつなぐこともあるから)
  • 音量調整もスピーカー単体でできて
  • 外部入力ジャックでiPhoneなんかともつなげる

という私の要件を満たしていたのが、BSSP06MAだったというわけなのです。

これまではディスプレイのスピーカーで音を出すというかなり貧弱な環境に甘んじていたわけですが。3,000円程度の投資でもさすがにスピーカーだけあって、マッタク違う音がするのでかなり満足感のある買い物になりました。

2010/01/02

Jango~自分好みの洋楽ステーション

iPhoneになってからというもの日々アプリを見ているのが楽しくて、「世の中にはこういうサービスもあるんだ」とアプリを眺めて知ることが増えてきました。

洋楽TOP100だとかのフリーのストリーミングサービスのアプリもちらほらみかけ、当初はiTunesのラジオで洋楽等を聞いていたものの、PC向けにもっと他にも似たようなサービスがあるんじゃないかしら、と思いたって探索したらありました、ビビビッとくるWebサービスが。

Jangoです。

Jangoの特色は自分好みのステーションを持てる、ということです。いつでも好きなときに好きな曲を聞ける、というわけではありませんが、アーティストを登録していると、その中の楽曲や、またこの趣味のヒトはこの楽曲も好きに違いない、というオススメの楽曲などをとりまぜてストリーミングしてくれるのです。おまけにSNS的なサービスもあって、他の人が作ったステーションを聴いたり、メッセージを送ったりすることもできるんですね。

さらにお気に入りのアーティスト15人をピックアップして、ジュークボックスを作ってBlogパーツにする、なんてサービスもあったりします。

洋楽好きの人にはとてもオススメ。Chromeで「アプリケーションのショートカット」を作っておくと、アプリみたいだし、iTunesより起動は早いし、しかも自分好みの楽曲ばかり流してくれるという…。フリーでこんなにガンガン洋楽が聴けていいの?──と思うわけですが、Helpを読むと合法です。

Is Jango legal?

Jango is totally legal. We're an internet radio service following all restrictions of the Digital Millennium Copyright Act (DMCA) and pay royalties due to all labels/artists every time a song is played.

ネットラジオという立場のようで、楽曲を流す度にアーティストやレーベルにロイヤリティを払ってくれているみたいです。

気にった楽曲があればiTunesかAmazonで買うこともできるようなので、広告とその辺で収益をあげる、というモデルなんでしょうかね?

とりあえず、ぽやんと流しておくにはとてもイイです。おかげで、貧弱だった音響環境に少しゲタを履かせて、私はPCスピーカーを購入しました。(続く)


▼とりあえず、ワタクシのJukuBoxも作ってみました。気になるジャケットをクリックすると、そのアーティストの楽曲が再生されます!


2009/12/13

DoYouFeed.com

DoYouFeed.comというサービスを使って本サイトもiPhoneデザインに"なんとなく"対応してみましたよ。

DoYouFeed.comはFeedを流すだけで、iPhone向けレイアウトを吐いてくれるというサービス。

まぁGoogleからの検索でダイレクトに各記事に飛ぼうとして、iPhoneを選んでしまうと(分岐)、トップページに飛ばされてしまうので。一長一短な感じですけどね。

2009/11/28

Pocket InformantVer1.11のアラームまわりの実験結果

ブラックフライデーでPocket InformantのiPhoneアプリがセール(800円)になっていたので、早速購入しました(ver1.11.08)。細かい設定は他のサイトを参考にしていただくとして、他サイトで結構、欠落していたのアラーム情報の実験結果をまとめてみたいと思います。

iPhoneのOSでは現状、サードパーティのデベロッパーにカレンダやアラームシステムにアクセスを許していません。

ですからサードパーティ製品でアラーム機能を利用する場合には、Push Alarms機能を使う必要があります。つまりiPhoneの対応が変わらない限り、一律、サードパーティ製品ではネットワーク接続なしでは、アラーム機能は使えません。

ネットワーク接続なしで、アラームを使うということを念頭に実験してみたところ、下記のような結果になりました。

  • 標準カレンダでイベントを登録者する→◯
  • Googleカレンダでポップアップ通知のイベントを標準カレンダとシンクする。→◯
  • Googleカレンダでポップアップ通知のイベントをPocket Informantだけシンクする。→×
  • Googleカレンダでモバイル・メール通知して標準カレンダとシンクする。→×

…私の場合、平日日中はネットワーク接続に恵まれないので、ホントにiPhoneで通知が必要なイベント事項は標準カレンダでイベント登録して通知を設定するのが実は一番手っ取り早そう──という、「なんだかなー」という結果に(iPhoneがカレンダー/アラーム機能との連携を許さん!と云っているわけですから、しょーがないけど。どのアプリを使っても、結局この壁にぶつかるわけで…)。

ネットワーク接続可能の環境下でアラーム機能を使う場合には、選択肢も広がるんですけどね。

Pocket Informant/標準カレンダでいちいちシンクしなくてもカレンダに関しては、メール/モバイルで通知はくるわけですから。

ToDoのに関して言えば、Push Alarms機能でアラームがくるわけですし。

ちなみにPocket InformantのPush Alarms機能を利用するには、[設定]-[通知]で[サウンド]/[警告]をオンにする必要があります(Push Alarms機能はネットワーク機能ですから、タスクを登録した後はシンクしてください)。でもネットワーク接続出来ない環境では当然通知はきませんのでご注意。

memo

Pocket Informantの公式サイト:http://www.pocketinformant.com/index.php

公式サイトにはPDFでマニュアルもあるので、なんだかんだいってこれを見るのが早いかも…。

App Storeへのリンク

2009/11/11

Googleの「日本の祝日」を同期するiPhoneの標準カレンダで同期する方法

googleのおすすめカレンダーにある「日本の祝日」をiPhoneの標準カレンダにCalDavで同期するときの設定って

https://www.google.com/calendar/dav/ja.japanese%23holiday%40group.v.calendar.google.com/user

だったのですね。

カレンダID「ja.japanese#holiday@group.v.calendar.google.com」でそのまま試みてエラーだったので、これまで諦めて別のカレンダーを当てていましたよ。あーすっきりしたぁ。

2009/11/05

続・Twitter-Trending topics

ニュース等でのTwitterの速報性の記述はみていたものの、早速目の当たりにしました。Twitterすごーい。

流行トピックがどーしても気になって仕方のない私ですが、今日の前半はT-Mobileネタで盛り上がっていましたよね。USでダウンしたようでKill!とかFuck!とかhate!とかみなさん罵ってて、感情の発露を楽しんでいました。で、ちらちらとその間にも#IranElectionのハッシュダグは気にはなっていたんですが。#IranElection関連はすごい勢いで伸びてましたね。流行のトピックにずらずらっと並んでいた#13abanとか#Tehranとかは全部一緒のネタ。テヘランでの政府公認の反米デモと、非公認の反政府デモの話で、どんどんツイートが更新されていくわけですよ。その中のひとつのつぶやきにguardianのコトが書いてあったので、Guardianへとんだら実況報告・まとめページがありました。わー、ニュースソースはTwitterとかだよ。もはやそんな時代なんだ…。渦の中からのレポとはいえ、Trending topicsとかで引けるし、こりゃすごいなぁと。いまさらですけど体感しましたね。

2009/11/03

Twitter

これまであまり食指が伸びなくてひたすらスルーしてきましたが。先日、やっとTwitterのアカウントをとりました。

iPhoneユーザーになって、やたらとTwitter絡みのアプリも見かけますしね。さすがに無視できなくなってきた、というところ。

で、始めてみたら。これは結構、面白いですね。体験しないとやっぱりこの面白さはわからないですね。

つぶやくつぶやかないはともかく、短縮URLだとかのロジックなんかにもつい思いを馳せて、ワクワクしたし。

流行トピックだとかも。検索結果でつぶやきがわーーッと更新されていくのをみていとリアルタイムで「うわー動いている動いている!更新されてくー」という胎動も感じられて。これが結構楽しい。

140字だと英語のつぶやきも気楽に読めて、流行トピックのつぶやきなんかはテーマが絞られているので読みやすいし、見ているだけでも結構楽しいです。

というわけで、右側にオレンジの鳥マークってわけです。

2009/10/04

Googleリーダー

iPhoneユーザ-なったので、近頃GoogleReaderをごそごそと。iPhoneのRSS系のアプリにはGoogleReaderと連携するツールが結構あるんですよね。iPhoneアプリについて色々みてまわると、GoogleReaderへの言及も多いので、ふーんと、好奇心。

これまではRSSは、Operaでシンプルにローカル管理(RSSがないサイトは「はてなアンテナ」に登録、という使い分けでやっていました。しかしこれだと当然、マシンが変わると共有できませんからね。

イマイチ、使いづらいなぁと思って、遠ざかっていたReaderの研究です。レイアウトは相変わらずあまり好きになれませんが、機能は結構スゴイような気がしますね。

しかし機能がありすぎてイマイチわからないことも。コメントとメモ機能の違いってナニ?コメントは公開サイトには表示されないようですが、じゃぁどういうときに活用するのか?というとよくわかりませんな。ま、使っていくうちにそのうちわかるでしょ???

とりあえず、メモ共有等は面白そうなので、自分の共有アイテムをlogbookからもリンクすることにしました(画面右下のウィジェットより)。


で、現状私のRSS環境はどうなってしまったかというと、今後もOperaはOperaで使ってゆくだろうし(読みやすいから)、はてなははてなでRSS未対応のサイトに対して使ってゆくだろうし(はてなのフィードをGのリーダーに突っ込んだので、はてなアンテナまでダイレクトに見に行く必要はないかな?)。Googleリーダーは主にiPhoneでのヴューアー、及び、メモ機能の為に利用することになるような…?

アンテナくらいひとつにしたいような気もしますが、それぞれ使いやすさもあり、ひとつにできないこのもどかしさ…。(-_-;)

2009/09/26

ソフトバンク同士

▲iPhoneでのメーラー設定画面の一幕。「アカウントの追加」する際、gmailもこんな感じで、選択しやすい画面なのですヨ。

ソフトバンクの友達にiPhoneからgmailでメールを送ったら、フツーに迷惑メールにされました。

ソフトバンク同士なのにー。

どーゆーこと? ヽ(`Д´)ノ

iPhoneの絵文字

docomoの友達からメールがきたと思ったら、やたらとハートだのクジラだのの絵文字。

…クジラ? 

こんなにファンシーなメールを書くコだったっけ?

と思っていたら。

docomo→iPhoneの絵文字では、だいぶテキトーに変換されているようでした。

PCのwebブラウザでgmailを見たら、そこには笑顔、汗つき笑顔の絵文字(gmailは一応絵文字対応ですから)。

クジラよりも断然、文脈に合っている絵文字。…全然違うじゃん!!

ちなみに「iPhoneでも絵文字を使えるようになった」というハナシでしたが、iPhone: 絵文字キーボードの使用についてを読むと絵文字を送信できるのは、SoftBank のメールアカウントおよび SoftBank SIM を使っている、OS バージョン2.2 の iPhone のみとありますので、現状メアドでは「i.softbank.jp」アドレス以外は絵文字はうてないようですね(SMSとかならうてますけど)。

2009/09/21

Delivery Status Notification (Failure)

iPhoneになって、gmailを使っているのはいいんですけれど。

MLとかは気が向いたときに読む程度なので、即時的にお知らせがこなくてもいいや、と思って。gmailのフィルターを使ってML以外のメールをi.softbank.jpのメアドに転送して、プッシュ型っぽいコトを実現しているわけですが。

ときどき「Delivery Status Notification (Failure)」のメールがgmailに残っているんですよ。(;´Д`)

gmailはi.softbank.jpに転送したけど、i.softbank.jpに断られた?みたいな内容なわけで。i.softbank.jpにgmailがスパム扱いされている?

gmailにメールは残っているので、iPhoneからつなげば見えるし、PCからも繋げばフツーにメールは見れるわけですが。

ググってみたところ、5月くらいにもiPhoneユーザーの間ではそんな騒ぎがあったようで。しかし、それがどう決着したのかは不明。

自分の状況を分析して見ると、どうやらgmailの特定の拡張アドレスを使っているヤツだけがエラーになっているフシはあるんですけれどね(ちなみに拡張アドレスものは殆どMLで使っているので、私本人としては転送設定していないつもり。なのになんで転送しようとしちゃうのかな。私がフィルターの設定を間違えているっぽな…)。しばらく様子をみてみましょう。

2009/09/18

.NET 開発テクノロジーの全体像

Tech Fieldersの『.NET 開発テクノロジーの全体像』というセミナーに行ってきました。そしたら下記の本が当たってしまいました!今年の運、使いました?あと3ヶ月くらいだから、ま、いっか?

肝心のセミナーはある程度覚悟はしていましたが正直言って、殆どわかりませんでした。本読んで勉強しなくちゃ…。(;´Д`)

予想通りASP.NETのデモばっかりで、Windowsフォームはレガシーテクノロジー扱いでしたし。C#なのはまぁいいのですが、ある意味、VSの使い方自体についていけてない感じでした。.NETFramework3.5くらいからかなりライブラリが増えたコトだけは認識しましたけどね。

ASP.NET MVCの話は、それってRuby on Rails?という気がしましたが、この辺の私知識はCakePHPとかの解説をさらーっと読んだことがあるくらいのものなのでただの勘。ただ"設定より規約”(convention over configuration)とかの科白はさすがに聞き覚えありますからねぇ。名前付けのルールとかもなんだか見覚えあったし。Windwosフォームばっかり作っている身からすると、こーゆーのってある意味勝手に優秀なIDEがやってくれているものだから、意識してないようなところがありますが。

PHPなんかはエディタで頑張るからきっと大事なんだろうネ!?(Rubyも?)効果が出やすいんだろネ!?

MVCはそういう非IDEな環境から生まれた発想なんじゃないかなー?という気もしましたが、どうなんでしょう?でも、MSもIDEがありながらそれに、この度追随しました!?というところ???

もっとも、ASP.NETはどーもとっつきにくくて、VSユーザーのわりに手を染めていません。ASP.NETのどの辺が食いついていけないところかというと、HTMLのデザイン部分ですよ。「HTML=タグうち」育ちなので、まるきりWindowsフォームみたいにコントロールを置くというお作法に抵抗が…。ASP.NET MVCについては、UIは完全にHTMLベースになったようで、個人的には好印象。

というわけで、今後のASP.NETではWebフォームでの開発と、このMVCの開発の選択肢があるというわけですね。でもまー、「MVCはWebフォームに置き換わるものではない」そうなので、どっちの選択がベスト・チョイスなのか、というのは、その場のシチュエーションによるものらしい…(←受け売り)。


ADO.NETはいまだにVS2005ユーザーだし、LINQさえも使ってない私としては未来すぎました!(バッチ処理が多い私には、LINQは遅いし所詮無縁なテクノロジー!!というのが去年の悟り)

ADO.NET Entity Frameworkの構造はなんとなーくわかったけど。DBもそりゃ切り替えやすいでしょうけど。あのリレーションの図を書くようなところを変更するような自体になったら結局大変なんじゃん??とか思ってみたり。


Azureの話は難しすぎた!11月までは無料お試しができることだけはわかった!

あとAzureではKey-Valueストアがデフォルトで使えるのね。Key-Valueストアとかはgoogleとかで有名になっているアレでしょ?(アレってなに?)


ちなみにLTは大分面白かったデス。

シリアル通信のヒトとかも、面白すぎでしょ。あと、病名のコード化とかも、なぬなぬななぬ?!という感じ。形態素解析のようなことを病名でやるのだねぇ。…しかもSQLで。詳細はよくわからなかったけど、そーゆージャンルもあるんだ、という感じ。

ネタ的には、私よりも未来のコトを語っている後半の二人(一人はデータアクセスの歴史、も一人はSilverlightの国際化)よりも、面白かったりして。まぁ後半の若手二人の方が、プレゼン自体は上手だったけどネ!

プロバイダ考

Gigazine.netを読んでいてたまたまこんな記事が目にとまりました。

なぜ追加料金なしの格安で固定IPが利用できるのか、ユーザー目線のサービス「livedoorプロバイダ」の秘密に迫ってみた

「あら、固定IP…」と思って、読みはじめたわけですが、livedoorプロバイダのサイトにとんだらなんか公衆無線LANのことも書いてある!(←そっち?)
iPhoneになった今や、FONとか公衆無線LANにすごく興味があるわけですが(3Gで使い倒す!というのも一つのあり方ですが、Wi-Fiの方が早いですから…)。
ライブドアと契約すると
livedoorwireless(市街地に強い)+FON(住宅街に強いし海外でも使える!)
が使えちゃうのかー。
月額料金は
プロバイダ料金1,500円+フレッツ光5,000円くらい(←戸建の場合。マンションだと3,000円くらいらしい)
だとするとウチの場合6,000~7,000円くらいの見積もりですな(戸建てのフレッツは高いなー)。
ウチの場合、CATVのパック料金で賄っているので(TV+電話+ネット)、ネットだけのことを考えるとプラス2,000円ちょっとくらいの出費…。)。今より劇的に回線速度は速くなるけど、ウチの機器はほぼ無線で繋いでいるから、現状ではそこまで回線だけ早くなっても効果は薄いし。ルータはー11nで使えるけど、子機はウチの機器は今のところどれもこれも対応していませんので…。3Gの使い方にもよるけれど、かなり微妙な選択ですな。Wi-Fiのエリアが増えるのは嬉しいけれど、プロバイダの「ついで」だから嬉しいというレベルであって、現状、3Gほど広範囲なわけではありませんしね。回線+プロバイダ料金が合計5,000円程度でおさまるなら、livedoorに乗り変えもアリかなーと思いますが、2,000円以上のUPとなるとヨドバシの公衆線無線LANを申し込んだ方が安いし…。戸建のフレッツ高すぎ。(;´Д`)

ただこういうプロバイダが今後増えてきたりするのかなーとは認識しました。グローバルIPはともかく、公衆無線LANも使えまっせ!!というプロバイダは他にもありそうですね(SoftBabankもある程度は使い放題で提供していますけどね)。

2009/09/14

iPhoneことはじめ

今年の4月に、家のルータを新調・いじり倒したことも、iPhone購入の要因として大きいですね。2年契約の縛りが切れるのを待って、auからのりかえ。

iPhoneもラク~に家の無線に接続できたので、家ではつなぎ放題、ということに!!

メール

iPhoneといえば、ケータイと比較されてなんのかんのと云われているメールの設定ですが。

私はもともとGmail主体の人間だったので、とりあえずこんな具合で設定。

  • Gmailをフェッチの「手動」に設定。
  • Gmail でフィルター設定して任意のものだけ、i.softbank.jpのアドレスへ転送(私の場合、Gmailを主体で使っているので、MLやらもガンガンくるわけですが、それはリアルタイムでの着信など受け取りたくないので、フィルター設定は必須)。
  • i.softbank.jpはプッシュなので、リアルタイムで「You got a mail」が表示されるように。
  • 着信に気が付いたところで、おもむろにgmailをチェックすればよい。

もともと、前のキャリアのauでも件名着信で、本文は読むときに受信していたので、この設定だと違和感が限りなくゼロに近いですね。

ちなみにi.softbank.jpのアカウントは設定していません(というか色々やったものの、削除してみた)。

アカウントを設定する必要があるのかと思いましたが、設定しなくても、着信はくるようですね。

i.softbank.jpにはメールが溜まることにはなりますが、どーせ30日間保存なので、着信専用でまぁいいや、と割り切りました。

i.softbank.jp のアカウントを設定すると、メールのアイコンのヨコに未読件数がgmailの分とi.softbankの分が倍増して表示されるわけですが、i.softbankのアカウントを削除すると、gmailでの未読の件数のみが表示されてスッキリするわけですね。

iTunes9

バージョンアップしたら大変なコトになりました。AppleStoreが文字化けしまくりで、PCからは使い物になりません。iPhoneからアプリを落とせばいいとも思いましたが、やはり気になる…、というコトでググってみると。XPでJIS2004 対応 MS ゴシック & MS 明朝フォントパッケージをあてていると、文字化けするんですって。JIS2004…。あぁいれちまったさ!!

家ではこだわっていませんので、あっさりアンインストール作業を行いました。

手順等詳しくはこちらを参照しました。

2009/09/13

iPhoneゲット

こんにちは、今年の夏休みをスウェーデンで過ごして、モバイルに目覚めてしまったじょにですよ(?)。

これまで「モバイルなんてしないもんね」と割り切っていてケータイも使いこなしていなかったわりに、ここへきてあっさりiPhoneに乗換え──変わり身の早さに、周囲は呆れ気味。

でも!!だってねぇ?!北欧ときたらモバイル先進国ですからね。

これまで私が旅してきた国々では(トルコ、エジプト、コスタリカ、キューバetc…)、ネットカフェにはでーん!!とPCがあったのに。

北欧ときたら提供されているのは無線LANポイントだけで、実機がある場所が殆どないんですよ。非モバイラーの旅行者としてはメールチェックすらなかなかままならない事態に。しかし現地の人々を観察すれば、それぞれネットブックだのモバイルを持っていて困ってない模様。

「去年のキューバはディスプレイもCRTというレトロな世界でネット・カフェ自体殆どなかったけど、今年の旅は先進国だし…」と思って軽くみていた私が甘かった!!

今度は先進すぎて、いわゆる私が求めている「ネット・カフェ」が、ストックホルムでは存在しなかったのです。

マシンがあっても、管理人不在向けのハードからして特殊仕様・先進的すぎ(自販機でID/パスワードを発行 or クレジットカードで接続…とかそんなノリ)。

トルコやコスタリカのはカフェならば、大抵ネット・カフェには管理人がいて、A~Cのマシンは日本語入れて、B~Dのマシンは中国語担当して…とマシンごとに言語を割り振っていて、日本語使いたい旨を告げるとマシンを、どのマシンを使えと割り当ててくれたわけですよ。やっかいな外国語の旅行者にとっては、とてもフレンドリーな環境で。XPの言語環境はベンリになったもんだなーと思っていたわけです。

ところが北欧のネット・カフェは無人!XPも特殊カスタマイズ!ハードもいわゆるPCと違うネット・カフェ専用機!見るからにゼッタイ、日本語ムリ!メールなんて殆ど日本語ばっかりだから、殆ど文字化け!!

年々、国際空港ではLANのポイントのまわりにバッグパッカーだのが座り込んで自分のマシンを繋いでネットやっている姿をみかけることが増えたなー、そろそろ私もなんらかのモバイルをもつべき?──とはぼんやり去年あたりから考えてはいましたが。モバイル先進国へ行って、カルチャーショック。一気にギアが入りました。

auの2年契約がこの9月で切れるのを待って乗り換えと相成りました。…これってストックホルム症候群(違)?

2009/09/01

Opera10

これまでOpera9を利用していましたが、10の正式版がリリースされたということでバージョンアップしてみました!
普段はOperaでサーフィンして、会社ではChromeで作業、家ではFireFoxで作業、みたいな住み分けをしている、たぶんマイノリティなワタクシ。
メインのわりにバージョンアップに対して怠惰なのは、iniファイルをいじり倒しすぎて、その辺のカスタマイズをしなおすのが面倒くさいから(※iniファイルやcssをいじる気さえなくせば、Operaのバージョンアップはスムーズです。デフォルト設定のカスタマイズであれば、きちんと移行しますし。…しかし私の場合、メインだからこそいじり倒したくなるのです!)。
今回も[standard_menu.ini]が移動していて、一瞬、おろおろしましたが[ui]フォルダにちゃんといました。書き方は細々かわっているぽいけど、昔ながらの書き方でもいけるみたいですね。
ウワサのTurboは…、これってホントに速いんですかね???むしろ[無効]にしてサーフィンした方が動作が軽い気がするのは私だけ?(画像もノーマルにきれいだし。Turboを使わないデフォルトでも、以前より描画は早いと思います)
気になるUnitの機能は10.10で搭載されるようですね。

2009/08/18

全角ハイフン(U+2010)の欠落

VS2005でActiveReportsを使って開発していたら(XPPro環境デス)、住所に入っていた全角ハイフンが消えちゃった!Y(>_<、)Y

データでは「‐」(全角ハイフン)があるのに、プレビューすると消えている。──あー、そういえば以前、パンチ会社を変えたときに、師匠たちが一瞬大騒ぎしていたような記憶アリ。"たしかあのときは「-」(全角マイナス)に置換してしのいんだんだっけ?"と思いだして、デスマーチの手伝いの真っ只中ではとりあえずそれで凌ぎましたが。


徹夜明けて、落ち着いてくるとビミョーにひっかかってきたので、多少ググってみました。

すると出てきた…。

Windows Server 2008、Windows Vista、Windows Server 2003、および Windows XP で GDI+ API 関数を使用するアプリケーションを使用すると、Unicode ハイフン文字 (U+2010) が描画されない

原因

この問題が発生するのは、GDI+ が日本語の全角ハイフン (U+2010) の Unicode コード文字を描画しないためです。代わりに、GDI+ は文字をソフト ハイフン (U+00AD) として描画します。しかし、U+2010 コードは、ハイフン マイナス文字 (U+002D) として描画される必要があります。


なんだこりゃ。(-_-#)

つまりGDI+を使っているヤツではU+2010は全滅ってわけですか…。修正プログラムも出ているっぽいけど。こんなのイチイチ、マシンに入れて歩いてられないよなぁ(運用前後はバタバタしているから入れ忘れそう)。印刷レベルでは全角マイナスで頑張るしかないか。

2009/06/18

Excel MOD関数で#NUMエラー

「ExcelのMod関数(割り算の余りを求める関数)を使うとエラーがでるんだよ」という相談を受け、問題のBookをもらって眺めてみたところ。

割られる数の桁が妙に多い。

「なんかそれって怪しいなー」と思って、試しに割られる数の桁を少なくすると、ちゃんとMod関数は機能する。どうやらMod関数では、割る数が1桁の場合、おおよそ9桁前後で#NUMエラーが出てくる模様。ウーム、と思ってMod関数の割られる数の上限を求めてググってみると、MSのサイトにちゃんと原因・解決法が書いてありました。

原因は、これ

#NUM! エラーが返されるのは、以下の条件に該当する場合です。 (除数 ' * 134217728) が、数値' 以下です。

ここでいう数値'というのは、割られる数のコトですね。

たとえば1234567890 ÷ 7のケースを考えてみると、

7 × 134217728 = 939524096

割られる数1,234,567,890よりも939,524,096の方が小さいからアウト、というわけですな。

それじゃぁ桁数が大きいときに、MOD関数を使わずに余りを求めたいときはどうすりゃいいの?というのは簡単(上記のリンク先のヘルプにも書いてありますけど)。

1234567890 ÷ 7のケースで考えるならば、

1234567890 -(INT(1234567890/7)*7)

でOK。INT(1234567890/7)で商を求めて(INT関数で小数点以下を無視している)、除数で掛け算して、割る数から引けば、そりゃ余り。

2009/05/31

PDFCreator日本語問題まとめ

いろいろありましたが、まとめ、いきましょう。とりあえずPDFCreatorのverは0.9.8になります。

PDFCreator0.9.8 (日本語対応バイナリ配布)

コンパイル環境のない方の為に、やすさんからいただいたバイナリとソースをUPしておきますね。やすさん、ありがとう!

配布
  1. PDFCreator0.9.8 (日本語対応exeファイル)
    PDFCreator_0516.zip
    (MD5 : 91ae1b27a964be1cfdbd111b286e445f)
  2. 参考 PDFCreator0.9.8(上記ソース)
    Version 0.9.8_090516.zip
    (MD5 : db8944afaa2e672b31d9f66a8a473060)
使い方
  1. 本家からPDFCreator0.9.8をDLしていただき、一旦インストールします。
  2. その後、PDFCreator.exeを上記1.の日本語版exeファイルと差し替えます。
動作環境の報告

当バイナリは、W2K(SP4)/XP(SP3)での動作が確認されています。

Vista(32bit SP2)環境では、"VB6JP.DLL"をインストールする必要があるようです(これはVisual Basic 6.0 SP6あたりのランタイムを入れれば入ると思われ…)。

Ω Ω Ω

以下は上記ソースにいたるまでの解説・経緯のまとめになります。本家でバージョンアップがされたときのために…。

メニュー画面の日本語化について。

  1. PDFCreatorの文字化けをなおす…必須
  2. PDFCreatorの文字化けをなおす2…小手先
  3. PDFCreatorの文字化け問題-修正箇所発見…Vb6.0でコンパイルできるヒト向け(これで完璧に)

PDF情報の日本語入力について(※すべて、VB6.0でコンパイルできるヒト向け)

  1. PDFCreatorの日本語問題-PDF情報編2
  2. PDFCreatorの日本語問題-PDF情報編…(2)EncodeCharsについての部分のみ利用してください

2.の記事にある「(1)ReplaceEncodingCharsについて」は不完全だということがわかりましたので、以下がやすさんの差し替えソースです。

[Common]-[modPDF.bas]

Public Function ReplaceEncodingChars(Str1 As String) As String
'---ErrPtnr-OnError-START--- DO NOT MODIFY ! ---
On Error GoTo ErrPtnr_OnError
'---ErrPtnr-OnError-END--- DO NOT MODIFY ! ---
50010  Dim i As Integer, tStr As String
'---2009/05/16-START--- by yasu
       Dim bStr() As Byte
       Dim j, k As Integer
'---2009/05/16-End--- by yasu
50020  tStr = ""
50030  ' First we look for oct encoding chars
'---2009/05/16-START--- by yasu
'50040  For i = 127 To 255
'50050   Str1 = Replace$(Str1, "\" & Oct$(i), Chr$(i))
'50060  Next i
50070  ReplaceEncodingChars = Str1

        j = 0
        ReDim bStr(Len(Str1))
        For i = 1 To Len(Str1)
        Do
            If Mid$(Str1, i, 1) <> "\" Then
                bStr(j) = AscB(Mid$(Str1, i, 1)): j = j + 1
            Else
                If i <> Len(Str1) Then
                    If Mid$(Str1, i + 1, 1) Like "[\{}()]" Then
                        bStr(j) = AscB(Mid$(Str1, i + 1, 1)): j = j + 1: i = i + 1
                        Exit Do
                    End If
                End If
                If Len(Str1) - i > 3 Then
                    For k = 1 To 3
                        If Not Mid$(Mid$(Str1, i + 1, 3), k, 1) Like "[0-9]" Then
                            Exit For
                        End If
                    Next
                    If k = 4 Then
                        bStr(j) = CByte("&O" & Mid$(Str1, i + 1, 3)): j = j + 1: i = i + 3
                    Else
                        bStr(j) = AscB(Mid$(Str1, i, 1)): j = j + 1
                    End If
                Else
                    bStr(j) = AscB(Mid$(Str1, i, 1)): j = j + 1
                End If
            End If
        Loop Until 1
        Next
        tStr = StrConv(bStr, vbUnicode)
'---2009/05/16-End--- by yasu
50080  ' Second we look for hex encoding chars
50090  If Len(Str1) >= 4 Then
50100   If Mid$(Str1, 1, 1) = "<" And Mid$(Str1, Len(Str1), 1) = ">" Then
50110    If Len(Str1) Mod 2 = 0 Then
'---2009/05/16-START--- by yasu
          ReDim bStr((Len(Str1) - 2) / 2)
'---2009/05/16-END---
50120     For i = 2 To Len(Str1) - 1 Step 2
50130      If IsNumeric("&H" & Mid$(Str1, i, 2)) = True Then
50140        If CByte("&H" & Mid$(Str1, i, 2)) > 255 Then
50150          Exit Function
50160         Else
'---2009/05/09-START--- by yasu
               bStr((i - 2) / 2) = CByte("&H" & Mid$(Str1, i, 2))
'50170          tStr = tStr & Chr$(CByte("&H" & Mid$(Str1, i, 2)))
'---2009/05/09-END--- by yasu
50180        End If
50190       Else
50200        Exit Function
50210      End If
50220     Next i
'---2009/05/09-START--- by yasu
          tStr = StrConv(bStr, vbUnicode)
'---2009/05/09-END--- by yasu
50230    End If
50240   End If
50250  End If
50260  If Len(tStr) > 0 Then
50270   ReplaceEncodingChars = tStr
50280  End If
'---ErrPtnr-OnError-START--- DO NOT MODIFY ! ---
Exit Function
ErrPtnr_OnError:
Select Case ErrPtnr.OnError("modPDF", "ReplaceEncodingChars")
Case 0: Resume
Case 1: Resume Next
Case 2: Exit Function
Case 3: End
End Select
'---ErrPtnr-OnError-END--- DO NOT MODIFY ! ---
End Function

後半だけでなく、前半の8進変換もどきもバイト配列に一端いれてから日本語変換する必要があったようです。

前段の8進もどきで一体なにをやっているかといいますと…。

たとえば「\203R\203\201\203\223\203g\202\360\223\212\215e」を日本語にすると「コメントの投稿」となるわけですが。「\203R」の「\数値3桁」を16進数に変換、アルファベットをASCIIの16進数に変換すると「83 54」。これはS-JISでの「コ」…。以下略。──という具合に日本語に変換していかなくてはならないわけですよ。数値にアルファベットと入り交ざっているこいつらを一端16進数に戻して、S-JISに変換する、という流れ。

引数で受け取る値を見ても、一見「!?」という感じですし、暗号でも見ている気分でしたよ。やすさんスゴイ!!ヽ(´ー`)ノ

2009/05/18

PDFCreatorの日本語問題-PDF情報編2

やすさんのUPしてくださったソースと比較して、日本語(マルチバイトの文字列)が混ざると、PDFを[保存]できない原因がわかりました。

[保存]できない現象に対しての、修正箇所は

[Common]-[modCDlg.bas]-[SaveFileDialog]

もともとこのモジュールではOPENFILENAMEに対して下記のようにセットしていますが。

オリジナル

50160  With ofn
50170   .nStructSize = Len(ofn)
50180   .hWndOwner = hwnd
50190   .sFilter = tFil
50200   .nFilterIndex = FilterIndex
50210   .sFile = InitFilename & Space$(1024) & vbNullChar & vbNullChar
50220   .nMaxFile = Len(.sFile)
50230   .sDefFileExt = DefaultFileExtension & vbNullChar & vbNullChar
50240   .sFileTitle = vbNullChar & Space$(512) & vbNullChar & vbNullChar
50250   .nMaxTitle = Len(ofn.sFileTitle)

50260   If InitDir = vbNullString Then
50270     .sInitialDir = GetPDFCreatorApplicationPath & vbNullChar & vbNullChar
50280    Else
50290     .sInitialDir = InitDir & vbNullChar & vbNullChar
50300   End If
50310   .sDialogTitle = DialogTitle
50320   .Flags = Flags
50330  End With

OPENFILENAME構造体は、


.nMaxFile   :ファイル名のバッファのサイズを設定

.nMaxFileTitle :フルパス用のバッファのサイズを設定


ですので、オリジナルのようにLenで計算している(行番号07.、10.)と、マルチバイトの文字列が入るとおかしくなっちゃうんですねー。

というわけで、下記のようにLenBにあらためます。

修正後

50160  With ofn
50170   .nStructSize = Len(ofn)
50180   .hWndOwner = hwnd
50190   .sFilter = tFil
50200   .nFilterIndex = FilterIndex
50210   .sFile = InitFilename & Space$(1024) & vbNullChar & vbNullChar
'50220   .nMaxFile = Len(.sFile)
50220   .nMaxFile = LenB(.sFile)  
50230   .sDefFileExt = DefaultFileExtension & vbNullChar & vbNullChar
50240   .sFileTitle = vbNullChar & Space$(512) & vbNullChar & vbNullChar
'50250   .nMaxTitle = Len(ofn.sFileTitle)
50250   .nMaxTitle = LenB(ofn.sFileTitle)

50260   If InitDir = vbNullString Then
50270     .sInitialDir = GetPDFCreatorApplicationPath & vbNullChar & vbNullChar
50280    Else
50290     .sInitialDir = InitDir & vbNullChar & vbNullChar
50300   End If
50310   .sDialogTitle = DialogTitle
50320   .Flags = Flags
50330  End With

この部分を修正すると無事、マルチバイトの文字列が入っていても、[保存]できるようになりますねぇ。

ちなみに[ReplaceEncodingChars]については、前回の16進変換の修正のみのモジュールのままでも、とりあえずのところは動きました(←そして8進変換の役割が、相変わらず、わかっていないじょにでした。[\XXX]の8進数を文字に置換しているのはわかっていても、「何故変換するのか。なにが入ってきて、どう変換すべきなのか」というそもそもの役割とかが見えきていないッス・泣)。