Win10 パソコン高速化 その2

Win10の初期設定ではCPUのパワーをフルに使わず消費電力を節約するように設定されています。
電源オプションを変更してCPUの性能をフルに使いきれるように設定するとパソコンを高速化することができます。

手順1

[Win] + [x]を押して表示されるメニューで[電源オプション]をクリックします。

手順1

手順2

[電源とスリープ]の設定画面で[電源の追加設定]をクリックします。

手順2

手順3

[電源オプション]の設定画面で選択している電源プランの[プラン設定の変更]をクリックします。(私の環境ではHighPerformanceが選択中になっています)

手順3

手順4

[プラン設定の変更]画面で[詳細な電源設定の変更]をクリックします。

手順4

手順5

[電源オプション]設定画面で[プロセッサの電源管理]を選択し、次の3項目を設定します。

  • 最小のプロセッサの状態 → 50~100%
  • システムの冷却ポリシー → アクティブ
  • 最大のプロセッサの状態 → 100%

手順5

Win10 パソコン高速化 その1

Win10を高速化するテクニックを3つご紹介します。


(1)バッググラウンドアプリの停止

まず1つめはバックグラウンドアプリの停止です。(もっとも効果の高い方法の1つだと思われます。)
不必要なソフトがバックグラウンドで動作していると無駄なので不要なものはオフにしておきましょう。

手順1

[Win] + [x]を押して表示されるメニューで[設定]をクリックします。

手順1

手順2

Windowsの設定画面で[プライバシー]をクリックします。

手順2

手順3

左側のメニューから[バックグラウンド アプリ]を選択し、次に右の画面から不要なアプリをオフにします。(ちなみに私は全てオフにしています。特に問題は起きていません。)

手順3


(2)パソコン起動時に同時に起動されるアプリ(スタートアップアプリ)を減らす

起動時に自動起動されるソフトが多いと、パソコンの起動に時間がかかってしまいます。
スタートアップアプリを整理することでパソコン起動の時間を速くすることができます。

手順1

[Win] + [r]を押して[ファイル名を指定して実行]を表示してから[shell:common startup]と入力し、[OK]ボタンをクリックします。

手順1

手順2

[スタートアップ]というタイトルのフォルダが表示されるので、自動起動する必要のないファイルを削除します。(私の環境ではすでに全て削除されている状態になってました。)

手順2


上記の手順1~2で行ったのは全ユーザ共通のスタートアップ(自動起動)アプリとなります。
ユーザごとのスタートアップを削除するには手順1のところで[shell:startup]を入力し、同様に不要なスタートアップアプリを削除します。

手順1(ユーザごとのスタートアップを整理する場合)


(3)スタートアップにない自動起動ソフトを減らす

Windowsではスタートアップ以外にも自動起動ソフトが設定されていて、タスクマネージャーを使って自動起動を無効化することができます。

手順1

[Win] + [x]を押して表示されるメニューで[タスクマネージャー]をクリックします。

手順1

手順2

[スタートアップ]タブを選択し、自動起動が不要なソフトを右クリックし[無効化]を選択します。(よくわからないソフトは無効化しない方が無難ですが、試しに一度無効化して問題あったら有効に戻すということもできます。)

手順2

データ保存用のメディア寿命

レコードや磁気テープ(VHSやカセットテープなど)をデジタル化するとパソコンやスマホなどで管理・鑑賞ができてとても便利になります。

ただ各メディアには経年劣化による寿命があるのでそれを踏まえてデータをどのメディアに保存するかを考えておくことは大変重要です。

メディアの寿命は使用方法や保管方法によって大きく変わりますが、それぞれ目安となる寿命期間を下記の表にまとめましたので参考になれば幸いです。

(1)アナログメディアの寿命一覧

メディア 寿命 メモ
約50年 酸性紙の場合カビや虫害に弱い。
ある程度の湿度(40度~60度)があるほうが長持ちする。
音楽レコード 約50年 未使用であれば50年以上の耐久年数あり。
ただ、再生時の針やホコリ・静電気によるダメージで摩耗する。
磁気テープ(VHS/
カセットテープ)
約30年 常温での耐用年数は30年程度。
カビの発生を抑えるため、多湿環境は避けたほうがよい。

(2)デジタルメディアの寿命一覧

メディア 寿命 メモ
光学メディア
(DVD/Blu-Ray)
約10年 紫外線が大敵。
データ面を上にして保存するのは絶対に避けるべき。
フラッシュメモリ
(USBメモリやSSD)
約5年 データの書き換え回数に制限があり、多用すると
寿命が短くなる。
ハードディスク 約3年 一般的なモデルで耐久年数3年だが、安価なモデルだと
1年以内のケースもある。基本的に長期保存には向かない。

