0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

多言語を触った高校生エンジニアが、それでもPythonを溺愛してやまない理由

0
Last updated at Posted at 2026-03-26

はじめに

Node.js、Rust、Go、C++、C#、Next.js、Vite、Flask、FastAPI…
高校生の身でありながら、数多くの言語やフレームワークを実際に手を動かして触ってきた。

それでも結局、Pythonに帰ってくる。

フロントエンドにはJavaScript/TypeScript、リアルタイム処理にはNode.js、速度が要求される場面にはRustやC++。適材適所でいろんな言語を使い分けてきたつもりだ。でも「それ以外」は、気がつけばいつもPythonで書いている自分がいる。

なぜここまでPythonが手放せないのか。他言語との比較も交えながら、主観全開で語ってみたい。

これまで触ってきた技術スタック一覧(クリックで展開)
カテゴリ 技術
言語 Python, JavaScript, TypeScript, Rust, Go, C++, C#
フロントエンド HTML/CSS, Next.js, Vite
バックエンド Node.js, Flask, FastAPI, Quart
インフラ Docker, Git, GitHub Actions

圧倒的なエコシステムと「何でもできる」汎用性

「ライブラリが豊富」という言葉で片付けてしまうと少し勿体ない気がしている。

AI/機械学習(PyTorch, TensorFlow)、Webバックエンド(FastAPI, Flask)、スクリプト・自動化、データ分析(pandas, NumPy)、Discord Bot、画像処理(OpenCV, Pillow)、セキュリティツール…
一つの言語がこれだけ幅広い用途に、ファーストクラスのライブラリ付きで対応しているのは、なかなか他に見当たらないんじゃないかと思う。

個人的な体験として、「何か作りたい」と思ったとき、ライブラリを探す前に「Pythonにないか」を疑わなくなったのが、このエコシステムの豊かさを一番実感した瞬間だった。


後方互換性とメンテナンスコストの低さ

個人的にこれが一番大きいかもしれない。

⚠️ ファクト補足:Python 2→3 の移行は歴史的に見て非常に破壊的な変更だった。ここで言う「後方互換性の高さ」は、現在主流のPython 3.x系内での話に限定している点はご注意を。

Node.jsを使っているとバージョンアップ時に依存関係が壊れる経験がどうしても出てくる。

npm install
# → peer dependency conflicts, deprecated warnings...
# → 動いていたコードが突然動かなくなることがある

Python 3.x系では「新機能を使わなければ古いコードがそのまま動く」という設計思想のおかげで、数年前に書いたコードが今でも普通に動くことが多い印象だ。書き直さなくても動く、というのは個人開発では特に助かる。

Node.jsエコシステムでのライブラリ開発経験は深くないため、あくまで「ユーザーとしての主観」です。もし認識が誤っていればぜひご指摘ください 🙏


Rust/C++連携による拡張性

「Pythonは遅い」という話はよく聞く。これは否定しにくい。

ただ、速度が必要な部分だけRustやC++で書いて、Pythonからラッパー経由で呼び出すという選択肢があることを知ってから、速度面の不満がかなり薄れた。

# PyO3(Rust)やpybind11(C++)で作ったネイティブ拡張を呼び出す例
import my_fast_module  # Rustで書かれたネイティブ拡張

result = my_fast_module.heavy_computation(data)
# Pythonの書きやすさ + Rustの速度、という組み合わせが可能になる

実際、NumPyやOpenCVはC/C++で実装されており、Pythonはその「指揮者」として機能している。速度が必要な処理は他言語に任せ、全体の制御はPythonがやるという構成が自然に取れるのが、個人的には強みだと感じている理由の一つだ。


書きやすさと読みやすさ

これは正直、好みの問題もあると思う。ただそれを踏まえても、Pythonの構文は気に入っている。

# 英語の文章を読むようにコードが読める感覚
fruits = ["apple", "banana", "cherry"]
expensive_fruits = [f for f in fruits if is_expensive(f)]
// JavaScriptも同じことはできる
// ただしスタイルの自由度が高い分、書き手によって見た目が大きく変わりやすい
const expensiveFruits = fruits.filter(f => isExpensive(f));
// アロー関数?function宣言?var / let / const? 選択肢が多い

JavaScriptが悪いわけではない。自由度の高さはそれ自体が強みだとも思う。
ただ、インデントで構造が強制されるPythonは、チームや自分の過去コードを読み返すときに迷いにくいというのが、個人的には合っていると感じる。


Pythonの弱点と、それでも使う理由

正直に言うと、根本的な設計段階から非同期を前提としているNode.jsには、スループットや速度では勝てないと思っている。I/O多重処理が中心のAPIサーバーを本番運用するなら、Node.jsのほうが向いているケースもあるだろう。

それでも個人開発の規模では、書きやすさ・メンテナンスのしやすさ・エコシステムの広さというトレードオフがPythonに傾くことが多い。「最速の言語」が必要な場面は思ったより少なくて、「明日の自分が読んで理解できるコード」を書ける言語のほうが、結果として生産性が高いと感じている。


おわりに

Node.jsもRustもGoも、それぞれ本当に良い言語だと思う。使うべき場面はある。
ただ「とりあえず何か作る」「ちょっとスクリプトを書く」「新しいアイデアを試す」という場面では、自分はきっとこれからもPythonを選び続ける気がしている。

言語の優劣の話ではなく、自分の思考リズムに一番合っているというのが、結局のところ一番大きな理由なのかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?