13 12月 2024
CodePorting.Wrapper Cs2Pythonは、C#で記述された既存の.NETプロジェクトをPythonと互換性のあるモジュールに変換するツールです。これにより、既存の.NETプロジェクトを一から書き直すことなく、またソースコードを翻訳することなくPythonで使用できるようになります。このツールを使用することで、開発者の時間と労力を節約し、Pythonでの高性能な動作を確保できます。本記事では、CodePorting.Wrapper Cs2Pythonツールを使用してPythonで利用できるようにした5つの人気のある.NETプロジェクトを紹介します。
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 |
C#ソースコードの行数 |
---|
4,100,000 |
Aspose.Wordsは、Word文書を扱うための強力なライブラリであり、文書の作成、編集、変換、およびレンダリングのための幅広い機能を提供します。DOC、DOCX、PDF、HTMLなど多くの形式をサポートしています。Aspose.Wordsは、Microsoft Wordや他のサードパーティアプリケーションを使用せずに文書処理を自動化することができます。
Pythonラッパーライブラリの初版は2021年にリリースされました。それ以来、このライブラリはCs2Pythonラッピングツールの能力向上とともに進化を続けてきました。Python API全体がC# APIに基づいて自動生成されています。
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")
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")
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の強力な機能を活用できるようになりました。
C#ソースコードの行数 |
---|
2,860,000 |
Aspose.Slidesはプレゼンテーションを扱うための強力なライブラリであり、開発者がMicrosoft PowerPointのようなアプリケーションを使用せずにプレゼンテーションを作成、修正、変換、レンダリングすることを可能にします。PPT、PPTX、PDF、HTMLなど、幅広い形式をサポートしています。
Python用にラップされたライブラリの初版は2021年にリリースされ、すぐにユーザーから好評を博しました。オリジナルのC# APIと自動生成されたPython APIを比較してみましょう。
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)
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)
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)
ご覧の通り、両言語の違いは各プログラミング言語固有のコーディングスタイルにのみあります。
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でのパフォーマンス低下なしにスプレッドシート内のすべての数式を正確に計算することを保証します。
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メソッドおよび操作をサポートします。これには、pop
、index
、count
、sort
、reverse
、copy
、append
、remove
、clear
、contains
などのメソッド、__iter__
を使用した反復処理、角かっこ([]
)を使用した要素へのアクセスが含まれます。これにより、ラップされたライブラリからのコレクションとのやり取りは、言語の標準コレクションとの作業と同じくらい便利で直感的になります。
C#ソースコードの行数 |
---|
397,000 |
Aspose.Emailは電子メールを扱うためのライブラリであり、SMTP、POP3、IMAP、Exchange Web Services(EWS)、WebDavなどの幅広い使用シナリオとプロトコルをサポートしています。
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)
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用にラップすることの主な利点を強調したいと思います:
企業向けの.NETプロジェクトをPythonで成功裏にラップしたい場合は、ぜひお問い合わせください。目標達成のお手伝いをいたします。