オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

【DevToys】DevToysとは。インストール方法・起動方法について

DevToysとは

DevToysとは、A Swiss Army knife for developers (開発者のためのスイスアーミーナイフ)という紹介文の通り、エンジニアがよく使うツールが1つにまとまったソフトウェアです。
Devtoysには、以下のようなツールがまとまっています。

変換ツール JSON <> YAML 変換ツール
Unix タイムスタンプ変換
基数変換ツール
Cron パーサ
エンコーダー / デコーダー HTML エンコーダー / デコーダー
URL エンコーダー / デコーダー
証明書 エンコーダー / デコーダー
テキスト向け Base64 エンコーダー / デコーダー
画像向け Base64 エンコーダー / デコーダー
GZipを利用した文字列の圧縮と展開
JWT エンコーダー / デコーダー
フォーマッター JZON フォーマッター
SQL フォーマッター
XMLフォーマッター
生成ツール ハッシュ生成ツール
UUID生成ツール
パスワード生成ツール
Lorem lpsum (ダミーテキスト)生成ツール
チェックサム生成ツール
テキスト テキストのエスケープと解除
文字列の検査と変換
XMLの検証
正規表現テスター
文字列の差分
Markdownプレビュー
グラフィック PNG / JPEG 最適化
カラービッカーとコントラスト
色覚異常シミュレーション
画像フォーマット変換


DevToysのインストール方法について

1.以下のURLにアクセスし、「Download DevToys」を選択します。
DevToys - A Swiss Army knife for developers

Swiss Army knife for developers

2.「Microsoft Store」にて、「インストール」を選択します。

DevToys インストール (Microsoft Store)

3.「入手」を選択します。

DevToys 入手 (Microsoft Store)

以上でインストールは完了です。
続けて「開く」を選択すると、「DevToys」を開くことができます。

DevToys 開く (Microsoft Store)
DevToysの画面

DevToysの起動方法について

DevToysをWindowsキーで検索して、起動する方法

[Windows]キーを押し、検索バーに[devtoys]を入力、検索する。
検索結果の「DevToys」を選択して、起動させます。

[Windows]+[R]キーで「ファイル名を指定して実行」でDevToysを起動する方法

[Windows]キーと[R]キーを同時に押して、「ファイル名を指定して実行」画面を表示させます。
名前欄に「devtoys:」と入力し、「OK」を選択(もしくは[Enter]キー押下)します。

devtoys:

コマンドプロンプトからDevToysを起動する方法

コマンドプロンプトを起動させて、以下のコマンドを実行します。

start devtoys:tool?=[tool name]

上記のままのコマンドでもdevtoysは起動しますが、tool nameにツール名を指定して起動させることも可能です。

'例:gzip
start devtoys:tool?=gzip
'例:SQLフォーマット
start devtoys:tool?=sqlformat

tool nameは以下のURLから確認できます。
github.com

【探索アルゴリズム】二分探索法とは。Excel VBAで二分探索法を試してみる (基本情報技術者・応用情報技術者試験)


<目次>

記事の目的

本記事の目的は以下の通りです。

  • 代表的な探索アルゴリズムの一つである「二分探索法」を、Excel VBAでコードを書いて、プログラムを動かすことで理解を深めること。
  • 基本情報技術者試験応用情報技術者試験の試験対策として、「二分探索法」の学習をすること。

二分探索法とは

二分探索法とは、昇順もしくは降順に並んでいる配列に対して、探索範囲を半分に限定しながら目的のデータを探索するアルゴリズムです。
代表的な探索アルゴリズムの一つで、英語では「binary search」(バイナリーサーチ)といいます。

<二分探索法の動き>
目的のデータと配列の中央のデータを比較します。
目的のデータと配列の中央のデータが一致しない場合は、目的のデータと中央のデータの大小関係により、探索範囲を前半、もしくは後半の半分に限定します。(探索範囲を半分に限定するときには、中央のデータを省きます)
この操作を、データが一致するもしくは、探索する範囲がなくなるまで繰り返します。


二分探索法の例

以下の画像の例では、昇順に整列済みの配列Aに対して、二分探索法で「14」を探しています。

二分探索の参考例

<1回目>では、探索範囲の中央のA(6)と14を比較します。A(6)が探索データより小さいため、A(0)~A(6)の範囲には探索データがないことが分かります。

<2回目>では、lowを「<1回目>のmiddle+1」に切り上げて範囲を限定しています。探索範囲の中央のA(10)と探索データを比較しています。
A(10)が探索データより大きいため、A(10)~A(14)に探索データがないことが分かります。

