10yroの開発日記

福岡にある株式会社10yro(トイロ)のエンジニアが書いています

Windowsでファイル名を一括変換する

ファイル名を一括で置換する方法を紹介します。

シェルスクリプトを使った内容となっています。)


1.まずはスクリプトのファイルを作成

拡張子が "sh" のファイル(以下)を作成します。

ファイル名:「batch-process-script.sh」

※その他のファイル名で作成する場合、後に記載のスクリプト内のファイル名は合わせて変更してください。


2.作成したファイルの中身を以下とします。

#!/bin/bash
set -e -u -o pipefail

# 【入力欄】---------------------------------------

# 置換前の文字を以下の""内に入力してください。
readonly BEFORE_CHANGE=""

# 置換後の文字を以下の""内に入力してください。
readonly AFTER_CHANGE=""

# -------------------------------------------------

readonly TARGET_PATH="./"

echo "start"

while read -r f; do
    # This file is excluded.
    if [ $f = "./batch-process-script.sh" ]; then
        continue
    fi
    
    # Directory is excluded.
    if [ -d $f ]; then
        continue
    fi
    
    replaced_name=${f/"$BEFORE_CHANGE"/"$AFTER_CHANGE"}
    echo $f "=>" $replaced_name
    mv $f $replaced_name
    
done < <(find $TARGET_PATH -mindepth 1 -maxdepth 1)

echo "end"

read -p "To close a window, press Enter."

【入力欄】の[BEFORE_CHANGE], [AFTER_CHANGE] には変換したい文字と、変換後の文字を記載して保存します。

例)

 ファイル名の"file" を "test" に変えたい場合は以下

 file-excel-0001.xlsx => test-excel-0001.txt

# 【入力欄】---------------------------------------

# 置換前の文字を以下の""内に入力してください。
readonly BEFORE_CHANGE="file"

# 置換後の文字を以下の""内に入力してください。
readonly AFTER_CHANGE="test"

# -------------------------------------------------


3.後は、このファイルを変更したいファイルがある場所にコピーして実行(ダブルクリック)するだけで、ファイル名を一括で置換できます。

実行したファイル(作成したshファイル)と同じフォルダにある全てのファイルに対して変換が実行されることに注意してください。

実行結果として以下のようなWindowが表示されます。

結果は以下のようになります。

以上、スクリプトでファイル名を一括で変換する方法の紹介でした。


Windowsのツール(PowerRename)を使うなど

ファイル名の一括変更のやり方は色々あると思いますので

正規表現を用いた変換など細かい制御がしたい場合は、活用してみてください。

PowerRename:https://learn.microsoft.com/ja-jp/windows/powertoys/powerrename

【Power BI】常に最新月のデータを初期表示する

Power BIで月単位で構成されたデータをレポート表示する場合に、表示対象の月をスライサーで単一選択して対象データを表示したいケースがあるとします。

常に最新の月のデータを初期表示したい場合、その都度、表示対象の月をスライサーで選択し直す手間が発生します。

最新の月のデータに更新されたタイミングで、連動してスライサーの選択状態を自動的にクリアできないのか?と考えました。
その都度、対象の月を選択するだけなので大した手間ではないのですが、常に最新のデータを初期表示することができたら、ほんの少しだけ便利になります。

 

テストデータとして以下の3つのテーブルを用意しました。

[calendar]:日付を管理するテーブル

[financials]:国、日付ごとの売上データを管理するテーブル

[report_date]:取り込み済みの年月を保持するテーブル

 

[report_date]テーブルの[year_month]をスライサー(単一選択のドロップダウン形式)のフィールドに設定した場合

年月データが増えた際に、スライサーの年月を選択し直す手間が必要です。

 

そこで、

[report_date]テーブルにスライサー設定用の新たな列を追加します。

今回は、最新の年月の場合に「最新データ」の文字列に置換して表示する列[年月]を追加します。

年月 = IF(MAX([report_date]) = [report_date], "最新データ", [year_month])

 
追加した[年月]をスライサーのフィールドに設定し、「最新データ」を選択します。

 

年月データが追加されると、スライサー内のデータは増えますが、そのタイミングで自動的に最新の月のデータに更新されるため、スライサーの選択状態を変更しなくても常に最新データが表示できます。

これで毎月のスライサー値の変更は不要となりました。

 

