ã¯ããã«
ãNext.js + TypeScriptã®ããã¯ãšã³ãã¯äœãéžã¶ã¹ãïŒã
ãã®åºŠãå人éçºã§Webã¢ããªã±ãŒã·ã§ã³ãéçºããã«ããã£ãŠãããã¯ãšã³ãã®æè¡éžå®ãè¡ããŸããã
åè£ãšããŠã¯
- Ruby (Rails)
- Go
- Python (FastAPI)
ã®3ã€ãããããæåã¯ãRailsã§ããã®ã§ã¯ïŒããšæãã€ã€ãGoãæ°ã«ãªã£ãŠããŸããããçµæãšããŠPython (FastAPI) ãæ¡çšããŸããð
ãã®èšäºã§ã¯ãPythonãæ¡çšããçç±ãšãä»ã®åè£ã§ãã£ãRubyãGoãšã®æ¯èŒã«ã€ããŠãŸãšããŠãããã°ãšæããŸãã
åæ
ã»Webã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ãäœæãã
ã»ããã³ããšã³ãã¯Next.jsïŒTypeScript
ã»ããã¯ãšã³ããæ°èŠäœæãã(äºå®)
ã»ã¹ãã«ã»ãããšããŠãJavaãšRuby(Rails)ã®éçºçµéšãã
Pythonãæ¡çšããçç±
1.æ°ããèšèªããã£ãŠã¿ããã£ã
æ°ããæè¡ãç¿åŸããããšã§ããšã³ãžãã¢ãšããŠã®å¹ ãåºããããšããæãããããŸããã
ããšããšRubyã䜿ã£ãŠããããšããããPythonã¯æ¯èŒçåŠç¿ã³ã¹ããäœããææ³ãã·ã³ãã«ã§èªã¿ããããããã¹ã ãŒãºã«ç¿åŸã§ããããªãšïŒçŽæã§ïŒæããŸããã
â»å®éã«æ¬å±ã§Pythonã®å
¥éæ¬ãç«ã¡èªã¿ãããšãããå²ãšå
容ãã¹ããšå
¥ã£ãŠããã®ãçµæ§æ±ºãæã«ãªããŸããã
2. FastAPIãæžããããã£ã
RailsãGoãããããé åçã§ããããFastAPIã¯
- Pydanticã«ããåå®å š
- éåæåŠçãæšæºå¯Ÿå¿
- Swagger UIã§APIããã¥ã¡ã³ããèªåçæ
ãšããç¹ãé åã§ããã
PydanticïŒãªã¯ãšã¹ãã®åãã§ãã¯ãã§ããããŒã¿ããªããŒã·ã§ã³ã®ã©ã€ãã©ãª
äŸãã°ããããªã³ãŒããæžãã ãã§APIã®ãªã¯ãšã¹ãããªããŒã·ã§ã³ãã§ããŸãã
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
in_stock: bool
@app.post("/items/")
def create_item(item: Item):
return {"message": f"{item.name}ãç»é²ããŸãã"}
ãã®ã¬ãã«ã®åãã§ãã¯ããRailsãGoããã楜ãã«ã§ããã®ã¯ãå人çã«ã¯ãã¡ããã¡ãå¿«é©ã§ããã
ãã ã以äžã®ãããªãã¡ãªãããããã®ã§ãFastAPIãéžæããéã¯æ³šæãå¿ èŠã«ãªããŸãã
- FastAPIã¯æ¯èŒçæ°ãããã¬ãŒã ã¯ãŒã¯ãªã®ã§ãèªèšŒãæš©é管çåšããªã©ã¯Railsã»ã©æçããŠããªãããšã§ãã
äŸãã°ãRailsã§ã¯DeviseãPunditãšãã£ãã©ã€ãã©ãªãååšããäžæ¹ã§ãFastAPIã§ã¯èªèšŒé¢é£ã®å®è£ ãããã«ã¹ã¿ãã€ãºããå¿ èŠããããŸãã
- å ¬åŒãªORMã¯çšæãããŠããªããããSQLAlchemyãªã©ã掻çšããå¿ èŠããããŸãã
3.æ©æ¢°åŠç¿ã䜿ã£ãŠã¿ããã£ã
å°æ¥çã«ãããŒã¿åæãæ©æ¢°åŠç¿ã®æ©èœãçµã¿èŸŒã¿ãããªãšèããŠããŸããã
Pythonã¯ãã®åéã§éåžžã«åŒ·åãªèšèªãšããããšããããç¹ã«ä»¥äžã®ç¹ãé
åçã§ããã
- è±å¯ãªã©ã€ãã©ãª
- æ©æ¢°åŠç¿ãAIéçºã«å¿ èŠãªã©ã€ãã©ãªãå å®ããŠããŠãscikit-learn, TensorFlow, PyTorchãªã©ã掻çšããã°é«åºŠãªã¢ãã«ãç°¡åã«å°å ¥ã§ããç¹
- ããŒã¿åŠçã®ãããã
- Pandas, NumPy ãªã©ã®ã©ã€ãã©ãªã䜿ãããšã§ãããŒã¿ã®ååŠçãåæãå¹ççã«è¡ããç¹
åãªãWebã¢ããªã®éçºã ãã§ãªããå°æ¥çã«ããŒã¿åææ©èœãè¿œå ããããç¹ããPythonãéžãã çç±ã®1ã€ã§ãã
â»å®éã«äœ¿ããã¯å¥ãšããŠãããã®ãšãPythonã«ããšãã°è¯ãã£ã...ããé¿ãããã£ããšããã®ããããŸãã
ä»èšèªãšã®æ¯èŒæ€èš
Pythonã®ä»ã«ãéçºçµéšã®ããRubyãšãæªçµéšãªããèå³ããã£ãGoãåè£ã«æããŠæ¯èŒããŸããã
Ruby
â ã¡ãªãã
- éçºçç£æ§ãé«ã
- Rails ã®ãšã³ã·ã¹ãã (Active Record, Scaffolding ãªã©) ã«ãããçæéã§ã®éçºãå¯èœ
- ãšã¬ã¬ã³ããªã³ãŒã
- DSL (Domain-Specific Language) ãå å®ããŠãããå¯èªæ§ãé«ã
- GraphQL察å¿
- GraphQL APIæ§ç¯ã容æ (äŸïŒgraphql-rubyã©ã€ãã©ãªã掻çšãã)
â ãã¡ãªãã
- éåæåŠçã匱ã
- Goã«æ¯ã¹ããšããªã¢ã«ã¿ã€ã æ§ã®é«ãåŠçã«ã¯äžåã
- ã¹ã±ãŒã©ããªãã£ã«èª²é¡
- é«ãã©ãã£ãã¯ç°å¢ã ãšããã£ãã·ã¥ã®æé©åãããŒã¿ããŒã¹ã®åå²ãããã¯ã°ã©ãŠã³ããžã§ãã®æŽ»çšãªã©ã®é©åãªãã¥ãŒãã³ã°ãå¿ èŠã«ãªã
ãã®ä»
Rubyã§ããdry-schema ã ActiveModel::Validations ã䜿ãã°ãåãã§ãã¯ã匷åããããšã¯ã§ããŸãã
ⶠæ¡çšããªãã£ãçç±
FastAPIã§ã¯strawberryãªã©ã®ã©ã€ãã©ãªãçšããããšã§GraphQL APIãå®è£ ã§ãããšããããšããããç·åçã«å€æããŠRailsãéžã¶æ±ºå®æããªãã£ãã®ã§ãä»åã¯èŠéãããšã«ããŸããã
Go
â ã¡ãªãã
- è¶
é«éãªåŠç
- Goroutineã«ãã䞊è¡åŠçãå¯èœãªãããéåæåŠçã«åŒ·ã
- éçåä»ã
- åå®å šã§ãã°ãé²ãããã
- ã¯ãã¹ã³ã³ãã€ã«å¯èœ
- ãã€ããªåäœã§ã®é åžãå¯èœãªããããããã€ã容æ
â ãã¡ãªãã
- ãšã³ã·ã¹ãã ãçºå±éäž
- ç¹ã«Webãã¬ãŒã ã¯ãŒã¯åšãã§ã¯ãFastAPIãRailsã»ã©ã®æç床ã¯ãªã
- èšè¿°éãå€ã
- Goã¯éçåä»ãã®ãããåå®çŸ©ãæ瀺ããå¿ èŠãããããšã©ãŒãã³ããªã³ã°ã®èšè¿°ãPythonãRubyã«æ¯ã¹ããšåé·ã«ãªããã¡
- ãŸããã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£ ãæ瀺çã«è¡ãå¿ èŠããããããã³ãŒãéãå¢ããåŸåã«ããã
äŸïŒãšã©ãŒãã³ããªã³ã°ã®æ¯èŒ
ã»Go
package main
import (
"errors"
"fmt"
)
func doSomething() error {
return errors.New("Something went wrong")
}
func main() {
if err := doSomething(); err != nil {
fmt.Println("Error:", err)
}
}
ã»Ruby
def do_something
raise "Something went wrong"
end
begin
do_something
rescue => e
puts "Error: #{e.message}"
end
ã»Python
def do_something():
raise Exception("Something went wrong")
try:
do_something()
except Exception as e:
print(f"Error: {e}")
ⶠæ¡çšããªãã£ãçç±
Goã¯ããã©ãŒãã³ã¹é¢ã§ã¯éåžžã«åªç§ã§ãããã®ã®ãAPIãµãŒããŒãšããŠã®éçºã¹ããŒããæ¡åŒµæ§ãèæ
®ãããšãPythonã®ã»ããé©ããŠãããšå€æããŸããã
â»å人éçºã®ããããããŸã§é«ãããã©ãŒãã³ã¹ã¯æ±ããŠããªãããšãçç±ã®1ã€ã§ãã
ïŒãã ãGoã¯æ¬ãèªãã§ã¿ãŠãå®è£ ããŠã¿ãããšæã£ãã®ã§ãã€ãææŠãããâŠïŒïŒ
ãŸãšã
Python(FastAPI)ãéžãã çç±ã¯ã
-
éåæåŠç & åå®å šæ§ â Next.js + TypeScriptãšã®çžæ§ãè¯ã
-
åŠç¿ã³ã¹ããäœã â Pythonã¯æ¯èŒçç°¡åã«ç¿åŸã§ãã
-
å°æ¥çãªæ©æ¢°åŠç¿æŽ»çš â Pythonãªãæ¡åŒµãããã
ãšããç¹ã§ããã
ä»åã¯æ¡çšããªãã£ããã®ã®ãRubyãGoã匷åãªéžæè¢ã§ã¯ããã®ã§ããã®èšäºããNext.jsïŒTypeScriptããšçµã¿åãããããã¯ãšã³ãæ€èšæã®1ã€ã®åèã«ãªãã°å¹žãã§ãã