クロスプラットフォームめも

Linux

🧱 1️⃣ システム系・CLIツール(ターミナルで動くアプリ)

これは最も伝統的なLinux文化のアプリです。

主な言語特徴
C / C++OS標準のライブラリ(glibcなど)やシステムAPIを直接扱える。高速・軽量。多くのLinuxコマンドやデーモンがこれで作られている。
Rust近年人気急上昇。C並みに速く、メモリ安全。CLIツールやシステムプログラムに最適。Cargoで依存管理も楽。
Python学習コストが低く、スクリプト的に使える。多くのLinuxツール(Ubuntuの設定ツールなど)でも採用。

🖥️ 2️⃣ GUIアプリケーション(デスクトップアプリ)

Ubuntuデスクトップでウィンドウが開くタイプ。

主な言語GUIフレームワーク特徴
C++Qt(例:KDE, Krita)高性能で本格的なUIを作れる。KDE Plasmaなどの代表格。
PythonGTK(例:Gnome系)や PyQtコードが短く、学習しやすい。Ubuntu標準ツールにも多く使われている。
RustGTK-rs, Iced, egui など新世代。軽量で安全。最近はGUI対応も増加中。
JavaJavaFX, Swingクロスプラットフォームだが、Linuxではやや重め。
Electron(JS + HTML + CSS)Node.js + ChromiumWeb技術で作るGUI。VSCode, Slackなどもこれ。Linuxでも同様に動作。
Chromベースでメモリバカ食い

🌐 3️⃣ Webアプリ・APIサーバ

LinuxはWebサーバのOSとしても定番。

主な言語主なフレームワーク特徴
PythonDjango / Flask / FastAPI開発スピードが速く、APIサーバ構築に強い。
Node.js (JavaScript/TypeScript)Express / NestJSWeb系では最も人気。軽量でスケールしやすい。
Go (Golang)Gin / Fiber高速・低メモリでサーバ向け。デプロイも簡単。
RustActix / Axumセキュアで超高速。近年のトレンド。
PHPLaravel / SlimWebアプリ・ブログ・CMSなどに今も多い。
優先度言語理由
🥇 PythonOSに標準で入っており、Linux運用からGUIまで何でもできる。将来も生き残る。
🥈 Rust次世代のC。高速・安全・クロスプラットフォーム。Linuxカーネルにも採用開始。
🥉 C++(Qt)GUIやOS操作が強力で、Windows・macOS・Linux全対応。

🔧 開発者が触れる「核に近い」部分

やりたいことできる言語・手法説明
デバイスドライバ作成C / Rustカーネルモジュール(.ko)としてビルド。カーネル空間で実行。
システムコール追加Cカーネルソース改変 or patch適用。実験的開発向き。
デーモン(常駐プロセス)開発C / Rust / Go / Pythonsystemdサービスとして動作。ユーザ空間でOS管理を行う。
システム設定操作C / Python / Bash/proc や /sys 仮想ファイルを介して設定を変更。
プロセス・メモリ操作C / Rustptrace や /proc/<pid>/mem などでデバッグや監視が可能。
領域WindowsLinux / Ubuntu
カーネルWin32API, NT API経由(制限あり)カーネルソースや /proc /sys で直接触れる
ドライバ開発C(WDK必須)CまたはRust(カーネルモジュール)
システムサービスWinService (.NETやC++)systemdサービス(どの言語でもOK)
ユーザー権限操作制約強め(レジストリ依存)sudo, capabilities, namespacesで柔軟

実は、Linux界隈では次のような流れが進んでいます:

流れ内容
🦀 Rustカーネル化Linux 6.x系からRustコードが公式採用され始めた(安全なドライバ開発へ)。
🧩 Flatpak / Snap / AppImageGUIアプリの配布が統一され、開発者が楽になっている。
🌐 Webベースのデスクトップ統合Electron / Tauri / Flutter などで「OS非依存アプリ」が主流化。
🖥️ Ubuntuの商用採用サーバー・IoTだけでなく、開発環境OSとしての地位も上昇中。
開発対象オススメ言語備考
ユーザーアプリ(GUI)Python(PyQt / GTK) or C++(Qt)OS依存が少なく移植性高い
システムツール / デーモンRust / C / GoOSの核に近い操作も可能
クロスプラットフォームRust / Python / Electron / TauriWindows・mac・Linux対応可能
将来性重視Rust 🦀カーネル採用済。10年後も強い可能性

🧩 OSごとの実行ファイル形式一覧

OS代表的な実行ファイル拡張子中身の形式備考
Windows.exe.dllPE形式(Portable Executable)Windows独自。PEヘッダ+セクション構造。
Linux / Ubuntu拡張子なし(例:appmytoolELF形式(Executable and Linkable Format)ほとんどのUNIX系OSが採用。
macOS.app(実体はフォルダ) or 実行ファイル(拡張子なし)Mach-O形式Darwin(macOSカーネル)の標準実行形式。
Android.apk(アプリパッケージ)ZIPに近い構造(中にDEXとリソース)Javaバイトコード+ネイティブso含む。
iOS.ipa(アプリパッケージ)ほぼapkと同じ構造署名必須でApple環境限定。

🧠 各形式の特徴をざっくり説明

🪟 Windows(PE)

  • .exe と .dll がこれ。
  • 「セクション(.text, .data, .rdata)」で構成。
  • 実行時はWindowsローダーが読み込んで仮想メモリに展開。
  • Microsoft独自で、Linuxではそのまま動かない(Wineなどが変換実行)。

🐧 Linux / Ubuntu(ELF)

  • 実行ファイルにも共有ライブラリにも使われる。
  • 実際は .out.bin として出力されることもあるが、拡張子不要
  • 実行権限(chmod +x)があれば動く。
  • ld(リンカ)や ld-linux.so(ローダー)がロードして実行。

🍎 macOS(Mach-O)

  • Apple独自フォーマット。
  • ELFに似てるけど細部が違う(セグメント構成など)。
  • Universal Binary(Intel + ARM両対応)もサポート。
  • Finder上では「.app」と見えるが、中身はフォルダ構造(Contents/MacOS/実行ファイル)。
OS実行形式拡張子ビルド例
WindowsPE.exegcc main.c -o app.exe
Linux / UbuntuELF(なし)gcc main.c -o app
macOSMach-O(.appの中)clang main.c -o app

🔧 小ネタ:同じCコードを複数OS用にビルド可能!

Cはクロスプラットフォーム性が高く、
例えば同じ main.c でもターゲットを変えれば各OSの形式に変換できます👇

目的コマンド例
Linux向けgcc main.c -o myapp
Windows向け(Linux上で)x86_64-w64-mingw32-gcc main.c -o myapp.exe
macOS向け(クロスコンパイル)o64-clang main.c -o myapp

コメント

タイトルとURLをコピーしました