デジタルメディアとしては光学メディア(DVDやBlu-Ray)の寿命が長いのでデジタルデータの長期保存に適していると言えます。

ただ10年以上の保管は保障できないため、一度保存したデータでも10年を目安に再度バックアップしたほうがよいでしょう。

また、超長期保存が可能な光学メディアもありますのでそれらを利用することも検討した方がよいかもしれません。

下記の製品は数百年の超長寿命製品でありオススメです。
やや高額ですが、何度もバックアップすることを考えたらお得感はあるかと思います。

Sikuli - 画面周りの操作メソッド一覧

Sikuliの画面周りメソッドを知っておくと便利なことがいろいろあります。

例えば、getLastMatch()は最後に画像マッチしたオブジェクトをそのまま返してくれるので、waitで画像を見つけた後にclickするとき同じ画像ではなくgetLastMatch()を引数に設定すると、再検索する必要がなく処理が速くなるのでもっともよく使う関数の一つです。

また画像検索メソッドではタイムアウト(デフォルトで3秒)する時間を設定することができますが、setAutoWaitTimeoutを使えば一括で設定することができます。

画面周りの操作に関するメソッド

メソッド 概要
getScreen() 領域を構成するScreenオブジェクト返す。
getLastMatch() 最後に画像マッチした最も類似度が高いMatchオブジェクトを返す。
getLastMatches() 最後に画像マッチしたすべてのMatchオブジェクトを返す。
getTime() 最後に検索してから経過した時間(ミリ秒)を返す。
isRegionValid() Regionが有効かどうか。
setAutoWaitTimeout(seconds) 操作の際の自動待ち時間を設定する(秒)。
getAutoWaitTimeout() 操作の際の自動待ち時間を取得する。
setWaitScanRate(rate) 画像マッチングの際のスキャンレートを設定する。
getWaitScanRate() スキャンレートを取得する。

Sikuli - キー入力と特殊キー/修飾キー一覧

Sikuliでキー入力するにはtypeメソッドを使います。

1
type(画像など[省略可], 入力文字, 修飾キー)

入力文字は「a」「b」「c」などのキー1文字や次の表のような特殊キーを指定することができます。
(1文字の指定しかできませんので、複数の文字を設定したい場合はpasteメソッドを使うことになります。)

特殊一覧

特殊キー定数 意味
Key.ENTER Enterキー
Key.TAB Tabキー
Key.ESC ESCキー
Key.BACKSPACE BSキー
Key.DELETE DELETEキー
Key.INSERT INSERTキー
Key.SPACE スペースキー
Key.F1~Key.F15 ファンクションキー
Key.HOME HOMEキー
Key.END ENDキー
Key.LEFT,Key.RIGHT,
Key.DOWN,Key.UP
カーソルキー群
Key.PAGEUP,Key.DOWN PageUp,PageDownキー
Key.PRINTSCREEN PrintScreenキー
Key.PAUSE Pauseキー
Key.CAPS_LOCK CapsLockキー
Key.SCROLL LOCK ScrollLockキー
Key.NUM_LOCK NumLockキー
Key.NUM0~Key.NUM9 テンキーの数字「0」~「9」
Key.SEPARATOR テンキーの「.」
Key.ADD テンキーの「+」
Key.MINUS テンキーの「-」
Key.MULTIPLY テンキーの「*」
Key.DIVIDE テンキーの「/」

修飾キーは次のキーを指定することができます。

修飾一覧

修飾キー定数 意味
Key.CTRL Ctrlキー
Key.SHIFT Shiftキー
Key.ALT ALTキー
Key.META METAキー(WindowsキーまたはMacのCommandキー)
Key.CMD Commandキー
Key.WIN Windowsキー
Key.ALTGR [Ctrl]と[Alt]を両方同時押し

Sikuli - ObserveEventクラスに関するメソッド一覧

Sikuliのイベントコールバック関数では、引数にObserveEventオブジェクトが渡されます。

ObserveEventクラスのインスタンスメソッド一覧は次の通りです。

ObserveEventクラスのインスタンスメソッド一覧

