Xperia単体でiモードメール(@docomo.ne.jp)を取得する方法

iモード対応のガラケーがないとiモードメールが使えない(iモード.netの利用開始が出来ず、IMoNIが使えない)という話ですが、
新規契約でXperiaしか持っていなくても以下の手順で@docomo.ne.jpのメールが使えるようになります。(実際は店のガラケー使ってるわけですが)
困ってる人が多そうなので、取り急ぎ公開します。

  1. ドコモショップに行く
  2. My docomodocomo ID発行してもらう
  3. iモード.net登録してもらう
  4. 店のFOMA端末を借りて、Xperiaから抜いたSIMを刺し、メール受信の準備をする(SIM刺すだけで特に設定は必要なさそう)
  5. 店内のネットが使えるPC(or PC持ち込み;xperiaは不可)を借りて、iモード.netにログインし、ワンタイムパスワード発行ボタンを押す
  6. 借りたFOMA端末でiモードメールに来たワンタイムパスワードを受け取り、PCで入力(有効期限3分)
  7. iモード.netでワンタイムパスワード設定を解除
  8. 借りてるFOMA端末でメールアドレスを変更
  9. IMoNIにDocomo IDを登録。
  10. 完了!
  11. (店のPCでログインした場合はMyDocomoのDocomo IDパスワードを変更)

詳しくはXperia でiモードメールを使おう・後編 〜iMoNiの導入を参照

一応

プログラミングも続けていきたいと思います。
とはいえ、私は技術が使いたくてプロダクトを作ると言うより、作りたいプロダクトがあるから技術を使うというタイプのため、作りたい物が思い浮かばないとなかなか行動できません。
実際に現状では、時折エクセルやワードのマクロを書く程度で、なかなか面白いことが出来ていません。
とりあえずXperiaを買ってみて、何か面白い物が作れないかと考えてみようとおもいます。

web開発から引退しました

別業界への就職後も業務委託の形で継続させていただいていたG社でのweb開発ですが、本業が多忙になったため、本日をもって引退させていただきました。

G社ではアルバイトの頃からいくつものプロジェクトに関わらせていただき、大変楽しく勉強になる経験をさせていただきました。
最先端を技術と、それを使いこなすエッジな方々と関われたのは、本当に貴重な経験でした。

G社のようなベンチャーと比べると、現在勤めている会社はまさに重厚長大で、無駄で非効率な部分が沢山残っています。(G社もベンチャーにしては大所帯かもしれませんが)
無駄な仕事をする度に、ベンチャーならこんな余計な事はしないのにと思うことは多々あります。
電子化されていないデータを紙のファイルから探すお仕事なんて、検索に慣れた現代人には正気の沙汰ではありません。

それでも、だからこそ、変化・効率化の余地は大きく、G社を含むweb開発業界での経験を生かす余地はITベンチャーの会社よりも遙かに大きいと思っています。
面倒なので誰にも説明してなかったのですが、実のところ普通の(先端を突っ走る人たちから見ればつまららなそうな)会社に入ったのはこういう理由もありました。
これからも、G社やweb開発業界での経験を基礎とし、歯車として頑張っていきたいと思います。

Scripting.DictionaryのKeyは型に注意

hash("111")とhash(111)は別物みたいです。

    Dim hash As Object
    Set hash = CreateObject("Scripting.Dictionary") 

    hash("111") = "str" 'keyが文字列
    hash(111) = "num" 'key整数型
    
    MsgBox hash("111")
    MsgBox hash(111)

選択範囲から重複を抽出(エクセル)

重複がある奴の背景に色を塗ります。よくCOUNTIFとかで重複チェックを紹介してますが、あれだと一個目が何処にあるか分かりません。これは重複してる物は一つめから分かります。

マクロ実行↓

Sub 選択範囲を重複チェック()
    Dim seen As Object
    Set seen = CreateObject("Scripting.Dictionary") ' %seen
     
    For Each c In Selection
        If seen.exists(c.Value) Then
            c.Interior.Color = 65535
            Cells(seen(c.Value)(0), seen(c.Value)(1)).Interior.Color = 65535 '二回以上塗るけど良いよね
        Else '初
            seen(c.Value) = Array(c.Row, c.Column)
        End If
    Next c
End Sub

hashにRangeオブジェクトを直接つっこめれば楽なんですが、seen(c.Value) = c とやると何故かc.valueが代入されてしまうので、位置をArrayにして次に渡しています。
Arrayは入るのに何故Rangeが駄目なのか・・・

マクロでハッシュを使う(Scripting.Dictionary)

Scripting.Dictionaryと言う奴を使えばできるそうです。MSDNの説明にPerlのハッシュと同じと書いてあって男らしいと思いました。

Dim hash As Object
Set hash = CreateObject("Scripting.Dictionary") 

hash("key1") = "unko"
hash("key2") = Array("aaa", "hogehoge")

If hash.exists("key1") Then
 ...
End If

みたいに使えます

ちなみに、

Dim hash As New Scripting.Dictionary

こんな感じで宣言して使うには、エクセルの方で参照設定→「Microsoft Scripting Runtime」にチェックという前準備が必要で、配布した先で動く保証が無くて恐ろしいんですが、上の例のように

Dim hash As Object
Set hash = CreateObject("Scripting.Dictionary") 

と書くと設定無しでも使えるので配布するにも安心です。

PowerShellでファイルを自動リネーム (ハッシュマップ)

名前順だとfuga hoge piyoと並んでしまうけど、表示上hoge fyga piyoにしたいので、頭に連番を振ってみました。
hoge.txt→01_hoge.txt, fuga.txt→02_fuga.txt みたいな感じで。

$map = @{hoge="01"; fuga="02"; piyo="03";}
ls |
foreach {
	if($_.GetType().Name -ne "FileInfo"){
		continue #ファイル以外はスキップ
	}
	if( ($_.Name -match "^(\w+)\.txt") -and $map[ $Matches[1] ]){ #マッチかつ$mapにあるか
		ren  $_.Name -newName ( $map[ $Matches[1] ] + "_" + $_.Name ) #頭に$map[$1]つけてリネーム
	}
}

ls(=Get-ChildItem)の結果をforeach(=ForEach-Object)に渡して、個々のファイルについて名前を調べて頭に番号を付けている。
$mapに対応がないファイルは勿論スキップ。

ハッシュの書き方は
$hash = @{ key = "value"; key2 = "value2"; }
比較演算子
-eq とか -ne
論理演算子
-and -or 等

論理演算が-andはのけぞる