Power BIサービス上に発行したレポートを複数人で閲覧するような場合は、その都度編集&保存しなくても常に全員が最新データを閲覧することができるので、手間が省けてよかったです。

 

C# 12 新機能

2023年にリリースされたC# 12の新機能について、簡単に纏めました。Visual Studio 2022で使用可能です。

C# 12の新機能は、コードの簡潔さと可読性の向上を目的としており、特に初期化やラムダ式シンタックスが改善されています。

ただし、各機能の特性や使用するコンテキストに応じて、適切に選択することが重要です。デメリットや懸念点も考慮しつつ、プロジェクトの要件に合わせた利用を検討しましょう。

プライマリ コンストラクター

クラスやレコード型の定義内でコンストラクターパラメーターを直接指定することができる機能です。 これにより、コンストラクターの定義を簡潔化し、可読性が向上します。

メリット デメリット
  • 冗長な初期化コードが不要になり、クラスやレコード型の初期化がシンプルになります。
  • コンストラクターパラメーターが直接フィールドやプロパティにバインドされるため、初期化漏れが減少します。
  • 複雑な初期化ロジックや条件付きの初期化を行う場合、可読性が低下し従来のコンストラクターを使用した方がよい場合があります。
  • 初期化パラメーターが増えると可読性が低下する可能性があります。
