2012-01-28

VAIO SE

出張先でも効率的に仕事をするには画面が大きい方がよいので、これまで約3kgのThinkPadR500を持って出張に行っていました。重たいのはキャリーバッグに入れて転がせば大丈夫ですし、文書作成ならCore2Duoで充分なのですが、プログラムを走らせると最近のデスクトップと比べてかなり遅く感じるようになりました。
15インチで高解像度で安いのは無いかなと探していると、VAIO SEがモデルチェンジ前と言うことで安くなっていて、15.5インチで1920x1080ドット液晶で2kgなのに、直販サイトのキャンペーンで6万円以下でした。
学生、教員の場合はキャンペーンで買うのにコツがあります。キャンペーンの終了日は書かれているので分かりますが、終わった後、次のキャンペーンで高くなるか安くなるか分かりません。普通に直販サイトで買う場合、次のキャンペーンを待っていたら高くなって「前のキャンペーンで買っておけば良かった」と後悔したり、逆に買った直後の次のキャンペーンで安くなって悔しい思いをすることがあります。しかし生協で買う場合は、まず直販サイトで見積もりをプリントアウトして、それを生協店舗に持って行けばその構成、その値段で買うことが出来ますので、まずキャンペーン終了直前に見積もりをプリントアウトして、次のキャンペーンが始まったらもう一回見積もりをプリントアウト。安い方をその日のうちに生協に持って行けば良いです。

15インチで2kg、それなのに無名ブランドの15インチ3kgのノートパソコンと同じくらい安いのでお勧めです。使ってみると液晶もIPSで低反射コートされていて見やすいです。気になった点は二つしかありません。一つは、薄くするために排気口の位置を無理していて、ヒンジの裏側になっています。パソコンを閉じている時は大丈夫ですが、開くと液晶によって排気口が塞がれるので、冷却音がうるさいです。もう一つは買った状態だと色々なソフトが入っていて遅いです。MSDN アカデミック アライアンスのライセンスがあるのでクリーンインストールすると速くなりますが、買った状態だと入っていたソフトのいくつかを入れることが出来なくなります。
少し工夫が要るので、Windows7をクリーンインストールした後に、必要なドライバ、ソフトウェアをインストールする方法をまとめました。
一番大事なことは、クリーンインストールする前に、Vaio careからリカバリーディスクを作っておくことです。これさえあれば、ハードディスクやSSDのリカバリー領域を消しても大丈夫です。ハードディスクなら容量は充分ですのでリカバリー領域はもしもの時のために残した方が良いですが、容量単価が高いSSDならばリカバリー領域は消したいです。
次に C:\Windows\Drivers\EXE に各種ハードウェアのデバイスドライバが入っているので、これをUSBメモリに保存しておきます。アプリケーションソフトは C:\Windows\Drivers\EXE には入っていませんし、先ほど作ったリカバリーディスクにも、.modという形式で入っているのでそのままでは使えません。これを使えるような形にするにはmod2wimというソフトでwim形式に展開し、wimファイルを今度は7zipで展開します。
必要なファイルの用意が出来たらクリーンインストールします。インストールした直後はUSB3.0のドライバが入っていないので、3つあるUSBポートの一番手前は使えません。C:\Windows\Drivers\EXE をコピーしたUSBメモリを後ろ側2つのどちらかに挿して、片っ端からインストールします。VPCSE1AJ | 製品別情報 | サポート | VAIO | ソニーに新しいドライバーがあればそちらをインストールします。
次にVAIOのハードウェアを制御するソフトを入れます。VPCSE1AJ | 製品別情報 | サポート | VAIO | ソニーからVAIO Careの最新版をインストールし(.Net 4.0以上が必要です)、MODC-178764.no_28に入っているSONY Shared Libraryをインストールし、最後にVAIO Careを立ち上げてその他の機能のリカバリーを選んでVAIO設定をインストールします。この方法だとVAIO Careが英語になるのでVAIO Z (VPCZ1)をクリーンインストールの方法で日本語にします。
参考にしたのは
VPCSE1AJ | 製品別情報 | サポート | VAIO | ソニー
VAIOのリカバリーDVDからアプリケーションをインストールする!(Windows7編)mod2wimの使い方
VAIO P(VPCP11ALJ)のリカバリディスク展開メモ最近はwimファイルの形式が変わってwimファイルの展開はmod2wimでは出来ず7zipが必要です。

mod2wimで展開したフォルダの名前では何が入っているか分からないので調べてみました。まだ良く分からないものも多いですが、本当に必要なものはVAIO Careからインストール出来ます。

