pythonは鮮度が命なんだよォ!
こんにちは、ナナオです。 ここ5年ほどpythonを触ってきて、Webバックエンドを中心に、良いところも悪いところも一通り踏んできました。 そんな中、新規プロジェクトでpythonを導入する一番のメリットが何かと言われたら何でしょうか? チームメンバーがpythonを使っているから?社内の既存プロジェクトがpythonばかりだから? たしかにそれも理由の一つにはなるでしょう。ですが、プロジェクトのことを考えたときにメンバーが使っているからというのがメリットになるでしょうか? 新しい言語のラーニングコストと、プロジェクトそのもののコスト(運用、パフォーマンスなど)を天秤にかければ、ラーニングコストはそこまで大きなコストではないです。 pythonを採用する最も大きなメリット、それは実装速度です。 とにかくすぐ実装できる コードの制約があまりなく、すぐ実行可能なのはpythonです。これはスクリプト言語の強みでもあります。 バックエンドは以下のように数行で実装できます。 FastAPI from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") def read_item(item_id: int, q: str | None = None): return {"item_id": item_id, "q": q} pythonになじみのない方向けに説明すると、@はデコレーターといって、簡単に言えばラッパー関数を端的に表現したものになります。 https://zenn.dev/ryo_kawamata/articles/learn_decorator_in_python ただ、Rustでも数行で書くことはできます。 GitHub - actix/actix-web: Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust. use actix_web::{get, web, App, HttpServer, Responder}; #[get("/hello/{name}")] async fn greet(name: web::Path<String>) -> impl Responder { format!("Hello {name}!") } #[actix_web::main] // or #[tokio::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service(greet) }) .bind(("127.0.0.1", 8080))? .run() .await } 型情報があるというのはいいことです。スレッドセーフなのも最高。Rustは最高の言語のひとつだと思います。 ...