メソッド 説明
getType() イベントの種類。APPEAR、VANISH、CHANGE、GENERIC、FINDFAILED、MISSINGのいずれかが返る。
isAppear() getType()のイベント種類を確認するメソッド。
isVanish() getType()のイベント種類を確認するメソッド。
isGeneric() getType()のイベント種類を確認するメソッド。
isFindFailed() getType()のイベント種類を確認するメソッド。
isMissing() getType()のイベント種類を確認するメソッド。
getRegion() イベント対象となったRegionオブジェクト。
getPattern イベント対象となったPatternオブジェクト。
getImage() イベント対象の画像。
getMatch() イベント対象のMatchオブジェクト。
getChanges() 変化した場所を示すMatchオブジェクトのリスト。
getCount() コールバック関数が呼び出された回数。
getTime() イベントの発生時間。(エポック秒)
repeat(waitTime) 指定した時間だけ、イベントが発生してもコールバック関数が呼び出されないようにする。
getResponse() FINDFAILEDやMISSINGであるとき、その後どうするかを示した値。PROMPT、RETRY、SKIP、ABORTのいずれか。
setResponse() コールバック関数からの戻り値をPROMPT、RETRY、SKIP、ABORTのいずれかに設定する。
getName() イベントの名前。
stopObserver() イベントオブサーバを停止する。

【関連記事】
Sikuli - 為替レートの変化を常時監視
Sikuli - イベント処理
Sikuli - 監視・イベントに関するメソッド一覧

Sikuli - 監視・イベントに関するメソッド一覧

Sikuliでは監視を行うことで、画像が見つかったときや消えたとき、変化したときにイベントを発生させコールバック関数を呼び出すことができます。

監視・イベントに関数するメソッドは下記の通りです。
(PSはPatternオブジェクト、Stringオブジェクトを表します。)

監視・イベントのメソッド一覧

メソッド 説明
onAppear(PS, handler) PSが見つかったときに呼び出すhandlerを設定する。
onVanish(PS, handler) PSが消えたときに呼び出すhandlerを設定する。
onChange(minChangedSize, handler) 領域内の画像がminChangedSize以上変わったときに呼び出すhandlerを設定する。
observe(seconds) 領域内の画像監視をseconds秒行う。監視中、処理は停止する。
observeInBackground(seconds) 上記と同じだが、バックグラウンドで処理を行うため処理は停止しない。
stopObserver() 監視を停止する。
hasObserver() 監視を設定しているかどうか。
isObserver() 監視中かどうか。
hasEvents() 監視のイベントが発生したかどうか。
getEvents() イベントに関するObserveEventオブジェクトを取得する。
getEvent(name) イベントに関する引数に渡された情報を取得する。
setInactive(name) 監視を指定した名称で一時停止する。
setActive(name) 監視を再開する。

【関連記事】
Sikuli - 為替レートの変化を常時監視
Sikuli - イベント処理

Sikuli - 画像マッチングメソッド一覧

Sikuliでは画像マッチングで処理を行うのが基本となります。
そのため画像マッチングに関するメソッドを一通り把握しておくのはとても重要です。

画像マッチングのメソッド一覧は下記の通りです。
(PSはPatternオブジェクト、Stringオブジェクトを表します。)

画像マッチングのメソッド一覧

メソッド 説明
find(PS) 領域内から、最も類似度が高い部分をMatchオブジェクトとして返す。
findAll(PS) 領域内から、合致する全ての部分をMatchオブジェクトのリストとして返す。
wait(PS, seconds) PSが登場するまでseconds秒待つ。
watiVanish(PS, seconds) PSが消えるまでseconds秒待つ。
exists(PS, seconds) 画像が存在するかどうかを調べる。seconds秒待ち、見つからない場合は例外を発生する。
has(PS, seconds) existsと同じだが、見つからないときに例外を発生しない。
findBest(PS, PS, …) 複数の画像マッチ条件を引数に設定し、もっとも類似度が高いものを返す。
findBestList(ListPS) 上記と同じ動作をするが、引数をリストとして渡す。
findAny(PS, PS, …) 複数の画像マッチ条件を引数に設定し、条件を満たすものを全て返す。
findAny(ListPS) 上記と同じ動作をするが、引数をリストとして渡す。
setImageMissingHandler
(function_name)
画像が存在しなかった時に実行するコールバック関数を設定する。
setFindFailedResponse
(ABOART|SKIP|PROMPT|RETRY)
画像が見つからなかった時にどうするかを設定する。
 ABORT:処理を終了する。
 SKIP:処理をスキップする。
 RETRY:リトライする。
 PROMPT:ダイアログボックスを表示しユーザに選択させる。
setFindFailedHandler(function_name) 画像が見つからなかったときに実行するコールバック関数を設定する。
getFindFailedResponse setFindFailedResponseの現在の値を返す。
setThrowException(False|True) 画像が見つからなかった時に例外を発生するかどうかを設定する。

Sikuli - Appクラスのメソッド

