13 12月 2024

Cs2Pythonを使用してPython用にラップされたトップ5の.NETプロジェクト

CodePorting.Wrapper Cs2Pythonは、C#で記述された既存の.NETプロジェクトをPythonと互換性のあるモジュールに変換するツールです。これにより、既存の.NETプロジェクトを一から書き直すことなく、またソースコードを翻訳することなくPythonで使用できるようになります。このツールを使用することで、開発者の時間と労力を節約し、Pythonでの高性能な動作を確保できます。本記事では、CodePorting.Wrapper Cs2Pythonツールを使用してPythonで利用できるようにした5つの人気のある.NETプロジェクトを紹介します。

Python対応のためのAsposeライブラリの適応

Asposeは、さまざまなファイル形式を扱う高品質なライブラリの開発を専門とする先進企業です。その製品は信頼性と豊富な機能で開発者の間で広く認識されています。当初、これらのライブラリはすべてC#で作成され、時間とともに世界中の.NET開発者にとって欠かせないツールとなりました。

Pythonをサポートするために、既存の.NETアセンブリをPython環境内で使用可能にするラッパーコードを自動生成することが決定されました。これを実現するために開発されたのが、CodePorting.Wrapper Cs2Pythonツールであり、.NETプロジェクトをPythonで使用するための適応を容易にします。

PyPIからのダウンロード数に基づいて、Python向けの人気Aspose製品トップ5を見ていきます:

製品 ダウンロード数
1 Aspose.Words 1,287,268
2 Aspose.Slides 488,062
3 Aspose.Cells 286,120
4 Aspose.PDF 177,246
5 Aspose.Email 136,465

1. Aspose.Words

C#ソースコードの行数
4,100,000

Aspose.Wordsは、Word文書を扱うための強力なライブラリであり、文書の作成、編集、変換、およびレンダリングのための幅広い機能を提供します。DOC、DOCX、PDF、HTMLなど多くの形式をサポートしています。Aspose.Wordsは、Microsoft Wordや他のサードパーティアプリケーションを使用せずに文書処理を自動化することができます。

Pythonラッパーライブラリの初版は2021年にリリースされました。それ以来、このライブラリはCs2Pythonラッピングツールの能力向上とともに進化を続けてきました。Python API全体がC# APIに基づいて自動生成されています。

C#とPython APIの比較

  1. 新しいドキュメントの作成とテキストの追加

C#の例:

using Aspose.Words;

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Hello, World!");
doc.Save("HelloWorld.docx");

Pythonの例:

import aspose.words as aw

doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("Hello, World!")
doc.save("HelloWorld.docx")
  1. DOCXからPDFへのドキュメント変換

C#の例:

using Aspose.Words;

Document doc = new Document("Document.docx");
doc.Save("Document.pdf");

Pythonの例:

import aspose.words as aw

doc = aw.Document("Document.docx")
doc.save("Document.pdf")
  1. 2つのドキュメントのマージ

C#の例:

using Aspose.Words;

Document doc1 = new Document("Document1.docx");
Document doc2 = new Document("Document2.docx");

DocumentBuilder builder = new DocumentBuilder(doc1);
builder.MoveToDocumentEnd();
builder.InsertDocument(doc2, ImportFormatMode.KeepSourceFormatting);

doc1.Save("MergedDocument.docx");

Pythonの例:

import aspose.words as aw

doc1 = aw.Document("Document1.docx")
doc2 = aw.Document("Document2.docx")

builder = aw.DocumentBuilder(doc1)
builder.move_to_document_end()
builder.insert_document(doc2, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING)

doc1.save("MergedDocument.docx")

ご覧の通り、両方の言語のAPIは非常に似ており、開発者がC#とPythonの間を移行しやすくなっています。さらに、Asposeライブラリのドキュメントとメンテナンスも簡素化されます。今やCodePorting.Wrapper Cs2Pythonツールのおかげで、開発者はPythonプロジェクトでAspose.Wordsの強力な機能を活用できるようになりました。

2. Aspose.Slides

C#ソースコードの行数
2,860,000

Aspose.Slidesはプレゼンテーションを扱うための強力なライブラリであり、開発者がMicrosoft PowerPointのようなアプリケーションを使用せずにプレゼンテーションを作成、修正、変換、レンダリングすることを可能にします。PPT、PPTX、PDF、HTMLなど、幅広い形式をサポートしています。

Python用にラップされたライブラリの初版は2021年にリリースされ、すぐにユーザーから好評を博しました。オリジナルのC# APIと自動生成されたPython APIを比較してみましょう。