DISK1
MODJ-145976.no_1
MODJ-147785.no_2
MODJ-147999.no_3puma
MODJ-148355.no_4
MODJ-150097.no_5IEDocked
MODJ-158709.no_6
MODJ-158715.no_7
MODJ-158725.no_10Windows-LocalPack-JP-Package
MODJ-159357.no_8Count8
MODJ-160112.no_13apiLogCheck
MODJ-162077.no_12Evernote
MODJ-164364.no_11VAIO Support.Gadget
MODJ-164463.no_9oobe_unattend
MODJ-168217.no_14DelSearchScopes
MODJ-168314.no_15VAIO Peripherals Metadata
MODJ-168318.no_17NOBU-ARA_3
MODJ-168429.no_16Sony Firmware Extension Parser
MODJ-168928.no_18xRadar(WiFiで位置を特定し付近の店を調べる)
MODJ-169133.no_19ReadyBoot
MODJ-170256.no_20VAIO Control Center
MODJ-170375.no_22VAIO Sample Contents
MODJ-170442.no_21VerifyFileVersions
MODJ-170595.no_23Adobe Premiere Elements
DISK2
MOD-CSUP.no_25
MOD-ShareMyConnection_HW_Support_Capable.no_3
MODC-176140.no_15PUMA
MODC-176149.no_16CPU Fan Diagnostic
MODC-178764.no_28Sony Shared Library
MODJ-144535.no_6VAIO Location Utility
MODJ-170068.no_2プロアトラスSV6
MODJ-170133.no_4Windows Live
MODJ-172234.no_7Realtek Ethernet Controller Driver
MODJ-173074.no_5Intel(R) Chipset Device Software
MODJ-176072.no_8
MODJ-176188.no_13Skype
MODJ-176608.no_17ブックマーク
MODJ-176642.no_9SNJB_TBIG
MODJ-176701.no_22VAIO Easy Connect
MODJ-176816.no_10.Net 4.0
MODJ-176827.no_11oobe
MODJ-176846.no_12SONY_DelayedAutoStart
MODJ-176890.no_14
MODJ-177304.no_18筆ぐるめ18
MODJ-177324.no_19VerifyUpdates
MODJ-177345.no_20Media Galleryなどのインストール
MODJ-177524.no_21ATOK2011
MODJ-178185.no_23
MODJ-178306.no_24DelayTouchControl
MODJ-179388.no_26RBKE
MODJ-179512.no_27Media Go (パソコン内の動画などを検索、Gracenoteを使える)
DISK3
MODC-179214.no_3VAIO First Logon Setup Tool
MODC-179217.no_19ISB Utility?
MODC-179219.no_4VAIO Startup Setting Tool
MODC-179222.no_20VAIO 電子マニュアル
MODJ-178971.no_10PMB(Picture Motion Browser)
MODJ-179144.no_17JAVA
MODJ-179518.no_1ウィルスバスターっぽい
MODJ-179591.no_13VAIO Improvement
MODJ-179649.no_2ArcSoft Magic-i Visual Effects 2
MODJ-179666.no_15Sony Shoppingactivity
MODJ-179676.no_5壁紙
MODJ-179688.no_6Windowsのパッチっぽい
MODJ-179692.no_7Windowsのパッチっぽい
MODJ-179717.no_11PMB VAIO Edition Guide
MODJ-179765.no_8inscstm
MODJ-179783.no_14SpySweeper
MODJ-179817.no_9AcroRead
MODJ-179851.no_21VAIO Data Restore Tool
MODJ-179852.no_12Wimax
MODJ-179908.no_16Chrome
MODJ-179921.no_18VAIO Home Network Video Player:家庭内サーバーの動画再生
DISK4
MODC-179213.no_34VAIO Update
MODC-179221.no_35Prepare Your VAIO
MODC-179228.no_19VAIO Support Tool Gadget
MODC-179229.no_36VAIO Control Center
MODC-179232.no_39VAIO Smart Network
MODC-179349.no_38VAIO Power Management
MODC-179601.no_40
MODC-179887.no_37VAIO Transfer Support
MODJ-179402.no_16Evernote
MODJ-179419.no_29Remote Keyboard
MODJ-179597.no_2Kicktool
MODJ-179599.no_27PowerDVD
MODJ-179611.no_15Flash Player 10
MODJ-179667.no_32ArcSoft WebCam Companion 4
MODJ-179706.no_22VAIO Gate(ランチャー)
MODJ-179707.no_18
MODJ-179708.no_1PMB VAIO Edition Plug-in
MODJ-179818.no_4Media Gallery Gracenoteを使える自動再生ソフト
MODJ-179859.no_20VAIO Hardware Diagnostics
MODJ-179883.no_23ブックマーク集
MODJ-180041.no_12Sony64_no_FFL
MODJ-180140.no_26QuickWeb_1.4.6.10
MODJ-180165.no_7Intel(R) Management Engine
MODJ-180170.no_8USB3drv
MODJ-180171.no_13WiMAX
MODJ-180175.no_11Intel PROSet Wireless
MODJ-180178.no_9Realtek PCIE Card Reader Software
MODJ-180179.no_3iata_cd
MODJ-180180.no_6WBFMin64
MODJ-180181.no_30ATIのドライバ
MODJ-180183.no_10タッチパッド
MODJ-180188.no_28
MODJ-180189.no_31Bluetooth
MODJ-180193.no_5QWAUtil
MODJ-180195.no_21Realtek High Definition Audio Driver
MODJ-180227.no_14ICCプロファイル
MODJ-180325.no_17Digital Media Player
MODJ-180326.no_24Remote Play with PlayStation 3
MODJ-181923.no_25KickTool
MODJ-182098.no_33ESD

関係ないですが、
Google Chrome 安定版 16.0.912.77
http://dl.google.com/chrome/install/912.77/chrome_installer.exe

2012-01-26

トレンドの当てはめ

プログラムが若干違う人がいましたので、プログラムは無しでデータだけ載せておきます。

今日はこのデータに基づいてトレンドの当てはめを行います。

冬至から一か月、日が沈むのがだいぶ遅くなりました。

2012-01-23

二つの母集団の分散の比

母分散の比の推定について説明し、来週のために期待値、分散の性質の復習をしました。

2012-01-19

時系列解析

今日は、時系列解析データの解析について説明します。題材として用いるデータは先週同様気象庁のデータです。