// C# 11 以前
public class Person
{
    public string Name { get; }
    public int Age { get; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

// C# 12
public class Person(string name, int age) {
    public string Name { get; } = name;
    public int Age { get; } = age;
}

コンストラクター内で明示的にフィールドやプロパティの初期化を行う必要がありましたが、C# 12ではプライマリ コンストラクターを使用することでその必要がなくなります。

コレクション式

コレクション式は、コンパクトな構文を使ってリストや配列などのコレクションを初期化する機能です。これにより、複数の要素を簡単に追加することができます。

メリット デメリット
  • 初期化が簡潔になり、コードの可読性が向上します。
  • 複数の要素を一度に追加できるため、初期化の効率が良くなります。
  • 静的な初期化に適しており、動的な初期化には従来の方法でコレクションを初期化する方がよい場合があります。
  • 初期化する要素が多い場合、可読性低下する可能性があります。
  • // C# 11 以前
    var numbers = new List<int>();
    numbers.Add(1);
    numbers.Add(2);
    numbers.Add(3);
    
    // C# 12
    var numbers = new List<int> { 1, 2, 3 };
    

    コレクションを初期化するためにはコンストラクターを呼び出し、Add メソッドを使って要素を追加する必要がありました。コレクション式を使うと、初期化がより簡潔になります。

    インライン配列

    コンパクトに配列を宣言および初期化する機能です。配列のサイズが固定されている場合に適しています。

    メリット デメリット
    • 配列のサイズが固定の場合に初期化が簡単になり、コードがシンプルになります。
    • 可変長のデータ構造には適さないため、要素数が動的に変化する場合には適していません。
    • 要素の初期化が複雑な場合には、コードの可読性を低下する可能性があります。
    // C# 11 以前
    int[] numbers = new int[] { 1, 2, 3 };
    
    // C# 12
    int[] numbers = { 1, 2, 3 };
    

    配列を初期化する場合には、配列を宣言してから要素を一つずつ指定する必要がありましたが、インライン配列を使うことで一度に要素を宣言および初期化が可能になりました。

    ラムダ式の省略可能なパラメーター

    ラムダ式において、パラメーターに規定値を設定できるようにする機能です。

    メリット デメリット
    • 単純なラムダ式をよりコンパクトに表現でき、可読性が向上します。
    • パラメーターを省略することで一貫性が保たれない場合があり、コードの可読性を損なう可能性があります。
    // C# 11 以前
    var s = (String s) => (s == null) ? "xxx" : s;
    Console.WriteLine(s(null));     // xxx
    Console.WriteLine(s("aaa"));    // aaa
    
    // C# 12
    var s = (String s = "xxx", String[] m) => s;
    Console.WriteLine(s());         // xxx
    Console.WriteLine(s("aaa"));    // aaa
    

    ラムダ式のパラメーターに規定値の指定が可能になり、可変キーワードのparamsにも対応されました。

    ref readonly パラメーター

    メソッドの引数として、読み取り専用にする機能です。これにより、値を変更することなく効率的にメモリを使用できます。

    メリット デメリット
    • 値の変更を防ぎつつ、メモリの使用量を削減します。
    • 安全性を高め、意図しない値の変更を防止します。
    • メソッドの柔軟性が低下し、一部の場面で不都合が生じることがあります。
    • 値型の場合には一時的な変数の作成が必要であり、コードの冗長性が増すことがあります。
    // C# 11 以前
    void ChangeValue(ref int value)
    {
        // valueを更新する処理
    }
    
    
    // C# 12
    void ReaOnlyValue(ref readonly int value)
    {
        // valueを取得する処理のみ
    }
    

    これまでのC#では、refキーワードを使用して値を変更できましたが、ref readonlyを使用することで変更を禁止し、安全性を向上させることが可能になります。

    任意の型の別名設定

    using文で任意の型にエイリアスを設定する機能です。特定の型に対して理解しやすい名前を使用できます。

    メリット デメリット
    • 特定の型に対して直感的なエイリアスを提供し、コードの可読性を向上させます。
    • 適切な命名と運用が行われない場合、可読性が低下する可能性があります。
    • 複数のエイリアスが同じ型を指す場合、コードの理解が難しくなることがあります。
    // C# 11 以前
    using PrimitiveInt = System.Int32;
    using NullableInt = System.Nullable<System.Int32>;
    using TupleInt = System.ValueTuple<System.Int32, System.Int32>;
    
    // C# 12
    using PrimitiveInt = int;
    using ArrayInt = int[];     // C# 11以前で配列は指定不可
    using NullableInt = int?;
    using TupleInt = (int, int);
    

    using 文での型エイリアスは、特定の名前空間内の型に限定されていましたが、任意の型に対してエイリアスを指定することができます。 これらの新機能を使用する際には、それぞれの特性や適用されるコンテキストを正しく理解し、適切に活用することが重要です。特にデメリットや懸念点を考慮しつつ、プロジェクトの要件に合わせて利用することが推奨されます。

    Filament テーブル画面の生成

    前回からの続きとなります。

    dev.10yro.co.jp

    画面生成

    Filamentでは、コマンド1つでテーブル画面を生成することができます。

    php artisan make:filament-resource [モデル名]

    あらかじめ用意しておいたDBを用いてモデルを作成し、画面を生成してみます。

    テーブルの表示やレコードの作成/編集に関連するリソースが生成され、まっさらな画面が表示できるようになります。

    // \app\Filament\Resources\[モデル名]Resource.php
    // 今回はCompanyモデルを使用して生成したため、CompanyResource.php
    <?php
    
    namespace App\Filament\Resources;
    
    use App\Filament\Resources\CompanyResource\Pages;
    use App\Filament\Resources\CompanyResource\RelationManagers;
    use App\Models\Company;
    use Filament\Forms;
    use Filament\Forms\Form;
    use Filament\Resources\Resource;
    use Filament\Tables;
    use Filament\Tables\Table;
    use Illuminate\Database\Eloquent\Builder;
    use Illuminate\Database\Eloquent\SoftDeletingScope;
    
    class CompanyResource extends Resource
    {
        protected static ?string $model = Company::class;
    
        protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
    
        public static function form(Form $form): Form
        {
            return $form
                ->schema([
                    //
                ]);
        }
    
        public static function table(Table $table): Table
        {
            return $table
                ->columns([
                    //
                ])
                ->filters([
                    //
                ])
                ->actions([
                    Tables\Actions\EditAction::make(),
                ])
                ->bulkActions([
                    Tables\Actions\BulkActionGroup::make([
                        Tables\Actions\DeleteBulkAction::make(),
                    ]),
                ]);
        }
    
        public static function getRelations(): array
        {
            return [
                //
            ];
        }
    
        public static function getPages(): array
        {
            return [
                'index' => Pages\ListCompanies::route('/'),
                'create' => Pages\CreateCompany::route('/create'),
                'edit' => Pages\EditCompany::route('/{record}/edit'),
            ];
        }
    }
    

    このリソースファイルを編集し、表示するカラムや実装するフィルター等を設定することができます。
    生成時にデータベースの列に基づいて自動的にテーブルを設定することも可能です。

    php artisan make:filament-resource [モデル名]  --generate

    <?php
    
    namespace App\Filament\Resources;
    
    use App\Filament\Resources\CompanyResource\Pages;
    use App\Filament\Resources\CompanyResource\RelationManagers;
    use App\Models\Company;
    use Filament\Forms;
    use Filament\Forms\Form;
    use Filament\Resources\Resource;
    use Filament\Tables;
    use Filament\Tables\Table;
    use Illuminate\Database\Eloquent\Builder;
    use Illuminate\Database\Eloquent\SoftDeletingScope;
    
    class CompanyResource extends Resource
    {
        protected static ?string $model = Company::class;
    
        protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
    
        public static function form(Form $form): Form
        {
            return $form
                ->schema([
                    Forms\Components\TextInput::make('company_cd')
                        ->required()
                        ->maxLength(200),
                    Forms\Components\Select::make('company_group_id')
                        ->relationship('companyGroup', 'name')
                        ->required(),
                    Forms\Components\TextInput::make('name')
                        ->required()
                        ->maxLength(255),
                ]);
        }
    
        public static function table(Table $table): Table
        {
            return $table
                ->columns([
                    Tables\Columns\TextColumn::make('company_cd')
                        ->searchable(),
                    Tables\Columns\TextColumn::make('companyGroup.name')
                        ->numeric()
                        ->sortable(),
                    Tables\Columns\TextColumn::make('name')
                        ->searchable(),
                    Tables\Columns\TextColumn::make('created_at')
                        ->dateTime()
                        ->sortable()
                        ->toggleable(isToggledHiddenByDefault: true),
                    Tables\Columns\TextColumn::make('updated_at')
                        ->dateTime()
                        ->sortable()
                        ->toggleable(isToggledHiddenByDefault: true),
                ])
                ->filters([
                    //
                ])
                ->actions([
                    Tables\Actions\EditAction::make(),
                    Tables\Actions\DeleteAction::make(),
                ])
                ->bulkActions([
                    Tables\Actions\BulkActionGroup::make([
                        Tables\Actions\DeleteBulkAction::make(),
                    ]),
                ]);
        }
    
        public static function getPages(): array
        {
            return [
                'index' => Pages\ManageCompanies::route('/'),
            ];
        }
    }
    

    自動生成したものを雛形として、そこから手を加えていった方が楽できると思います。

    また、通常の方法で作成した場合はレコードの作成/編集時に別のページに遷移する仕様になっていますが、これをモーダルで処理し1ページで完結させることもできます。

    php artisan make:filament-resource [モデル名]  --generate --simple

    クエリのカスタマイズ

    tableメソッド内でmodifyQueryUsingメソッドを使用することで、生成したテーブルに表示するレコードをカスタマイズすることができます。

    <?php
    
    public static function table(Table $table): Table
    {
        return $table
            ->modifyQueryUsing(CompanyResource::getSelectQuery())
            ->columns([
                //中略
            ]);
    }
    
    private static function getSelectQuery(): \Closure
    {
        return function (Builder $query) {
            //表示したいレコードに合わせてクエリを記述
        };
    }
    

    テーブルを結合して表示したい場合等にはクエリをカスタマイズし、table()メソッド内で該当するカラムを設定することで表示できます。

    最後に

    Filamentを使えば、コマンド一つでテーブル画面を生成し、さらにカスタマイズも容易に行えます。自動生成されたリソースを基に、自分のニーズに合わせた細かい設定を施すことで、効率的に開発を進めることができます。
    また、モーダルを活用することでユーザーエクスペリエンスを向上させ、スムーズな操作感を提供することが可能です。

    C# 並列処理(Task)でパフォーマンスを改善する

    システム開発ではパフォーマンス(ユーザーが操作を行ってからシステムが応答するまでの時間)の改善というのは避けて通れない道です。
    例えば、ある処理を直列で実行しており、約2秒掛かっていたとします。
    それを1秒以内で終わらせることが必要になった場合、もし並列に実行しても問題ない処理であれば並列実行を試してみます。

    今更なのですが、C#で直列パターンと並列パターンの処理時間を比較してみました。

    直列パターン

    以下は直列に実行するコードです。
    単純に順番にメソッドを実行しています。

    static void Main(string[] args)
    {
        var sw = new Stopwatch();
    
        // 実行する処理のリスト
        var actions = new List<Action>()
        {
            () => HeavyMethod("処理1", 500000000),
            () => HeavyMethod("処理2", 300000000),
            () => HeavyMethod("処理3", 500000000),
            () => HeavyMethod("処理4", 100000000),
            () => HeavyMethod("処理5", 100000000),
            () => HeavyMethod("処理6", 200000000),
            () => HeavyMethod("処理7", 300000000),
            () => HeavyMethod("処理8", 400000000),
            () => HeavyMethod("処理9", 300000000),
            () => HeavyMethod("処理10", 100000000),
        };
    
        // すべての処理を直列で実行する
        Console.WriteLine($"★直列処理開始");
        sw.Start();
        foreach (var action in actions)
        {
            action.Invoke();
        }
        sw.Stop();
    
        Console.WriteLine($"★直列処理の時間 {sw.Elapsed.ToString()}");
        Console.ReadKey();
    }
    
    /// <summary>
    /// ループするだけの処理
    /// </summary>
    /// <param name="memo">メモ</param>
    /// <param name="maxCount">ループカウント</param>
    private static void HeavyMethod(string memo, double maxCount)
    {
        for (var i = 0; i < maxCount; i++) {}
        Console.WriteLine($"{memo} 完了");
    }
    

    実行結果

    処理が完了するまで約2秒掛かりました。

    並列パターン

    Task.WaitAllを使って、直列で実行した同じメソッドを並列で実行してみます。

    var taskList = new List<Task>();
    foreach (var action in actions)
    {
        taskList.Add(Task.Run(() => action.Invoke()));
    }
    
    // すべての処理を並列で実行する
    Console.WriteLine($"★並列処理開始");
    sw.Start();
    Task.WaitAll(taskList.ToArray());
    sw.Stop();
    Console.WriteLine($"★並列処理の時間 {sw.Elapsed.ToString()}");
    Console.ReadKey();
    

    実行結果

    1秒以内で完了しました!
    これは最高ですね。

    まとめ

    一概に並列に変えたらパフォーマンスが上がるということはないかもしれませんが、1つの手としてやってみると良いかもしれません。
    C#だとTaskを使えば簡単に実装できるので良いですね。

    ブラウザ上でのネットワーク速度制限

    ブラウザで通信速度を変更したり、オフラインにしたりする方法を記載します。

    開発していて動作確認やテスト時などに、ブラウザをオフラインにしたりネットワークの速度を遅くしたりしたいケースがあるかと思います。

    そんな時に使えるブラウザ(Dev tool)の機能を紹介します。

    ブラウザで [F12] キーを押すと開発者ツールが開きます。

    開いた開発者ツールの中でネットワークアイコンの横にドロップダウンリストが表示されています。

    ※基本的に何もしていなければ「No throttling」になっていると思います。

    ここを開くと以下のようにいくつか選択肢があります。

    ここで、「Fast 3G」や「Slow 3G」を選択するとそれに応じて回線速度が遅くなり

    「Offline」を選べば以下のようにブラウザ上のみオフラインの状態となるなど回線速度の設定ができます。

    さらに細かい設定がしたい場合は [Custom] から細かい指定も可能となっています。

    Webアプリでのネットワークが繋がっていない場合のテストや 通信速度が遅く(または大容量通信)時間がかかる場合のテストをしたいときなど PC自体をオフラインにしたり、データを多く用意するなどせずに確認できるためラクですね。

    以上、ブラウザ上での回線速度を制御する方法でした。

    作業の生産性を向上させるツール

    新年度になって移動や入社などで忙しい時期も少しづつ落ち着いてきたと思います。
    そこで新しい職場や環境でのスタートを成功させるために、便利なツールやアプリを活用して仕事を効率化しましょう。
    これから紹介するものは、特に役立つツールなので仕事をよりスムーズに進めるためのツールを紹介します。もちろん個人での利用にも役に立ちます。

    1. PowerToys

    Microsoftが提供するWindows向けのユーティリティーソフトウェア。
    Windowsを使っている人にとって便利なツール集で、普段の作業がものすごく楽になります。 ウィンドウを一瞬で左右に分割したり、画面上のテキストをすぐコピーできたり、ショートカットキーをカスタマイズしたり・・・。 あとは、ウィンドウの切り替えをもっとスムーズにしたり、画面のレイアウトを整えたりするのも可能です。 apps.microsoft.com github.com

    2. Devtoys

    開発者向けのツールやリソースを提供するプラットフォーム。
    開発者がコーディングやデバッグ作業を効率化するための様々なツールや情報を見つけることができ、スキルを向上させるための情報も豊富です。 開発作業がスムーズになり、より高い品質のソフトウェアを開発することができます。 開発者としてのキャリアを積んでいく上で、標準で入っていないが不思議なくらいです。 apps.microsoft.com devtoys.app

    3. PowerAutomate

    Microsoftの自動化ツール。
    ビジネスプロセスやタスクの自動化を容易に行えます。 メールの自動送信、ファイルの移動、データの更新など、日常的に行う作業を自動化することができて、直感的なフローデザイナーを備えており、コーディングの知識がなくても簡単にワークフローを作成できます。 さらに、様々なアプリケーションやサービスとの連携も可能で、業務効率を大幅に向上させることもできます。 様々な場面で活用できるPowerAutomateは、新入社員からベテランまで、幅広いユーザーにとって役立つツールです。
    但し、Microsoftアカウントが必要でオフラインでは使用できません。 apps.microsoft.com www.microsoft.com

    4. Autoruns

    MicrosoftのSysinternalsツールの1つ。
    Windowsの起動時に自動的に実行されるプログラムやサービスを管理するユーティリティーソフトウェアです。 システムの起動時に自動的に起動するプログラムやサービスを一覧表示し、必要なものと不要なものを見分けることができます。 また、レジストリやスタートアップフォルダーだけでなく、各種設定やアプリケーションから自動的に起動するプログラムやサービスも確認できるため、より包括的な管理が可能です。 セキュリティやパフォーマンスの観点からも重要なツールで、Windowsのシステム管理者やエンドユーザーにとって、有用な情報を提供します。 learn.microsoft.com github.com

    5. Windows Terminal

    Microsoftが提供するコマンドライン インターフェース アプリケーション。
    パワーシェル、コマンドプロンプト、WSL(Windows Subsystem for Linux)など複数のシェルを同時に実行できるため、Windows上でのコマンドライン操作を効率化します。 また、タブを使用して複数のセッションを簡単に切り替えたり、ウィンドウを分割して複数のセッションを同時に表示したりすることも可能です。 さらに、カスタマイズ可能なテーマやフォント、キーバインディングなどの機能も提供されており、ユーザーが自分好みに設定できます。 開発者やシステム管理者など、コマンドラインを頻繁に使用するユーザーにとって、Windows Terminalは非常に便利なツールとなります。 apps.microsoft.com github.com

    6. 7-Zip

    Windows上で利用できるフリーウェアのファイルアーカイブユーティリティ。
    様々な圧縮形式のファイルを作成したり、解凍したりすることができ、高い圧縮率を誇ります。 特に7z形式では他のアーカイバーよりも優れた圧縮率を実現します。 さらに、ZIP、RAR、TAR、GZIP、ISOなど、多くの一般的なアーカイブ形式に対応していて、コマンドラインインターフェースも提供されており、自動化やバッチ処理にも活用できます。7-Zipは使いやすく、軽量でありながら強力な機能を備えており、個人ユーザーから企業ユーザーまで幅広く利用されています。 www.7-zip.org

    7. CLaunch

    カスタマイズ可能なランチャーツール。
    Windowsユーザーがアプリケーションやファイルへの素早いアクセスを可能にします。 任意のキーにアプリケーションやファイルを割り当て、それらを素早く起動することができます。 また、タブ機能も備えており、複数のカテゴリやグループを作成して、アプリケーションを整理したり、作業フローを効率化したりすることができます。 さらに、キーバインディングのカスタマイズやテーマの変更などの様々なオプションが提供されています。 hp.vector.co.jp forest.watch.impress.co.jp

    8. Clibor

    クリップボードの履歴を管理するユーティリティーソフトウェア。
    過去にコピーしたテキストや画像などのデータを簡単に呼び出すことができます。 通常のクリップボードには保存されない複数のコピー履歴を保持し、必要な情報をいつでもアクセスできるようになります。 コピーしたデータを一元管理し、テキストや画像などの種類に関係なく簡単に参照できるため、作業効率を向上させます。 また、キーボードショートカットを使ってクリップボードの履歴を呼び出すこともでき、よりスムーズな操作が可能です。 情報の共有やコピー&ペースト作業が頻繁に行われる環境で特に役立つツールです。 forest.watch.impress.co.jp chigusa-web.com

    9. Biscuit

    ウェブブラウザとタスク管理ツールを統合したアプリケーション。
    ウェブサイトをブックマークしたり、タスクを管理したりすることができ、ウェブブラウザとタスク管理ツールを一つのインターフェースに統合することで、作業効率を向上させます。 ウェブサイトへのアクセスやタスクの管理が、同じ場所で行えるため、作業中にウィンドウやタブを切り替える手間が省け、セッションが別なので複数アカウントの場合でも使用できます。 また、Biscuitはクロスプラットフォーム対応であり、WindowsMacLinuxなど、様々なデバイスで利用できます。 Biscuitを使えば、ウェブ閲覧とタスク管理を一元化し、作業をスムーズに進めることができます。 eatbiscuit.com

    10. EveryThing

    Windows上で動作する高速で効率的なファイル検索ツール。
    パソコン上のファイルやフォルダを素早く検索し、目的のファイルやフォルダを見つけることができます。 ファイル名やパスなどの情報をリアルタイムでインデックス化し、非常に高速な検索を実現します。 検索結果はリアルタイムで表示され、キーワードを入力するだけで目的のファイルやフォルダを即座に見つけることができます。 また、フィルタリングや正規表現を使った高度な検索もサポートしており、大規模なファイルシステムでも高速に動作し、ファイルの整理や検索作業を効率化します。 www.voidtools.com

    11. EverythingToolbar

    WindowsのタスクバーにEverythingの機能を統合するツールです。
    EveryThingがインストールされていることが前提ですが、Windowsのタスクバーから直接ファイルやフォルダを検索し、素早くアクセスすることができます。 EverythingToolbarをインストールすると、タスクバーに検索ボックスが追加され、キーワードを入力するだけで関連するファイルやフォルダをリアルタイムで検索できます。 さらに、検索結果をクリックすると、ファイルやフォルダがすぐに開き、Windowsの標準的なファイル検索機能を拡張し、より迅速で効率的な検索体験を提供します。 github.com

    12. QuickLook

    Windows上でファイルのプレビューを迅速に表示するユーティリティーアプリケーション。
    ファイルを選択した瞬間に、その内容をすばやくプレビューすることができます。 例えば、画像、テキストファイル、PDF、Office文書など、様々なファイル形式のプレビューがサポートされています。 ファイルを選択した後にプレビューを閉じたい場合は、Escapeキーを押すだけで簡単に閉じることができます。 ファイルの内容を素早く確認したい場合や、ファイルのプレビューを簡単に行いたい場合(ソフトをインストールしていない場合)に便利なツールです。 apps.microsoft.com

    13. DeepL

    高度な機械翻訳を提供する人工知能(AI)ベースの翻訳ツール。
    文章や文書を自然な言語に翻訳することができます。他の翻訳ツールよりも優れた翻訳品質を実現しています。 さらに、多くの言語に対応しており、細かいニュアンスや文脈を正確に捉えた翻訳が可能です。 翻訳の速度が速く、使いやすいインターフェースを備えており、ビジネス文書やメール、ウェブページなど、様々な文書の翻訳に活用されています。 www.deepl.com

    14. Feedly

    RSSフィードリーダーの一種で、ニュースやブログ記事などのコンテンツを収集して閲覧するためのプラットフォーム。
    お気に入りのウェブサイトやブログの最新記事を一元管理し、一つの場所から効率的に閲覧することができます。 ユーザーが興味のあるトピックやテーマに基づいてフィードをカスタマイズすることができ、常に最新の情報にアクセスできるようになります。 また、記事をブックマークしたり、後で読むために保存したりする機能も備えており、ウェブ上の情報を効率的に収集し、整理するための優れたツールであり、ビジネスや個人の情報収集に幅広く活用されています。 feedly.com

    15. Tablacus Explorer

    カスタマイズ可能なファイルマネージャーで、Windows Explorerの代替として使用できます。
    シンプルなインターフェースと豊富な機能を備えており、ファイルやフォルダの操作を効率的に行うことができます。 タブ機能をサポートしており、複数のフォルダを同時に開くことができ、カスタマイズ可能なツールバーやショートカットキー、外観の変更など、多彩なカスタマイズオプションが提供されています。 また、プラグインも豊富に備えており、ユーザーが必要に応じて機能を拡張することができます。 ユーザーが個々のニーズに合わせてファイル管理を行うための柔軟性と操作性を提供します。 tablacus.github.io

    16. Giga Text Viewer

    大容量のテキストファイルを効率的に閲覧できるテキストビューア。
    数ギガバイトに及ぶ巨大なテキストファイルを高速かつスムーズに表示することができます。 テキストファイルの読み込みと表示に特化しており、大規模なログファイルやデータベースエクスポートなどの処理に適しています。 さらに、検索機能や行番号の表示、文字コードの自動判別など、便利な機能も備えており、大規模なテキストファイルを扱う際に生じる問題に対処するための頼れるツールであり、プログラマーやシステム管理者など、テキスト処理を行うユーザーにとって重宝されています。 kansai.me

    17. WinMerge

    ファイルやフォルダーの比較およびマージを行うオープンソースの差分表示ツール。 異なるバージョンのファイルやフォルダーを視覚的に比較し、変更点を確認することができ、コードやテキストファイルの変更を検出するための強力なアルゴリズムを備えており、変更点を行ごとにハイライトして表示します。 また、ファイルのマージもサポートしており、複数のバージョンのファイルを統合する際に役立ちます。 さらに、ファイルやフォルダーの比較結果を保存したり、カスタムフィルターを適用したりするなど、様々な機能を提供しています。 ソフトウェア開発者やプロジェクト管理者など、ファイルの変更や統合を頻繁に行うユーザーにとって便利なツールです。 プラグインもたくさんあり、用途により様々なツールと併用して使用できます。 winmerge.org

    18. TresGrep

    テキストファイル内でのパターン検索や置換を行うユーティリティーソフトウェア。 大規模なテキストファイルや複数のファイルから特定の文字列やパターンを検索し、必要に応じて置換することができます。 正規表現をサポートしており、高度な検索条件を指定することができ、検索結果を一覧表示し、該当箇所をすばやく確認することができます。 また、複数のファイルやディレクトリを対象に検索を行うことも可能です。 開発者やシステム管理者など、テキスト処理を行うユーザーにとって便利なツールです。 設定(以下サイト参照)が必要ですが、ExcelやWord等のOffice製品も比較できます。 www.vector.co.jp

    19. 方眼Diff

    方眼Diffは、ファイルやテキストの差分を視覚的に表示するユーティリティーソフトウェア。 比較対象のファイルやテキストを並べて表示し、変更点や差分を簡単に確認することができ、テキストやコードの変更点を行ごとにハイライトして表示し、元ファイルとの違いをわかりやすく示します。 また、差分をインラインで表示したり、マージ操作を行ったりする機能も提供されています。 ソフトウェア開発者やライター、編集者など、変更や差分を追跡する必要があるユーザーにとって便利なツールです。 hogandiff.hotchpotch.xyz

    20. VScode

    Microsoftが提供するオープンソーステキストエディタであり、統合開発環境IDE)。
    様々なプログラミング言語フレームワークに対応し、開発者がアプリケーションやウェブサイトの開発を効率的に行うことができます。 VScodeは軽量かつ高機能であり、豊富な拡張機能やカスタマイズオプションを備えています。 また、インテリセンスやデバッグ機能など、開発作業をサポートする機能が豊富に提供されています。 VScodeクロスプラットフォームで動作し、WindowsMacLinuxなど、様々な環境で利用できます。 開発者コミュニティから広く支持されており、プログラミングにおける開発作業の効率化に貢献しています。 apps.microsoft.com code.visualstudio.com