コード例:C#とPython APIの比較

  1. 新しいプレゼンテーションの作成

C#の例:

using Aspose.Slides;

Presentation pres = new Presentation();
pres.Save("NewPresentation.pptx", SaveFormat.Pptx);

Pythonの例:

import aspose.slides as slides

pres = slides.Presentation()
pres.save("NewPresentation.pptx", slides.SaveFormat.Pptx)
  1. スライドの追加

C#の例:

using Aspose.Slides;

Presentation pres = new Presentation("ExistingPresentation.pptx");

ISlide slide = pres.Slides.AddEmptySlide(pres.LayoutSlides[0]);
IAutoShape textbox = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 200);
textbox.TextFrame.Text = "Hello, Aspose.Slides!";

pres.Save("UpdatedPresentation.pptx", SaveFormat.Pptx);

Pythonの例:

import aspose.slides as slides

pres = slides.Presentation("ExistingPresentation.pptx")

slide = pres.slides.add_empty_slide(pres.layout_slides[0])
textbox = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 500, 200)
textbox.text_frame.text = "Hello, Aspose.Slides!"

pres.save("UpdatedPresentation.pptx", slides.SaveFormat.Pptx)
  1. PDFへの変換

C#の例:

using Aspose.Slides;

Presentation pres = new Presentation("ExistingPresentation.pptx");
pres.Save("ConvertedPresentation.pdf", SaveFormat.Pdf);

Pythonの例:

import aspose.slides as slides

pres = slides.Presentation("ExistingPresentation.pptx")
pres.save("ConvertedPresentation.pdf", slides.SaveFormat.Pdf)

ご覧の通り、両言語の違いは各プログラミング言語固有のコーディングスタイルにのみあります。

3. Aspose.Cells

C#ソースコードの行数
600,000

Aspose.CellsはExcelファイルを扱うための強力なAPIであり、開発者がアプリケーション内でスプレッドシートを作成、編集、フォーマット、変換することを可能にし、XLS、XLSX、CSV、PDFなどの幅広い形式をサポートしています。

Aspose.Cellsはスプレッドシート内の大量のデータを処理できるため、そのパフォーマンスに高い要求が求められます。高性能なコンパイル済みC#コードをラップすることで、Pythonでライブラリを使用する際にもこのパフォーマンスは維持されます。コードをPythonに変換することで、操作の速度が大幅に低下する可能性があります。

C#の例:

using Aspose.Cells;
using System;

Workbook workbook = new Workbook("HugeDataWithComplexFormulas.xlsx");
workbook.CalculateFormula();

Worksheet sheet = workbook.Worksheets[0];
Cell resultCell = sheet.Cells["A1"];
Console.WriteLine("計算結果: " + resultCell.Value);

Pythonの例:

import aspose.cells as cells

workbook = cells.Workbook("HugeDataWithComplexFormulas.xlsx")
workbook.calculate_formula()

sheet = workbook.worksheets[0]
result_cell = sheet.cells.get("A1")
print("計算結果: ", result_cell.value)

このコードは、大量のデータを処理し、C#とPythonの両方で数式を計算するためのAspose.Cellsの使用を示しています。calculate_formulaメソッドは重要な作業を行い、Pythonでのパフォーマンス低下なしにスプレッドシート内のすべての数式を正確に計算することを保証します。

4. Aspose.PDF

C#ソースコードの行数
3,655,000

Aspose.PDFはPDF文書を扱うための強力なライブラリであり、開発者がプログラム的にPDF文書を作成、読み取り、編集、および変換することを可能にします。

ご覧のとおり、Aspose.PDFは広範で複雑なプロジェクトであり、C#での豊富なコードベースを持っています。ライブラリのメソッドは、単純なデータ型だけでなく、コレクションやオブジェクトのような複雑な構造も返すことができます。CodePorting.Wrapper Cs2Pythonツールの強みの一つは、Pythonでこれらのデータ型をサポートできることです。

C#の例:

using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;
using System.Collections.Generic;

Document document = new Document("Sample.pdf");
Page page = document.Pages[1];

ImagePlacementAbsorber imageAbsorber = new ImagePlacementAbsorber();
page.Accept(imageAbsorber);

// 現在のページから最初の3つの画像を取得
List<ImagePlacement> images = imageAbsorber.ImagePlacements.Take(3).ToList();

foreach (ImagePlacement image in images)
{
    Console.WriteLine("画像が見つかりました: " + image.Rectangle);
}

Pythonの例:

import aspose.pdf as pdf

document = pdf.Document("Sample.pdf")
page = document.pages[1]

image_placement_absorber = pdf.ImagePlacementAbsorber()
page.accept(image_placement_absorber)

# 現在のページから最初の3つの画像を取得
images = image_placement_absorber.image_placements[:3]

for image in images:
    print("画像が見つかりました:", image.rectangle)

ラップされたライブラリとPythonコードの間で渡されるコレクションは、シーケンスに対するすべての標準Pythonメソッドおよび操作をサポートします。これには、popindexcountsortreversecopyappendremoveclearcontainsなどのメソッド、__iter__を使用した反復処理、角かっこ([])を使用した要素へのアクセスが含まれます。これにより、ラップされたライブラリからのコレクションとのやり取りは、言語の標準コレクションとの作業と同じくらい便利で直感的になります。

5. Aspose.Email

C#ソースコードの行数
397,000

Aspose.Emailは電子メールを扱うためのライブラリであり、SMTP、POP3、IMAP、Exchange Web Services(EWS)、WebDavなどの幅広い使用シナリオとプロトコルをサポートしています。

C#とPython APIの比較

  1. 電子メールの作成と送信

C#の例:

using Aspose.Email;
using Aspose.Email.Clients.Smtp;

var message = new MailMessage();
message.From = new MailAddress("sender@example.com");
message.To.Add(new MailAddress("receiver@example.com"));
message.Subject = "Test Email";
message.Body = "This is a test email sent using Aspose.Email.";

var client = new SmtpClient("smtp.server.com", 25, "username", "password");
client.Send(message);

Pythonの例:

import aspose.email as ae

message = ae.MailMessage()
message.from_address = ae.MailAddress("sender@example.com")
message.to.append(ae.MailAddress("receiver@example.com"))
message.subject = "Test Email"
message.body = "This is a test email sent using Aspose.Email."

client = ae.SmtpClient("smtp.server.com", 25, "username", "password")
client.send(message)
  1. PSTファイルの読み取り

C#の例:

using Aspose.Email;
using Aspose.Email.Storage.Pst;
using System;

void PrintFolderInfo(FolderInfo folder)
{
    Console.WriteLine($"フォルダー: {folder.DisplayName}, メッセージ数: {folder.ContentCount}");
    foreach (var subFolder in folder.GetSubFolders())
    {
        PrintFolderInfo(subFolder);
    }
}

var personalStorage = PersonalStorage.FromFile("path/to/file.pst");
PrintFolderInfo(personalStorage.RootFolder);

Pythonの例:

import aspose.email as ae
import aspose.email.storage.pst as pst

def print_folder_info(folder):
    print(f"フォルダー: {folder.display_name}, メッセージ数: {folder.content_count}")
    for sub_folder in folder.get_sub_folders():
        print_folder_info(sub_folder)

personal_storage = pst.PersonalStorage.from_file("path/to/file.pst")
print_folder_info(personal_storage.root_folder)

この例では、PSTファイル内のすべてのフォルダーを再帰的にトラバースし、各フォルダーのメッセージ数をFolderInfo.ContentCountプロパティ(PythonではFolderInfo.content_count)を使用して出力します。

ご覧のとおり、Python APIインターフェースは再びC# APIインターフェースと同じです。これは、クラス、メソッド、およびプロパティのラッパーやバインディングをPythonで実装する中間層コードの自動生成によって実現されています。これらのバインディングにより、Python環境からC#で書かれた機能にアクセスできます。

結論

結論として、CodePorting.Wrapper Cs2Pythonツールを使用して.NETライブラリをPython用にラップすることの主な利点を強調したいと思います:

  1. 機能の維持:ラッピングにより、オリジナルの.NETライブラリのすべての機能と特徴をパフォーマンスや機能性を失うことなくPythonで使用できるようになります。
  2. 時間とリソースの節約:コードを一から書き直す代わりに、既存の.NETライブラリを迅速にラップしてPythonで使用できるようにすることで、開発時間を大幅に短縮できます。
  3. 広範な互換性:ラップされたライブラリは、Windows、Linux、macOSなどのさまざまなプラットフォームで実行できます。
  4. 自動API生成:ライブラリのC# APIに基づいてPython API全体が自動生成されるため、統合プロセスが簡素化され、機能の一貫性が確保されます。

企業向けの.NETプロジェクトをPythonで成功裏にラップしたい場合は、ぜひお問い合わせください。目標達成のお手伝いをいたします。

関連ニュース

関連記事