準備

気象庁のサイトから岡山の毎月の平均気温をエクセルにコピーします。

これを縦一列に並べます。

季節性とその調整

温暖化が進んでいるかどうか確認するために、折れ線グラフを書いてみます。

上がっているようにも見えますが、年間の変動の方が大きいのでなんとも言えません。くっついてわけわからないので引き延ばしてみます。

当たり前ですが12ヶ月周期があります。これを季節性と呼びます。季節性を調べて、取り除くことで温暖化が進んでいるか確認しましょう。
1年分の平均を計算すれば、季節性の影響は打ち消し合いますので、各月に対して前後半年ずつの平均を求めてみます。12ヶ月分の平均気温を足して12で割れば良いのですが、1年の月数は偶数なので、例えば1891年7月の前後半年の平均を考えるときは、1891年1月も1892年1月もどちらも半年違いになります。そこでこの二つはその平均を使うことにして
(1891年1月と1892年1月の平均), 1891年2月,...,1891年12月の12個のデータの平均を1891年7月の平均値として使います。
移動平均の値とグラフは次のようになります。

最初と最後の半年間は、前後半年分のデータがないので移動平均を計算できません。
そして実際の気温の、移動平均からのずれを計算します。

当然ですが冬は移動平均より低く、夏は高くなります。
このずれを、各月毎に平均したものが季節成分です。

まず1月分の平均を求めましょう。1月のデータだけを手動で取り出して平均するのは大変ですからExcelにやらせます。
VBAを使うともっと楽なのですが、どんな計算をすれば良いのか、答えはいくつになるのかStep by Stepで説明するためにここではIF関数を使います。G2セルに =IF(C2=1,F2,"") と書いてください。月を表すC列が1なら移動平均との差、そうでなければ空白になります。そしてG列の最後までコピーします。

最初の0は実際にはデータがありませんので平均の計算からは除外します。これの平均をAVERAGE関数で求めてコピーしたら、「形式を指定して貼り付け」で値だけを他のセルに貼り付けて、次に2月だけの値を表示してその平均、3月だけの値を表示してその平均…と続けていきます。

この後はさらにVBAでなければ計算し辛いのですが、上記の方法で計算した12ヶ月の季節成分は偏っていることもありますので、12個の平均を求めて各々の月から引いて、12ヶ月分の平均が0になるようにします。

2012-01-16

F分布

二つの母集団に関する検定、推定の全体像を説明し、分散の比の検定、推定に必要となるF分布について説明しました。

温室が取り壊されていました。この後何が出来るのでしょう。

2012-01-12

Webからのデータ取得

毎日の気温データを1年分取得する

気象庁 | 過去の気象データ検索から毎日の気温データを1年分取得する方法を考えてみます。
手順としては
  1. 一か月ごとのデータを手動で得る方法を調べる
  2. それをVBAで自動化する
  3. 得たデータをきちんと1年分揃える
となります。

一か月ごとのデータを得る

大量のデータを取得するにはプログラミングが必要ですが、そのためにはまず一カ月分だけでよいので手動でどうやって取得するのかを調べないとプログラムの書きようがありません。
気象庁 | 過去の気象データ検索を開きます。

場所を指定するために都府県支庁を選択をクリックします。

南極のペンギンに目が行きますが、今回は岡山をクリックします。

とりあえず2008年1月をクリックします。

月まで指定したことにより2008年1月の日ごとの値を表示 をクリックすることができるようになります。

このようにとりあえず一カ月分のデータは表示されますので、エクセルにコピーすることが出来ます。
このページのアドレス http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view= をコピーしておきましょう。

エクセルによる取得

マウスでWebページを選択、コピーしてExcelに貼り付けるという操作は自動化し辛いので、Excel自身にWebページからデータを取得させましょう。
エクセルの「データ」タブをクリックして表示される「Webクエリ」をクリックします。

アドレス欄に先ほどコピーしておいたhttp://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view=を貼り付けて移動を押します。
すると先ほどと同じWebページが表示されるので、保存したいデータが書かれている表の左上の□にチェックをつけて「取り込み」をクリックします。

OKをクリックしたくなりますがその前にプロパティ(R)…をクリックします。

バックグラウンドで更新する(B)のチェックを外して、既存のセルを新規データで上書きし、使用されていないセルはクリアする(O)に●をつけてOKを押し、前の画面に戻ったらもう一度OKを押します。

するとこのようにエクセルのシートに表がコピーされます。

これでマウスを使ったコピー&ペーストを使わなくても、Excelのシートにデータを貼り付けることが出来るようになりました。

VBAによる取得

ここまでの処理をVBAを使って自動化したいので、「マクロの記録」を使って、先ほどの操作をVBAに記録しましょう。
最初からやり直しますので、先ほどコピーしたデータを一旦削除します。するとデータだけを消すか、Webページからデータを取得する方法も含めて消すかと尋ねられます。最初からやり直すために全部消したいからはい(Y)と答えます。

全部削除したら、マクロの記録を使って先ほどの操作をVBAに記録します。すると次のようなプログラムになります。
Sub Macro1()
'
' Macro1 Macro
'
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view=" _
    , Destination:=Range("$A$1"))
    .Name = _
    "daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view=_1"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = False
    .RefreshStyle = xlOverwriteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = "3"
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
  End With
End Sub
大事なのは"URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view="の部分です。このアドレスで表示されるページの中の.WebTables = "3"だから3番目の表をExcelにコピーするプログラムになっています。