    以下に記載するものは、Windowsをカスタマイズしたい方や設定が好みではない方は試してみてください。

    21. ExplorerPatcher

    Windowsエクスプローラーの外観や機能をカスタマイズするためのユーティリティツール。
    Windowsの標準的なファイルマネージャであるエクスプローラーの見た目や動作を変更することができます。 例えば、エクスプローラーの背景色やフォルダーアイコン、コンテキストメニューの項目などをカスタマイズすることができます。 ユーザーは自分好みのエクスプローラーを作成し、操作性や視覚的な快適さを向上させることができます。 エクスプローラーの見た目や機能にこだわりを持つユーザーや、個人用途や特定の作業環境に合わせてカスタマイズしたいユーザーにとって、有用なツールとなっています。 github.com

    22. TranslucentTB

    Windowsのタスクバーをカスタマイズして透明にするためのユーティリティーツール。
    通常のタスクバーを透明にしたり、背景をぼかしたりすることができます。 Windows 10やWindows 11のタスクバーの外観を個人の好みやデスクトップのテーマに合わせて調整するのに役立ちます。 また、透明度やぼかしの程度を細かく調整したり、特定のウィンドウをタスクバーの下に隠したりすることも可能で、Windowsのデスクトップ環境を美しくカスタマイズし、より快適な操作体験を実現することができます。 apps.microsoft.com