Skip to main content

scripting-guide

このリポジトリでは、スクリプト実行は全て C# で行います。Python や PowerShell などのスクリプト言語は使用しません。C# を使って、ファイルを作らずにデータ処理を行う方法を提供します。

Quellinformationen

Repository
runceel/super-dotnet-new-01
Letzte Quellaktivität
27. Mai 2026 um 06:23
Erkannte Sprache von SKILL.md
Japanisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
scripting-guide
description
このリポジトリでは、スクリプト実行は全て C# で行います。Python や PowerShell などのスクリプト言語は使用しません。C# を使って、ファイルを作らずにデータ処理を行う方法を提供します。
# データ処理スクリプト作成ガイド(C# file-based apps) このスキルは、C# file-based apps を使ってファイルを作らずにデータ処理を行う方法を提供します。 **適用バージョン:** .NET 10 SDK 以降(C# 14 以降) ## 基本方針 コードは **必ずパイプで `dotnet run -` に渡して実行** してください。 `Set-Content` や `Out-File` 等で `.cs` ファイルを新規作成してから実行する方法は **禁止** です。 **優先順位:** 1. **パイプ実行(必須):** コード文字列を `dotnet run -` に直接パイプして実行する 2. **既存ファイル実行:** プロジェクトに既に存在する `.cs` ファイルを `dotnet <file>.cs` で実行する `#:package` ディレクティブが必要な場合も、パイプ実行で対応できます(後述の「外部ライブラリを使う場合」を参照)。 ## ワンライナー実行(最優先) ### 基本 **PowerShell:** ```powershell 'Console.WriteLine("Hello!");' | dotnet run - ``` **Bash:** ```bash echo 'Console.WriteLine("Hello!");' | dotnet run - ``` ### 複数行 **PowerShell:** ```powershell @' var sum = Enumerable.Range(1, 100).Sum(); Console.WriteLine($"合計: {sum}"); '@ | dotnet run - ``` **Bash:** ```bash dotnet run - << 'EOF' var sum = Enumerable.Range(1, 100).Sum(); Console.WriteLine($"合計: {sum}"); EOF ``` ### 暗黙的に使えるnamespace 以下は `using` 不要で使えます: - `System`, `System.IO`, `System.Collections.Generic`, `System.Linq`, `System.Net.Http`, `System.Threading`, `System.Threading.Tasks` ## 標準ライブラリでの処理 ### JSON処理(パッケージ不要) `json.cs`: ```csharp using System.Text.Json; var json = Console.In.ReadToEnd(); var doc = JsonDocument.Parse(json); Console.WriteLine(doc.RootElement.GetProperty("name")); ``` 実行: ```powershell '{"name":"太郎"}' | dotnet json.cs ``` ## 外部ライブラリを使う場合 `#:package` ディレクティブが必要な場合も、パイプで実行します。ファイルを作成しないでください。 ### CSV処理 ```powershell @' #:package CsvHelper using CsvHelper; using System.Globalization; using var reader = new StreamReader(args[0]); using var csv = new CsvReader(reader, CultureInfo.InvariantCulture); var count = csv.GetRecords<dynamic>().Count(); Console.WriteLine($"レコード数: {count}"); '@ | dotnet run - -- data.csv ``` ### Excel処理 ```powershell @' #:package ClosedXML using ClosedXML.Excel; using var workbook = new XLWorkbook(args[0]); var worksheet = workbook.Worksheet(1); foreach (var row in worksheet.RowsUsed()) { Console.WriteLine(row.Cell(1).Value); } '@ | dotnet run - -- Employee.xlsx ``` ## よく使うライブラリ | 用途 | ディレクティブ | 備考 | |------|---------------|------| | JSON処理 | (不要) | `System.Text.Json` が標準で利用可能 | | CSV処理 | `#:package CsvHelper` | | | Excel処理 | `#:package ClosedXML` | | ## 実用パターン ### 標準入力とファイル引数の両対応 ```csharp var input = args.Length > 0 ? File.ReadAllText(args[0]) : Console.In.ReadToEnd(); Console.WriteLine(input.ToUpper()); ``` 使い方: ```powershell # ファイルから dotnet script.cs -- input.txt # 標準入力から Get-Content input.txt | dotnet script.cs ``` ### エラーハンドリング ```csharp try { // 処理 } catch (Exception ex) { Console.Error.WriteLine($"エラー: {ex.Message}"); return 1; } ``` ## 参考資料 - [File-based apps](https://learn.microsoft.com/dotnet/core/sdk/file-based-apps) - [Top-level statements](https://learn.microsoft.com/dotnet/csharp/fundamentals/program-structure/top-level-statements)
Auf GitHub ansehen