注意

.Name = _
"daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view=_1"
の部分にも"URL;http://…と同じようなことが書かれていますが、ここは単に名前ですので、データの取得には関係ありません。

アドレスの部分は「変数名=値」が&で区切られて続けられています。どの変数が何を示しているかは、値を変えながら色々試してみて推測するしかないのですが、2008年1月に関してはyear=2008とmonth=1に対応しているようです。従ってこの部分をプログラムで書き換えれば良さそうです。
試しに2008年2月のデータを取得してみましょう。
"URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=1&day=&elm=daily&view=" _
の部分を
    "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=2&day=&elm=daily&view=" _
に書き換えて実行してみてください。
予想通り「岡山 2008年2月 (日ごとの値) 主な要素」が取得されましたが、29日以降に1月のデータが残ったままです。これでは困るので、全部削除する操作を調べて、Webから取得する直前に書きます。
全部削除する操作を調べるにもやはりマクロの記録を使います。
Sub Macro2()
'
' Macro2 Macro
'
  Cells.Select
  Application.CutCopyMode = False
  Selection.QueryTable.Delete
  Selection.QueryTable.Delete
  Selection.ClearContents
End Sub
このように記録されましたが、試してみたところ
Cells.Select
Selection.QueryTable.Delete
Selection.ClearContents
だけで良さそうです。
但し、消すべきQueryTableがない場合に
Selection.QueryTable.Delete
を実行するとエラーになるので, (1,1)セルが空白でない場合だけ実行するように
Cells.Select
If Cells(1, 1) <> "" Then
  Selection.QueryTable.Delete
End If
Selection.ClearContents
とします。

この3行を
With ActiveSheet.QueryTables.Add(Connection:= _
の前に書き足して実行してみましょう。
Sub Macro1()
'
' Macro1 Macro
'
  Cells.Select
  If Cells(1, 1) <> "" Then
    Selection.QueryTable.Delete
  End If
  Selection.ClearContents

  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=2&day=&elm=daily&view=" _
    , Destination:=Range("$A$1"))
以下略

これでシートに書かれていた全てのデータとWebクエリを削除して、2008年2月のデータを貼り付けることが出来ました。

年月をプログラムで指定する

1月から12月まで取得するためには、月を示す変数mの値を1から12まで変化させて、上記プログラムを実行する必要があります。
しかし
Sub Macro1()
'
' Macro1 Macro
'
  Cells.Select
  Selection.QueryTable.Delete
  Selection.ClearContents

  m = 1
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=m&day=&elm=daily&view=" _
    , Destination:=Range("$A$1"))
以下略
と書いたのでは、1月ではなくm月ということになってしまいます。mという文字ではなく変数mの値をURLとして使いたい場合は
    "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=" & m & "&day=&elm=daily&view=" _
のように一旦文字列を"で切って、文字列を&で連結します。
本当は、文字列に変換する関数CStrを使って
    "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=66&prec_ch=%89%AA%8ER%8C%A7&block_no=47768&block_ch=%89%AA%8ER&year=2008&month=" & CStr(m) & "&day=&elm=daily&view=" _
と書くべきなのですが、CStrなしでも今回は動きました。

データの整形、整理

この方法だと、1月のデータを貼り付ける→消す→2月のデータを貼り付ける→…の繰り返しになり、データを保存することができません。
そこで
1月のデータをsheet2に貼り付ける→必要な部分をsheet1に貼り付ける→sheet2を消す→2月のデータをsheet2に貼り付ける→必要な部分をsheet1に貼り付ける→sheet2を消す→…
のようなプログラムにします。Webクエリのような目新しさはなく地味な作業ですが、データ解析の下準備として重要です。
月によって何日まであるかが異なります。繰り返し回数が分からずFor文を使えない場合はDo While文を使います。

この方法ではこのように一か月分のデータが取得しされます。

何カ月分ものデータをこのように整理して保存しましょう。

1月のすぐ下に2月のデータが来るようにします。すると日付も、年月がないとわけが分からなくなります。さらに通し番号で整理したいので「年」「月」「日」を一つにまとめた列も作ります。

今回は地味で細かな作業の繰り返しになりますので色をつけて説明します。
プログラム全体の構成としては
For m = 1 to 12
 2008年m月のデータをSheet2に取得
 If m = 1 then
  上部の項目名をSheet1へコピー
 End If
 m月のデータをSheet1へコピー
Next m
となります。

WebからSheet2へデータを取得して、それをSheet1に整理することにしましょう。

まず最初に、データの項目の説明が必要ですので、Sheet2の黄色い部分、つまり2行目から5行目、B列からU列(2列から21列)を、 Sheet1の1行目から4行目、E列目からX列目(5列目から24列目)へコピーします。
次に、毎月、日にちとデータの部分、つまりSheet2のオレンジ色の部分、の6行目からデータの最後の行まで、A列目からU列目(1列から21列)を、 Sheet1の前月のデータの次の行以降、D列目からX列目(4列目から24列目)へコピーします。
それと同時に、Sheet1のA1セルに書かれた年と月を、Sheet1に先ほど貼り付けたデータの2列目と3列目へコピーします。
最後に、日付の通し番号として、Sheet1のB,C,D列を/で繋げてA列に書きます。

シートの選択とシートを指定してのCells

