カテゴリー別アーカイブ: Windows

ATOK for Windowsのプログラムが2019年2月に更新予定

月額契約のATOK Passportで提供されているATOK for Windowsのプログラムが、2019年2月に新機能の追加込みで更新されるそうです。

ジャストシステム、説明で漢字変換できる新機能を搭載した新「ATOK for Windows」

[PC Watch]

毎年一太郎の新バージョンが2月頃に出るので、それに対応したアップデートのようです。新機能として漢字そのものの説明を入力することにより目的の漢字に変換ができる漢字絞り込み変換と、難読地名を読んだまま入力すると正しく入力できる地名入力変換が追加されているそうです。

漢字絞り込み変換は一見面倒そうですが、旧字体や姓名に使う異体字を入力する際には便利そうに思います。地名入力変換の方は個人的にどこまでマイナーな難読地名に対応しているか試してみたくなります。

Powershellで列が複数あるCSVを読み込む

以前ファイルの整理のためにファイル一覧をCSVに書き出したり、逆にImport-Csvコマンドレットで読み込む方法を調べました。

このImport-Csvコマンドレットですが、複数列あるCSVを読み込むとどうなるか気になったので、試してみることにしました。

試しに以下のようなカンマ区切りのCSVを作成します。

ID,名前
1,りんご
2,ぶどう
3,あんず

これをImport-Csvで読み込むと、以下のように読み取ってくれます。1行目がヘッダとして自動認識されます。

ID 名前
— —-
1 りんご
2 ぶどう
3 あんず
4 なし

この中から特定の値を取り出したい場合、変数に格納した上で処理ができます。

仮にC:\hoge内に”table.csv”があったと仮定すると、

cd C:\hoge

#CSVを読み込んで変数に格納
$csv Import-Csv table.csv

#添字”2”の"名前"の値を取り出す
$csv[2].名前

CSVを格納した変数には配列の要領でアクセスが可能です。例では添字を2にして名前の値を取り出しています。これを実行すると結果は”あんず”と出てきます。2なら”ぶどう”ではないのかと思うのですが、Powershellの配列の添字は0から始まっているので、2は”3番目の値”を示すことになります。

まだ触りだしたばかりでCSVと配列についてはこの程度しか理解できていないのですが、これも結構使い出がありそうに思えます。

Microsoft To-Doの紹介

長らくメモ用アプリとしてはGoogle Keepを使っていたのですが、主な利用目的が買い物メモだったのでMicrosoft To-Doを試してみています。

Web版Microsoft To-Do

[Microsoft.com]

Microsoft To-Doはその名の通りのTo-Do管理アプリなのですが、リスト方式で管理をしているので買い物メモにも使えます。

気に入っているところというのはプラットフォームがUWPアプリ、ブラウザ、Android、iOSと多岐にわたっており、それぞれでの同期が非常に高速なことです。

Office365やSkypeなどを使っている場合は、メールやインスタントメッセージからタスクを生成することもできるそうなので、MS製品の利用が多ければ特に便利なのではないかと思います。Web版はかなり気軽に試せるのでオススメです。

Powershellでフォルダ名称をCSVに並べたり、CSVからフォルダを生成したりする

表題の通り、時々フォルダ内のフォルダ名をリスト化したくなったり、逆にリスト化したフォルダ名称を元にフォルダを自動作成したくなることがあります。

困った時のPowershellで実行可能です。なお、リストはCSVを前提としています。CSVだとExcelで読み書きもできるので、その点で便利です。

フォルダ名称をCSVにリスト化する

Get-ChildItem C:\hoge | Where-Object {$_.Attributes -eq "Directory"} | Select-Object PSChildName | Export-Csv foldername.csv -Encoding UTF8

上記のサンプルではC:\hoge直下のフォルダを一覧にしたCSV、forlername.csvを作成します。Where-Objectの部分でAttributesを使ってフォルダのみを指定しています。

次のSelect-Objectは、デフォルトのままだとフォルダの作成日やパスなどもCSVに出力してしまうので、フォルダ名称のみのリストにするために、値をPSChildNameに限定しています。

CSVからフォルダを作成する

仮に下記のようなデータが格納されたCSV、folder.csvがあったとします。先頭行のfoldernameはヘッダです。

foldername
hoge
piyo
fuga

続いて以下のコードを実行します。

Import-Csv folder.csv | ForEach-Object {New-Item $_.foldername -ItemType Directory}

これでカレントディレクトリにhoge piyo fugaの3つのフォルダが生成されます。

この2つのスクリプトを組み合わせると、フォルダ構造の把握の他にもファイルを除いたコピペのような操作もできるので重宝しています。必要であれば再帰実行用の-Recurseオプションをつけて頂くと便利なのではないかと思います。

PowerShellスクリプトをダブルクリックで実行する

PowerShellスクリプトは*.ps1形式というファイルに保存できますが、このファイルをダブルクリックしてもスクリプトは実行されません。

デフォルトの関連付けがメモ帳だからかと思いましたが、PowerShellの実行ファイルと関連付けをしてもうまく動いてくれません。この場合、別途ps1ファイルへのショートカットを作って、ショートカット経由で実行するとダブルクリックで動かせます。

PowerShellスクリプトへのショートカットを作成する

[@IT]

任意のタイミングで実行するタイプのスクリプトはこの方法で実行できるようにしておくと便利です。

アプリケーション終了時に特定の処理をする

Windows環境でアプリケーション終了時に特定の処理(今回の場合はファイル操作)をする必要があり、方法を考えていました。

