言語別の使用目的をまとめる
これらは、実際に僕が作ってみてよかったなと思ったものなので、もっといい使い方があったらおしえてください。
Python
現在の用途:
- 簡単なアプリケーション
持ち物アプリを作りました - パフォーマンスを重視しないゲーム
プラットフォーマーをつくりました - 画像認識AI
猫を画像から検出するシステムをつくりました - サーバー開発
djangoでsnsをつくりました
提案:
-
スクリプトの自動化・データ処理:
Pythonの豊富なライブラリ(pandas
やnumpy
)を使えば、データ処理や分析が驚くほど簡単にできます。特に、機械学習の前処理やデータのクリーニングに最適です。 -
ゲームプロトタイピング:
パフォーマンスを重視しないゲームのプロトタイプ作成で、Pygame
はもちろんのこと、Godot
のPythonスクリプト(GDScript
に似た書き方)を利用することも検討できます。 -
Webアプリケーション:
簡単なアプリケーションには、Flask
やFastAPI
を使うことで、バックエンドを短時間で構築可能です。デモを作るときにも便利。
C++
現在の用途:
- パフォーマンスを重視する3D、2Dゲーム
ブロックをつなげるゲームを作りました - 計算
割り算の答えの規則性を、3Dで可視化した
提案:
-
リアルタイムシステム:
C++はリアルタイム性が求められるシステムやロボティクス分野にも適しています。ROS2
(ロボット用OS)はC++での開発に強力です。 -
ハードウェア制御:
パフォーマンスと低レベルアクセスが重要な場合、C++はファームウェア開発やデバイスドライバ作成に適しています。 -
並列計算:
ゲーム以外でも、OpenMP
やTBB
、CUDA
を使った大規模な並列計算にC++は有効です。 -
ゲームのエコシステム整備:
現在のゲーム開発に加え、ツール開発やデータパイプラインの構築もC++で行うと統一感が生まれます。
Rust
現在の用途:
- 複雑な計算
3Dの計算で描画をしています - 複雑なゲーム
ゲームのブロックの開発をしています - サーバー開発
webサイトからサーバーの遠隔操作をするシステムをつくりました
提案:
-
セーフティクリティカルなシステム:
Rustの所有権モデルはバグやメモリリークを防ぐので、安全性が非常に重要な分野(金融システム、暗号技術など)にも応用可能です。 -
高性能Webバックエンド:
Actix
やAxum
を使えば、Rustで高性能かつセキュアなWebアプリケーションを構築できます。GoやNode.jsと比較してもパフォーマンスが高いです。 -
ゲームエンジンやツールの開発:
Rustは「複雑なゲーム」だけでなく、ゲームエンジンや関連ツール(例: レベルエディタ)の開発にも適しています。- 例:
Bevy
エンジンはRustで簡潔に書けます。
- 例:
-
Wasmを活用したアプリケーション:
RustはWebAssembly(Wasm)との相性が良く、軽量で安全なWebゲームやツールを開発可能です。
全体の補足
-
Python × Rust × C++の連携:
C++やRustで重い処理を担当し、Pythonでその結果を可視化・操作するというワークフローも効率的です。Pybind11
やFFI
を使って簡単に連携できます。 -
Pythonでプロトタイピング、C++/Rustで実装:
特に複雑なゲームや計算処理では、最初にPythonでロジックを試し、その後C++やRustで最適化された実装を行う流れがおすすめです。
Discussion