Webクエリによる取得は、選択しているシートに貼り付けられますので、Webクエリを実行しておく前にデータを貼り付けたいシートを手前に出しておきます。
そのためには、Sheets(1).Selectのように、括弧の中に何番目のシートなのか番号を書いて指定します。あるいはSheets("Sheet1").Selectのようにシートの名前を指定することもできます。
また、シートの間を跨いでのコピーは、例えば今回のようにシート2のB2セルをシート1のE1へコピーするなら
Sheets(1).Cells(1, 5) = Sheets(2).Cells(2, 2)
と書きます。

このように複数のシートに跨るプログラムは、必ず標準モジュールに書いてください。

標準モジュールがない場合は挿入(I)標準モジュール(M)をクリックして追加してください。

データの数を数える

Webから取得したデータの個数は、その月の日数により変化します。これが分からないと、シート2から何行をシート1にコピーするか、そしてシート1の何行目までデータが入っているか分からないので調べる必要があります。今回のデータは日数なので日付A列の最大値がデータの個数ですが、一般にはこのような通し番号が付いていないこともあるので、データを上から見ていって、無くなるまで数えます。そのためにはWhile文を使います。
While文の書式は

Do While 条件
 文1
 文2
 …
Loop

です。条件が成立している間、Do WhileとLoopで挟まれた文を実行します。
シート2のデータであればCells(6, 1)から順にCells(7, 1), Cells(8, 1),…と見ていって、データが無くなるまで続けます。
但し、(6, 1)から始まるのは紛らわしいので、まず
Cells(6, 1).Select
を実行してCells(6, 1)を選択しておくと
Selection.Cells(1, 1)がCells(6, 1)
Selection.Cells(2, 1)がCells(7, 1)

ということになってi番目のデータがSelection.Cells(i, 1)となって分かりやすいです。
以上をまとめて

j = 1 '←jを他のループで使っている場合は別の変数を使ってください。
Cells(6, 1).Select
Do While Selection.Cells(j, 1) <> "" '←<>は大きいか小さい、つまり等しくないことを表し、""は何もないことを表します。つまり<> ""は「空白ではない」という意味です。
 j = j + 1
Loop

によって、データの個数を数えることが出来そうです。本当に数えることが出来たか確かめるために、このプログラムの次の行に

MsgBox (j)

と書いて実行してみてください。31と表示されましたか?違っていたら原因と対策を考えてください。

他にも

Do Until 条件
 文
Loop
とか
Do
 文
Loop While 条件
とか
Do
 文
Loop Until 条件

があります。条件が文より下にあると、少なくとも一度は実行されます。文を実行しないと条件がチェックできない場合に使います。

データのコピー先

シート2のデータをシート1にコピーする場合、コピー元は毎月6行目からなのでCells(1,1)から順にコピーすれば良いのですが、 コピー先は最初の4行が項目名なので1月は5行目から、2月は5+31=36行目から…となるので位置が変動します。
従って、データが既に何行目まで記録されているかを示す変数(例えばlastのような名前)を使って、次のデータをどこにコピーすれば良いのかを管理しておきます。
例えば1月分のデータをコピーする場合は

このようになっているので5行目から、
2月分の場合は

36行目からですが、この何行目、というのを目で見て数えるのではなく、変数に記録しておくということです。

課題

第一問:このような形で1年分のデータを収集するプログラムを書いてください。

第4行の「日付」とか「年」はコピーするのではなくて

Cells(4, 1) = "日付"
Cells(4, 2) = "年"

のように""で囲った文字列を代入します。A列の日付はB,C,D列を繋げますので

Cells(j, 1) = Cells(j, 2) & "/" & Cells(j, 3) & "/" & Cells(j, 4)

と書けばよいでしょう。

B列, C列の年月はSheets(2)の(1,1)セルから切り出すなら
Mid(Sheets(2).Cells(1, 1), 5, 4)
Mid(Sheets(2).Cells(1, 1), 10, 2)
のようにMid関数を使って、何文字目から何文字、という取り出し方でもいいですが、単純にWebから取得するときに指定した年, 月を表す変数の値を書いて構いません。

第二問:2007年1月から2008年12月までの2年分のデータを収集するプログラムを書いてください。これが出来ればどんなに長い期間のデータでも同様に収集できます。

2012-01-09

Willcom機種変更優待キャンペーン

2年前に買ったWillcom Hybrid W-Zero3の3Gの部分は、これまではウィルコムがドコモのMVNOとなっていたのですが、ソフトバンク傘下となったことでドコモとは直接手を切り、2012年4月からはIIJがMVNOとなってウィルコムは3G使用料に関しては集金代行するだけとなりました。
ドコモの3Gを使うHybrid W-Zero3は2010年3月に売り切れましたから、丁度そのタイミングで分割払いやW-Value割引がなくなります。そこで、ウィルコムの通話用機とソフトバンクのデータ通信専用スマートフォンのセットへの機種変更優待キャンペーンの案内が来ていました。
「今なら、変更手数料無料で人気の限定セットに機種変更できます!」と書かれています。手数料は無料として、機種代は?と思って良く見ると「端末購入費は別途かかります」と書かれています。
変更出来るのはAセット:HONEY BEE4とLeberoまたはBセット:WX01NXとLiberoです。Hybrid W-Zero3はPHSのパケット代が無料でしたので、同等の料金コースということでHONEY BEE4のPHSパケット代も無料です。BセットのWX01Nはパケット通信出来ません。