何か難しい方法を採用しないといけないのかと思っていましたが、普通にバッチファイルに両方の処理を書くだけでOKということが分かりました。

例えば、

[実行ファイルのパス]/hoge.exe

del [フォルダのパス]/piyo.txt

と2行で構成されたバッチファイルを作れば、hoge.exeを実行し、終了時にpiyo.txtを削除するという要件を満たすことができます。hoge.exeを実行する際にはこのバッチファイルを実行するようにすればOKというわけです。

プロセスの名前やIDを調べてその終了を検知する…というような複雑なことをしないといけないと勝手に思い込んでいましたが、意外に解決策は簡単でした。

新型ATOKの発表会

2018/02/01に新しいATOKがリリースになるそうです。

【速報】新ATOK、パッケージ版廃止で月額制のみに

[PC Watch]

PC Watchさんの記事の見出しにもある通り、2018年のバージョンからはいわゆるパッケージ版の販売がなくなり、月額契約のATOK Passportに一本化されるそうです。

私は約11ヶ月ほどATOK Passportをベーシックプランで利用していますが、税込み286円/月で常に最新のATOKが使えることを考えると、それなりに説得力のある価格設定なのではないかと思っています。

こんな感じで毎日ささやかなエントリを書いていますが、この程度の文章でもATOKを使ってタイピングすると細かいストレスなく文章作成ができるので、価値があるものと思います。

契約しておくとWindows以外にAndroidでも使うことができるので、スマートフォンの文字入力でも役立ちます。

毎月費用が発生するという点は確かに心理的な抵抗がありますが、日々文字入力をする機会がある方ならATOK Passportを試す価値は大いにあると思います。

 

Powershellでファイルをくじ引きする

ちょっと事情がございまして、何らかのプログラムで”特定のフォルダ内にあるテキストファイルをランダムに開く”方法を考えなければならなくなりました。

ネットで調べてみると抽選ツールといった名称でフリーソフトが色々あるのですが、今回はPCの制約上Windows付属の機能で実現しなくてはならないそうです。

そこで、不慣れながらPowershellでできないかを試してみました。

できあがったのがこれです。

$File = Get-ChildItem C:\lotto\*.* -Include *.txt | Get-Random
Invoke-Item $File

  1. Cドライブ直下に抽選用のlottoという名称のフォルダを作り、くじに相当するテキストファイルを入れておきます。
  2. プログラムはGet-ChildItemコマンドレットでlottoフォルダ内のテキストファイルをリスト化します。(-Include *.txtは要らないかと思いましたがくじ以外の物が保存されていると困るので念のためです)
  3. Get-Randomコマンドレットでランダムにリストから抽出が行われ、変数$Fileに格納されます。
  4. 2行目のInvoke-Itemで$Fileに格納したファイルを実行します。関連付けされている既定のプログラムで開く動作をします。

要は実行するとフォルダ内のテキストファイルをランダムにメモ帳で開いてくれるというだけです。あまり抽選めいた派手さはないですが、これでOKだと思います。

Powershellは今回初めて調べてみたのですが、ファイル管理などには有用そうな機能が色々あります。知っていると色々楽ができそうなのでおいおい自習しようかと思っています。

 

ATOK Passport由来と思われるメモリ保護違反エラー

最近Windowsをシャットダウンする寸前に

”hoge”の命令が ”piyo”のメモリを参照しました。メモリが”written”になることはできませんでした… (hogeやpiyoには実際にはメモリ番地と思われる情報が入ります)

というメモリ保護違反エラーが出るので気になっていました。動作上の支障はないのですが、あまりこういうエラーが出るのは気分の良くないものです。

毎回ではなかったのですが、エラーダイアログのタイトルを見るとATOK関連の何らかの実行ファイルで発生しているような情報が読み取れました。

そこでATOK Passportを一旦アンインストールし、再度インストールしたところ、同様のメモリ保護違反エラーは出なくなりました。その後もしばらく継続して使っていますが、今のところエラーは出ていません。

この手のエラーは原因の究明が難しいのですが、エラーダイアログのタイトルに表示されるファイル名はかなりのヒントになるのではないかと思います。ファイル名がある程度特定できるようであれば、再インストールやアンインストールで対応できるのではないかと思います。

Googleドライブの設定を誤ったことによる容量オーバー

メンテナンスのため、PCに入っているGoogleドライブ用の同期アプリ、”Googleのバックアップと同期”を再インストールしました。

私はいつもGoogleドライブで同期するフォルダの場所をデフォルトから変更しているので、いつものように所定のフォルダに変更する旨を設定してセットアップしたつもりだったのですが、しばらくして容量不足のエラーが出て驚きました。

調べてみると、Googleドライブの同期フォルダと思って設定したのは”マイパソコン”という区分のフォルダでした。

よく確認してみると

  • マイパソコン:Windowsの ドキュメント や ピクチャ などユーザが任意にバックアップしたいフォルダを設定
  • Googleドライブ:いわゆるGoogleドライブと同期するフォルダを設定(デフォルトではシステムディスク内に設定)

となっているようでした。

私の想定していた用途では

  • マイパソコン:何も設定しない
  • Googleドライブ:同期するローカルのパスを設定

にするべきでした。今回はマイパソコン側にGoogleドライブでバックアップしていたファイル一式を設定してしまったので、クラウド側が各ファイルを2個ずつバックアップすることになり、容量オーバーになったようです。