SikuliのAppクラスを使うと、アプリケーションの起動やフォーカスの設定、ウィンドウを閉じるなどの操作を行うことができます。

Appクラスの静的メソッド(インスタンスを生成しないで使用できるメソッド)とインスタンスメソッド(インスタンスを作ってから使用できるメソッド)は下記の通りです。

(1) Appクラスの静的メソッド

メソッド 説明
open(appName)
open(appName, waitTime)
appNameで指定されたアプリを起動し、waitTime秒(デフォルトは1秒)待つ。
appNameがすでに起動中のときは、2重起動しないで前面に表示する。
返値として、そのアプリのAppインスタンスを返す。
close(appName) appNameのアプリを閉じる。
正常に閉じられた場合はTrue、失敗したときはFalseを返す。
focus(title)
focus(title, index)
指定したtitleを持つindex番目のアプリを前面に表示し、フォーカスを設定する。
返値として、そのアプリのAppインスタンスを返す。
focusedWindow() フォーカスされているウィンドウのRegionオブジェクトを返す。
openLink(url) urlを開く。
run(cmd) cmdで指定された実行形式ファイルを実行する。
getClipboard() クリップボードに設定されている文字列を取得する。
setClipboard(text) クリップボードにtextを設定する。

(2) Appクラスのインスタンスメソッド

メソッド 説明
open()
open(waitTime)
アプリを開く。
すでに開かれているときは、それを前面に表示しフォーカスを設定する。
close()
close(waitTime)
アプリを閉じる。閉じるまで最大waitTime秒(デフォルト10秒)待つ。
異常終了とされることがあるのでcloseByKeyメソッドを使う方がおすすめ。
closeByKey()
closeByKey(waitTime)
ウィンドウを閉じるためのキーを送信することで、アプリを閉じる。
閉じるまで最大waitTime秒(デフォルト10秒)待つ。
focus() 前面に表示し、フォーカスを設定する。
hasFocus() フォーカスが設定されているかどうかを返す。
window()
window(winNum)
winNum番目(省略したときは先頭)のウィンドウを示すRegionオブジェクトを返す。
isValid() アプリケーションが有効かどうかを返す。
isRunning() 実行中かどうかを返す。
hasWindow() ウィンドウを持っているかどうかを返す。
getWindow() ウィンドウタイトルを得る。
getPID() プロセスIDを得る。
getName() アプリ名を得る。

Sikuli - APPクラスを使って各ブラウザを起動して閉じる

SikuliのAppクラスからインスタンスを作るとフォーカスをあてたり、ウィンドウタイトルを取得できたり、プロセスIDを取得できたり意外と便利です。
ただインスタンスを作るときの引数[アプリケーション名]に何を指定すべきか迷ったのでまとめてみました。

まず起動するときに指定すべきアプリケーション名は「ファイル名を指定して実行」で起動できるものであればいいみたいでした。
各ブラウザーで例えると下記のようになります。

  • Microsoft Edgeの場合 ⇒ microsoft-edge:
  • インターネットエクスプローラの場合 ⇒ iexplore
  • Chromeブラウザの場合 ⇒ chrome
  • Firefoxブラウザの場合 ⇒ Firefox
  • Operaブラウザの場合 ⇒ opera

Appコンストラクタの返値としては、Appインスタンスが返ってきます。
そのインスタンスを使っていろいろ操作できるはずなんですが、Microsoft Edgeだけは操作することができず一旦’Edge’という引数でAppクラスのインスタンスを作り直せば操作できるようになります。

上記5つのブラウザをそれぞれ起動して閉じる操作を行っているソースと動画がありますのでご参照ください。

ソース



今回の検証でAppインスタンスの作り方として分かったことをまとめます。

  • 「ファイル名を指定して実行」で起動できるアプリケーションであればコンストラクタの引数としてOK。
    ただMicosoft Edgeのように起動はできるが、その後Appインスタンスとして操作ができないことがある。
  • 起動しているアプリケーションであれば「タイトルバー」に表示されている一部文字列をコンストラクタの引数として指定すると有効なAppインスタンスすることができる。
    (Microsoft Edgeはこのやり方で、起動後の操作をすることが可能。)
  • exeまでのフルパスを指定してAppインスタンスを作りアプリ起動することも可能だが、返ってきたAppインスタンスを使って操作することはできない。
    (タイトルバーにexeまでのフルパスが表示されていないことが原因のような気もする。)

明確に検証できたわけではありませんが、上記3点を踏まえるとSikuliのAppインスタンスを使った操作をすることがほとんど可能になるので、今回はこれでよしとしたいと思います。