ということで乗り換えを検討してみました。ユニバーサルサービス料、通話料は共通なので省きます。
今のまま使い続けると、基本料が毎月1450円で、PHSパケット代が無料です。
Aセットに変更すると基本料1450円+機種代分割払い1280円-W-Value割引き980円=1750円で、PHSパケット代が無料です。
Bセットに変更すると基本料1450円+機種代分割払い980円-W-Value割引き980円=1450円で、PHSパケット通信は出来ません。
メリット、デメリットを整理すると次のようになります。
機種メリットデメリット
そのままパケット代無料でスマートフォンが使える発売当時から動きが遅かったスマートフォンがさらに時代遅れになってる
Aセット音声端末のパケット代無料
スマートフォンがAndroidになる
毎月の支払いが300円上がる
2年経たずに解約すると端末代残金を払わなければならない
スマートフォンのパケット代は有料
BセットスマートフォンがAndroidになる2年経たずに解約すると端末代残金を払わなければならない
スマートフォンのパケット代は有料
LiberoはCPUがHybrid W-zero3と同世代で、加速度センサーもないので、安くて古い機種の在庫処分です。画面は少々大きくなりますが、通話用と2台持ちになるので画面が大きくなること以上に本体の大きさ、重さが増えます。それに今となってはGalaxy Tabも持っていますので、Leberoを使うことはありません。となると、変えたところでメリットはなく、今後2年間、分割払いとW-value割引きのために解約できなくなるだけです。
かといって、これまでは購入時一括支払いとW-value割引きのおかげで20円でしたが、今後1450円払ってPHSを使うくらいなら、家族間通話なら1000円程度の携帯電話の方が安いうえに圏外になりにくいです。PHSパケット代無料というメリットはありますが、イオンSIMで980円ですし。
ということで今週末、携帯電話を見に行きます。

追記:見に行ったのですが、新規とMNPで条件が違いすぎます。そしてウィルコムは今のところMNP出来ません。「070」携帯も使用=番号不足に対応―情通審部会
2014年までには携帯の状況も変わるでしょうから、今から2014年を待とうとは思いません。でも去年は時々、番号そのままではなくてもウィルコムを解約することを条件にMNPと同じ条件で販売されることもあったので、そのチャンスを待つことにします。
激安MNPやiPhone 機種変 一括の技まとめ←ドコモの2in1NO

3月追記:またキャンペーンが行われました。
https://www2.willcom-inc.com/cp/hchange2/
https://www2.willcom-inc.com/cp/hchange3/
アドレスが微妙に異なります。hchange2の方は前の機種の分割払いが残っている人にはその分キャッシュバックすると書いてあり、hchange3には書いてありません。多分既に分割払いが終わっている人には、先に払って損したと思わせないようにhchange3の方を伝えるのでしょう。
SOCIUS(WX01S)とGALAPAGOS(005SH)のセットが機種代分割払いで毎月1,650円、毎月の割引が1,450円で差し引き200円、 WX01NXとVision(007HW)のセットが機種代分割払いで毎月1,450円、毎月の割引が1,450円で差し引き0円です。
PHSはどちらの機種もWebが使えないので、PHSパケット代無料のメリットがなく、WX01NXはメールすら出来ません。
Android側は前回のキャンペーンより少しは新しくなっていますがそれにしても古く、SOCIUSはBlueToothハンドセットになりますが、前回のキャンペーンより良くなっているのはそれだけで、前回のキャンペーンを見送った人にとっては魅力ないでしょう。

2011-12-24

台湾のプリペイドSIM

日本の携帯電話会社のローミングより台湾現地のプリペイドSIMを買った方が安いので、空港についてすぐプリペイドSIMを買いました。
台湾の携帯電話会社は 中華電信 台灣大哥大 遠傳 の3つがあります。台北市内の松山空港には中華電信のカウンターが、少し遠い国際空港の桃園空港には3社それぞれのカウンターがあります。
私は中華電信のSIMを買いました。SIMにはデータ通信専用のものと、通話もできるものがあります。

1.データ通信専用SIM
3日で250元、7日で450元です。使える期間は、申し込んだ日+翌日から3日とか7日、と数えますので、午前の便で来る人にとってはお得です。
空港の電話会社のカウンターで身分証明書を二つ示せば買うことが出来ます。パスポートは当然持っていますので、もう一つ、運転免許証などを求められます。
中華電信の場合、APNとしてinternetを設定します。SIMを入れて最初に使う時にパスワードが必要です。申し込み時に教えてもらうパスワードを、スマートフォンなら本体から、WiFiルータはWeb設定画面から入力すると、すぐ使えるようになります。

2.通話兼用SIM
300元、500元、1000元のプリペイドSIMを買います。それぞれ50元、100元、330元の無料通話がついています。プリペイド額は半年後まで、無料通話分は3ヶ月後まで使えます。
この先に払ったお金を
・通話
・パケット従量通信 (1パケット0.005元)
・期間定額通信
に使うことが出来ます。
実際のところ、パケット従量通信をスマートフォンで使うとあっという間にプリペイド額を使い切ってしまうので、期間定額を申し込む必要があります。
期間定額の料金はデータ通信SIMと同じで3日で250元、7日で450元ですので、例えば500元のカードを買って7日定額を申し込むとそれに450元使いますので、残りは50元+無料通話100元になります。
期間定額は後から539をダイヤルして申し込むことも出来ますが、プリペイドSIMを買う時に同時に申し込むことも出来、その方が簡単でしょう。
但し申し込んでもすぐは使うことは出来ず、15分ほど経ってスマートフォンに「使えるようになった」というショートメッセージが来て、一度再起動してから使えるようになります。
APNなどの情報は機種によってはSIMから読み取って自動設定してくれます。手動で行う場合、APNはemomeかinternetのどちらでも使えるように書かれています。
私が試した限りではemomeはパケットが落ちてこなくなることがあったのでinternetの方が良いでしょう。
emomeは中華電信の専用サイトで音楽や書籍を買うことが出来るようですが、プリペイドの金額を支払いに使うことは出来ませんでした。