<3回目>では、highを「<2回目のmiddle-1>」に切り下げて範囲を限定しています。探索範囲のA(8)と探索データを比較し、データが一致しているため、探索データ「14」が配列に存在することが分かりました。


二分索法の探索回数、計算量

二分探索法にて、N個のデータから特定のデータを探索する場合の探索回数、計算量は以下の通りです。

最小回数 1
最大回数 (log2N)+1
平均回数 log2N
計算量 O(logN)


二分探索法をVBAで書いてみる

以下のように1行目に昇順に並んだ数字が入力されてるデータから、特定の数字を二分探索するコードを考えてみましょう。


書き方はいろいろありますが、以下のように書きました。
InputBoxで入力された数字を二分探索し、データがあった場合は何番目に存在したかをメッセージで返すコードとなっています。
※1行目の数字データは、何個でも対応可能です。
※データは昇順に並んでいる必要があります。

Option Explicit

Sub binarySearch()

    '変数の宣言
    Dim target As Long
    Dim low As Long, high As Long, middle As Long
    Dim result As String

    '探索する数字を入力
    target = InputBox("対象")
    '結果の初期値を入力
    result = target & "は存在しません"
    
    'low、high、middleに列番号(インデックス番号)を格納
    low = 1
    high = Cells(1, Columns.Count).End(xlToLeft).Column
    middle = (low + high) / 2
    
    'low > middleになるまで、繰り返す。
    Do While low <= high
        '列番号middleの値で分岐する
        Select Case Cells(1, middle)
            'middle  = target なら、resultに結果を格納して、繰り返しを抜ける
            Case target
                result = target & "は" & middle & "番目に存在します。"
                 Exit Do
            'middle > target ならhighを切り下げる(探索範囲を前半に絞る)
            Case Is > target
                high = middle - 1
            'middle < target ならlowを切り上げる(探索範囲を後半に絞る)
            Case Is < target
                low = middle + 1
        End Select
        
        '切り下げたhighもしくは切り上げたlowをもとにmiddleを算出
        middle = (low + high) / 2
    Loop
    
    '結果を表示させる
    MsgBox result

End Sub


以上、お読みいただきありがとうございました。

【探索アルゴリズム】線形探索法とは。Excel VBAで線形探索法を試してみる (基本情報技術者・応用情報技術者試験)

<目次>

記事の目的

本記事の目的は以下の通りです。

  • 代表的な探索アルゴリズムの一つである「線形探索法」を、Excel VBAでコードを書いて、プログラムを動かすことで理解を深めること。
  • 基本情報技術者試験応用情報技術者試験の試験対策として、「線形探索法」の学習をすること。

線形探索法とは

線形探索法とは、配列の先頭の要素から順番に目的の要素を探索していくアルゴリズムです。
代表的な探索アルゴリズムの一つで、英語では「linear search」(リニアサーチ)といいます。

線形探索法


以下の画像では、配列Aから4を線形探索しています。

線形探索の参考例

線形探索法の探索回数、計算量

線形探索法にて、N個のデータから特定のデータを探索する場合の探索回数、計算量は、以下表のとおりです。

最小回数 1
最大回数 N
平均回数 (1+N)÷2
計算量 O(N)

探索回数は、一番最初に探索するデータがある場合が最小の1回、N番目に探索するデータがある場合が最大のN回です。
そのため、線形探索法の平均探索回数は、( 1 + N ) ÷ 2です。
〈(最小探索回数1回+最大探索回数N回) ÷ 2回〉


線形探索法をVBAで書いてみる

以下のように[A1]~[E1]の5つの数字から、特定の数字を線形探索するコードを考えてみましょう。

探索するデータ


書き方はいろいろありますが、以下のように書きました。
InputBoxで入力された数字を線形探索し、データがあった場合は何番目にあったかをメッセージで返すコードとなっています。

Option Explicit
'配列のインデックス番号を1からとする
Option Base 1

Sub linearSearch()

    '変数の宣言
    Dim target As Long
    Dim list(5) As Long
    Dim i As Long
    Dim result As String


    '探索する数字を入力
    target = InputBox("対象")
    'データがなかった場合のメッセージをresultに格納
    result = target & "はありませんでした"

    '配列にデータを格納
    For i = 1 To 5
        list(i) = Cells(1, i)
    Next i
    
    '線形探索
    For i = 1 To 5
        If list(i) = target Then
            'データが見つかった場合、resultを上書きし、For文を抜ける
            result = target & "は" & i & "番目にありました"
            Exit For
        End If
    Next i
    
    '結果を表示する
    MsgBox result
    
End Sub


以上、お読みいただきありがとうございました。

探索アルゴリズムの「二分探索法」については、以下の記事で紹介しています。
auroralights.jp