少しだけ注意することとしては、通話兼用SIMで期間定額にすると、例えば7日にすると、使えるのは7日後の同じ時間までです。データ通信専用SIMだと7日後の23時59分まで使えます。
プリペイド額を使い終わった時にはコンビニでチャージ用の番号を買うことが出来ますが、この時には無料通話分がつきません。ですから、家族との連絡用のように番号が変わってもすぐそのことを相手に伝えられるなら、新規にSIMを買った方がお得です。

直接関係ないですが、Galaxy TabのSIMロック解除を見つけました。
Galaxy TabのSIMロック解除は本当にできるのか?なべのなつやすみ
大事な点を引用しておきます。

  1. 電源を落とす (電源ボタン長押し→ダイアログ応答)
  2. 中華電信のSIMに交換、電源投入
  3. 電話機能で、*7465625*638*# を入力
  4. MCC/MNCとして中華電信の「46692」を入力 (他のキャリアは taiwan mcc mnc あたりでググりましょう)
  5. ControlKeyに「97286414」を入力
  6. 「Unlock successfull」というメッセージが出たら成功!→再起動
  7. 起動してきて、中華電信の表示が出たらOK

2011-12-23

DxO Optics Pro 7の使いこないし

変更点
DxO社は、Ver6と比べて数倍速くなったと言っていますが、これはOpenCLを使える環境に限った話で、普通のパソコンで使っている限りではVer6とほとんど変わりません。 Core2Duoで1分間に2枚、Corei7で1分間に10枚くらい現像できます。 Ver6との大きな変化は、プロジェクトに登録しなくても、OSファイルシステムのフォルダ単位で処理できるようになったことくらいです。 それでもNEX-C3など新しいカメラへの対応のためのバージョンアップしました。

環境設定
OpenCLは使える環境かつOpenCLを使ったほうが速い場合にのみ、OpenCLを使うかどうかのチェックボックスが有効になるそうで、ネットでもこれまで有効になった話を聞いたことがありません。
同時処理数は2枚を推奨されていますが、Core2Duoなら1枚でも100%使い切るので2枚にすると単に競合が起こるだけですから1枚が良いです。
4コア8スレッドのCorei7でも2枚で100%近く使いますので、推奨の2枚にしています。

現像設定: 有効にしているのは
露光
ヴィネット
ホワイトバランス
カラーレンダリング
ディストーション
ノイズ
色収差
です。

露光:自動設定でもある程度適切に調整してくれますが、各々の写真の中で一番大事な部分、一番綺麗に写したかった部分は明るい部分なのか、暗い部分なのか、ということはソフトには判断できませんので手動で調整する必要があります。
ここで「中央部に配慮した平均」を選ぶと、特にコントラストの低い写真で、Ver6より明るく調整されることが多きなりました。好みの問題もありますが、黒の締りが足りず、私の好みより明るすぎ、一コマずつ補正するのも面倒ですから「自動-ハイライトの優先度-低く」に一括設定したほうが良いかも知れません。

ヴィネット:レンズ情報に基づいて周辺減光を補正してくれますので特に調整する必要はありません。

ホワイトバランス:最近ではオートホワイトバランスがかなり賢くなりましたが、カメラに依って、あるいは被写体の色の偏りに依っては手動で調整する必要があります。屋外なら太陽光にしておけば良いと思います。

カラーレンダリング:DxOオリジナルの設定だと赤が強くなる傾向が、Ver6の頃から変わっていません。
ニュートラルな色調v2でも同じ傾向があります。
私はニュートラルが好きなので「Nikon D3, D3S, D300, D300S, D700ニュートラル」にしています。

ディストーション:レンズ情報に基づいて歪曲収差を補正してくれますので、特に調整する必要はありません。

ノイズ:DxO Ver7独特の特性というより、最近の私の好みで、輝度ノイズリダクションを0にして、色ノイズだけAUTOにしています。理由は、
・DxO Ver7をインストールするとFilmPackも1か月試用できるようになっていたので、粒状感を試してみたのですが、実際に細部の情報が加わったわけではないのにシャープに見えました。
 ならばノイズリダクションをかけて細部がぼけてから粒状感を加えるより、粒状感と似た効果のあるノイズを残したほうが元の情報が残ります。
・最近の1000万画素を超えたデジカメなら、ディスプレイで見る時も印刷するときも必ず縮小処理が入るので、ノイズはその時に平均化されて目立たなくなります。
 拡大表示するときは臨時に細部を見たいときなので、ノイズが多くてもディテールが残っているほうが良いです。
・JPEGで圧縮するには、ノイズが残っていると圧縮率が下がりファイルサイズが大きくなりますが、どうせRAWファイルも残すので少々JPEGファイルが大きくなっても大差ありません。
 ネットに乗せるときは縮小するのでノイズは平均化されます。
・ノイズはサンプリングで各色256諧調になる前の元信号のまわりに確率的に分布しますから、少しはディザリング効果が期待できます。
・マッハバンドが見えなくなる効果があります。
但し、輝度ノイズはAUTOにすればカメラの性能、感度に応じてノイズリダクションの強さをDxOが自動設定してくれるのに対し、色ノイズはAUTOにしても真ん中の50のままです。センサーの大きな一眼レフならそのままで大丈夫ですが、コンパクトデジカメで高感度を使う時は手動で強くする必要があります。

色収差:レンズ情報に基づいて倍率色収差を補正してくれますので、特に調整する必要はありません。但し若干残りますので、劣化が無いようにTIFFで出力してCaptureNX2で画像解析による補正をかけて仕上げた方がより綺麗です。

User Guide

2011-12-22

ExcelとAccessの連携

Excel VBAからAccessのデータベースを参照する方法を説明しました。

2011-12-21

HTC EVO 3Dでb-mobileを使う

台湾から来た友人が、WCDMA版HTC EVO 3Dをローミングで使っていました。WiMAXが使える機種にEVOと名付けるのだと思っていたのですが、WCDMAが使えてWiMAXは使えないEVOというのがあるのは意外でした。
ローミングは高いし、SIMロックがないならドコモでもb-mobileでも使えるだろうということで、私の手持ちのSIMを入れてみました。
(単に私が弄ってみたかっただけですが)

使えるはず、と思ってb-mobile Doccica hoursのSIMを入れてAPNの設定をしても使えません。繋がらないどころかSIMを認識しません。U300でも駄目、Hybrid W-Zero3のドコモ回線を使うSIMを入れても駄目。
ところがGalaxy Tabのドコモ自身のSIMなら使えます。b-mobileはドコモのMVNO(Mobile Virtual Network Operator)で、ドコモのSIMロックがかかった機種でも使えるのですが何故かこの機種では使えません。
検索してみたらこの機種だけの問題ではなくて、HTCのDesireなどでも使えないそうです。

Desireならば、使えないという表示が出て、アンテナレベルがx表示になるだけで、モバイルネットワークにチェックを付ければ実際には通信できます。 ところがEVO 3Dだとモバイルネットワークにチェックを付けることも出来ません。
もうこのあたりで完全に私の趣味で弄り回していたのですが
1.まずドコモ純正のSIMを入れて、モバイルネットワークにチェックを付ける。
2.チェックを付けたままで電源を切ってb-mobileのSIMを入れる。
この手順で、アンテナ表示はxのままですが、通信できるようになりました。b-mobileのSIMを入れている時にモバイルネットワークのチェックを一旦外すと、もう一度つけることは出来ません。チェックを付けるにはもう一度ドコモ純正のSIMを入れる必要があります。但しフライトモードをONにすればモバイルネットワークのチェックを外さなくても3G通信を止めることが出来ますから、3G通信を止めるにはモバイルネットワークのチェックを外す代わりにフライトモードにしたほうが良いです。フライトモードでもWiFiを有効に出来ますし、フライトモードなら「接続がない」というメッセージも表示されません。
私は、GalaxyTabを0円で買う条件としてdocomoの契約を2年間続けなければなりませんので、最低金額で寝かせているSIMがあるので上記の方法が使えましたが、b-mobileだけしか持っていないと困ると思います。
追記:データ通信のみの MVNO 回線での Android セルスタンバイ問題
音声通話が出来るSIMを入れておかないと上記b-mobileと同じ症状が出るそうです。

b-mobileの設定は設定一覧にあります。電話番号としては*99#を設定します。認証タイプは可能ならばCHAPにします。
その他参考にしたのは
WILLCOM 「HYBRID W-ZERO3」 その3 b-mobile使えた~(*゚▽゚)ノ
駒沢周辺在住 HTC Wildfire衝動買い
> ”ちょっと不安が残る”というのは、症状の 発生条件がよくつかめないんですが、 Wildfire上でモバイルネットワーク (3Gデータ通信)を手動でOFFにすると、 何でだか2度とb-mobileにつながんなく なっちゃう (というか、モバイルネットワークが ONに出来なくなっちゃう)という 症状が発生するからなんです。
> あと、なんだかちょっとクサいと思ったのは地域設定に日本を含む多くの国を追加するためのアプリ、More locale2。
駒沢周辺在住 HTC WildfireでのSIM2枚挿し成功
のコメント欄です。他には
HTC Desire(SIMロックフリー) で Bモバイル を使う
Desire HDファーストインプレッション
[Android, HTC Desire] b mobileを使い始めました
> Desireでは、電波をつかんでいるように見えないので、マーケットから real signalというアプリをダウンロードして信号を見えるようにしています。写真の左上のがそうです。

また、b-mobile Doccica hoursのSIMではテザリングも使えません。Windows7では、ルーターまで繋がっているか、その先インターネットまで繋がっているか表示されますので確認してみたところ、ちゃんと繋がっているように見えるのですが、実際にWebブラウザを立ち上げてみると見られません。IPアドレスを指定しても駄目でした。HW-01Cに入れた時も使えませんでした。b-mobile WiFiに入れた時は使えます。何が違うのか分かりません。

直接は関係ないですが
新たなデータ通信専用定額プランを提供開始-キャンペーン適用で月額1,380円で3G通信(受信時最大128kbps)がご利用可能-寝かせているSIMを活用できそうです。

関係ないですが、
Google Chrome 安定版 16.0.912.63
http://dl.google.com/chrome/install/912.63/chrome_installer.exe

2011-12-12

2011-12-05

2011-12-01

Microsoft Access2007の使い方

リレーショナルデータベースの考え方と、Access2007の使い方を説明しました。