ã¿ã€ãã»ãŒããªæ§æãã¿ãŒã³ãæ€èšããŠãã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãšä¿å®æ§ãåäžãããŸãã倿§ãªç°å¢ãšèšèªã«ãããã¢ããªã±ãŒã·ã§ã³èšå®ã管çããããã®ãã¹ããã©ã¯ãã£ã¹ãçºèŠããŠãã ããã
ã¿ã€ãã»ãŒããªæ§æïŒã¢ããªã±ãŒã·ã§ã³èšå®ã®ã¿ã€ããã¿ãŒã³
çµ¶ããé²åãããœãããŠã§ã¢éçºã®ç¶æ³ã«ãããŠãã¢ããªã±ãŒã·ã§ã³èšå®ã广çã«ç®¡çããããšã¯ãä¿¡é Œæ§ãé«ããä¿å®å¯èœã§ãã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«éåžžã«éèŠã§ãããã®ããã°æçš¿ã§ã¯ãã¿ã€ãã»ãŒããªæ§æã®æŠå¿µãæãäžããæ§æããŒã¿ã®åŠçæ¹æ³ãå€§å¹ ã«æ¹åã§ããããŸããŸãªã¢ããªã±ãŒã·ã§ã³èšå®ã®ã¿ã€ããã¿ãŒã³ãæ€èšããŸããåçŽãªã³ãã³ãã©ã€ã³ããŒã«ããã°ããŒãã«ã«å±éãããè€éãªåæ£ã·ã¹ãã ãŸã§ã倿§ãªç°å¢ã«é©çšã§ãããã¹ããã©ã¯ãã£ã¹ãæ€èšããŸãã
ã¿ã€ãã»ãŒããªæ§æã®éèŠæ§
æ§æã«ã¯ãæ©å¯ããŒã¿ãç°å¢åºæã®ãã©ã¡ãŒã¿ãããã³ã¢ããªã±ãŒã·ã§ã³ã®åäœèšå®ãå«ãŸããããšããããããŸããå ç¢ãªæ§ææŠç¥ããªããšãã©ã³ã¿ã€ã ãšã©ãŒãã»ãã¥ãªãã£ã®è匱æ§ãããã³å°é£ãªãããã°ãçºçããå¯èœæ§ããããŸããã¿ã€ãã»ãŒããªæ§æã«ãããã¢ããªã±ãŒã·ã§ã³èšå®ãã³ã³ãã€ã«æïŒå¯èœãªå ŽåïŒãŸãã¯ã©ã³ã¿ã€ã æã«åŒ·åãªåæå®ã§æ€èšŒããããšã©ãŒã®å¯èœæ§ãæžããã³ãŒãã®æç¢ºããåäžããŸãã
æååããŒã¹ã®æ§æãã¡ã€ã«ã䜿çšããããç°å¢å€æ°ã®ã¿ã«äŸåããããããªã©ãåŸæ¥ã®æ§æã¢ãããŒãã¯ããšã©ãŒãçºçããããããšããããããŸããããšãã°ãæ°å€ã§ããã¯ãã®æ§æèšå®ãæååãšããŠèªã¿åãããäºæããªãåäœã«ã€ãªããå¯èœæ§ããããŸããäžæ¹ãã¿ã€ãã»ãŒããªæ§æã§ã¯ãåã®å¶çŽãé©çšãããæ§æå€ãäºæãããããŒã¿åã«æºæ ããŠããããšãä¿èšŒãããŸãããã®ã¢ãããŒãã«ã¯ãããã€ãã®å©ç¹ããããŸãã
- æ©æãšã©ãŒæ€åºïŒã¿ã€ãã»ãŒããªæ§æã䜿çšãããšãã©ã³ã¿ã€ã ã§ã¯ãªãéçºäžã«ãšã©ãŒãæ€åºã§ããããããããã°ã容æã«ãªããããŠã³ã¿ã€ã ãççž®ãããŸãã
- ã³ãŒãã®å¯èªæ§ãšä¿å®æ§ã®åäžïŒæ§æèšå®ã®åãæç€ºçã«å®çŸ©ããããšã«ãããã³ãŒãã®å¯èªæ§ãåäžããéçºè ãã¢ããªã±ãŒã·ã§ã³ã®æ§ææ¹æ³ãçè§£ãããããªããŸãã
- éçºè ãšã¯ã¹ããªãšã³ã¹ã®åäžïŒã¿ã€ãã»ãŒããªæ§æã«ãããIDEã§ããåªããã³ãŒãè£å®ãšææ¡ãæäŸãããæ§æãšã©ãŒã®å¯èœæ§ãæžããŸãã
- ã»ãã¥ãªãã£ã®è匱æ§ã®ãªã¹ã¯ã®è»œæžïŒæ§æå€ãäºæãããåã«å¯ŸããŠæ€èšŒããããšã«ãããã€ã³ãžã§ã¯ã·ã§ã³æ»æãªã©ã®ç¹å®ã®ã»ãã¥ãªãã£ãªã¹ã¯ã軜æžã§ããŸãã
- ãªãã¡ã¯ã¿ãªã³ã°ã®ç°¡çŽ åïŒæ§æèšå®ãžã®å€æŽã¯ãéçåæããŒã«ã®å©ããåããŠç°¡åã«è¿œè·¡ããã³ãªãã¡ã¯ã¿ãªã³ã°ã§ããŸãã
äžè¬çãªã¢ããªã±ãŒã·ã§ã³èšå®ã®ã¿ã€ããã¿ãŒã³
ã¿ã€ãã»ãŒããªæ§æãå®è£ ããããã«æ¡çšã§ããããã€ãã®ãã¿ãŒã³ããããŸãããããã®ãã¿ãŒã³ã¯ãå€ãã®å Žåçµã¿åãããŠäœ¿çšââãããããŸããŸãªãããžã§ã¯ãã®ããŒãºã«æè»æ§ãšé©å¿æ§ãæäŸããŸãã
1.ããŒã¿è»¢éãªããžã§ã¯ãïŒDTOïŒ/æ§æã¯ã©ã¹
æãåºæ¬çãªã¢ãããŒãã®1ã€ã¯ãã¢ããªã±ãŒã·ã§ã³èšå®ã衚ãå°çšã®ããŒã¿è»¢éãªããžã§ã¯ãïŒDTOïŒãŸãã¯æ§æã¯ã©ã¹ãäœæããããšã§ãããããã®ã¯ã©ã¹ã¯éåžžãæ§æããŒã«å¯Ÿå¿ããããããã£ãå®çŸ©ããåããããã£ã«ã¯ç¹å®ã®ããŒã¿åããããŸãã
äŸïŒCïŒïŒïŒ
public class AppSettings
{
public string? ApiEndpoint { get; set; }
public int TimeoutSeconds { get; set; }
public bool EnableCaching { get; set; }
public string? DatabaseConnectionString { get; set; }
}
ãã®äŸã§ã¯ã`AppSettings`ã¯ã¢ããªã±ãŒã·ã§ã³ã®æ§æã®ã³ã³ãã©ã¯ããšããŠæ©èœããŸããå€ã¯ãããããã£ãèªã¿åãã ãã§ã¢ã¯ã»ã¹ã§ããŸãã .NETã®`Microsoft.Extensions.Configuration`ãªã©ã®ã©ã€ãã©ãªã¯ãç°å¢å€æ°ãæ§æãã¡ã€ã«ãªã©ã®æ§æãœãŒã¹ããããã®ã¯ã©ã¹ã«ãã€ã³ãããããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸãã
å©ç¹ïŒ
- é¢å¿ã®æç¢ºãªåé¢ã
- åäœãã¹ããç°¡åã
- ã³ã³ãã€ã«æã®ã¿ã€ãå®å šæ§ã
èæ ®äºé ïŒ
- ã¯ã©ã¹ãå®çŸ©ããŠå ¥åããã«ã¯ãåæèšå®ãå¿ èŠã§ãã
- è€éãªæ§æéå±€ã«ã¯ãæ éãªèšèšãå¿ èŠã«ãªãå ŽåããããŸãã
2.åæåã«ãã匷åãªåæå®
å¯èœãªå€ã®ã»ãããéãããŠããæ§æèšå®ïŒãã®ã³ã°ã¬ãã«ãç°å¢ã¿ã€ããªã©ïŒã®å Žåãåæåã䜿çšãããšéåžžã«å¹æçã§ãããã®ãã¿ãŒã³ã¯ãã¿ã€ãã»ãŒããä¿èšŒããèš±å¯ãããå€ãå®çŸ©æžã¿ã®ã»ããã«å¶éããŸãã
äŸïŒJavaïŒïŒ
public enum LogLevel {
DEBUG, INFO, WARN, ERROR;
}
public class AppConfig {
private LogLevel logLevel;
public AppConfig(LogLevel logLevel) {
this.logLevel = logLevel;
}
public LogLevel getLogLevel() {
return logLevel;
}
}
ãã®ã¢ãããŒãã§ã¯ã`LogLevel`åæåã䜿çšããŠã`logLevel`æ§æèšå®ãæå¹ãªå€ã«ã®ã¿èšå®ãããããã«ããŸããããã«ããã誀ã£ãæ§æå€ã«ãã£ãŠçºçããã©ã³ã¿ã€ã ãšã©ãŒãé²ããŸãã
å©ç¹ïŒ
- ã¿ã€ãã»ãŒãã®ä¿èšŒã
- ã³ãŒãã®æç¢ºãã®åäžã
- æ§æå€ã®æ€èšŒãç°¡åã
èæ ®äºé ïŒ
- å¹ åºãå¯èœãªå€ãæã€èšå®ã«ã¯é©ããŠããŸããã
- åæåãå®çŸ©ããã³ç¶æããå¿ èŠããããŸãã
3.ããŒã¿ã¢ãããŒã·ã§ã³/æ€èšŒã©ã€ãã©ãªã«ããæ€èšŒ
ç¹ã«å€éšãœãŒã¹ïŒãã¡ã€ã«ãç°å¢å€æ°ãããŒã¿ããŒã¹ïŒããæ§æãèªã¿åãå Žåã¯ãããŒã¿æŽåæ§ãããã«ç¢ºä¿ããããã«ãæ€èšŒææ³ãå©çšããŸããã©ã€ãã©ãªã¯ãæå°/æå€§å€ãå¿ é ãã£ãŒã«ããªã©ãèšå®ãããªã©ãæ§æã¯ã©ã¹ã«æ€èšŒã«ãŒã«ãé©çšããã¡ã«ããºã ãæäŸããããšããããããŸãã
äŸïŒPydanticã䜿çšããPythonïŒïŒ
from pydantic import BaseModel, validator, ValidationError
class Settings(BaseModel):
api_url: str
timeout_seconds: int = 30
@validator("timeout_seconds")
def timeout_must_be_positive(cls, value):
if value <= 0:
raise ValueError("Timeout must be positive")
return value
# Example usage:
settings = Settings(api_url="https://api.example.com", timeout_seconds=60)
print(settings.timeout_seconds)
try:
invalid_settings = Settings(api_url="https://api.example.com", timeout_seconds=-1)
except ValidationError as e:
print(e.errors())
ãã®äŸã§ã¯ãPydanticã䜿çšããŠ`timeout_seconds`èšå®ãæ€èšŒããŸããå€ãè² ã®å Žåãæ€èšŒãšã©ãŒãçºçããã¢ããªã±ãŒã·ã§ã³ãç¡å¹ãªæ§æã䜿çšããã®ãé²ããŸãã
å©ç¹ïŒ
- ããŒã¿æŽåæ§ã匷å¶ããŸãã
- 詳现ãªãšã©ãŒã¡ãã»ãŒãžãæäŸããŸãã
- æ¢åã®æ§æã¡ã«ããºã ãšã®çµ±åãç°¡åã
èæ ®äºé ïŒ
- æ§æç®¡çã«äœåãªè€éãã远å ããŸãã
- æ€èšŒã«ãŒã«ã®æ éãªæ§æãå¿ èŠã§ãã
4.æ§æãã«ããŒ/ãã¡ã¯ããª
ããè€éãªã¢ããªã±ãŒã·ã§ã³ãç¹ã«è€æ°ã®æ§æãœãŒã¹ãŸãã¯åçãªæ§æèŠä»¶ãæã€ã¢ããªã±ãŒã·ã§ã³ã®å Žåã¯ãæ§æãã«ããŒãŸãã¯ãã¡ã¯ããªã®äœ¿çšãæ€èšããŠãã ããããããã®ã³ã³ããŒãã³ãã¯ãããŸããŸãªãœãŒã¹ããæ§æããŒã¿ãèªã¿åããæ€èšŒããæ§æãªããžã§ã¯ããæ§ç¯ãã圹å²ãæ ããŸãã
äŸïŒæ§æã©ã€ãã©ãªã䜿çšããNode.jsïŒïŒ
const convict = require('convict');
const config = convict({
env: {
doc: 'The application environment.',
format: ['production', 'development', 'test'],
default: 'development',
env: 'NODE_ENV'
},
port: {
doc: 'The port to bind.',
format: 'port',
default: 3000,
env: 'PORT'
},
database: {
uri: {
doc: 'Database connection string',
format: String,
default: 'mongodb://localhost:27017/test',
env: 'DATABASE_URI'
}
}
});
config.validate({ allowed: 'strict' });
console.log(config.get('database.uri'));
Node.jsã®`convict`ã®ãããªã©ã€ãã©ãªã䜿çšãããšãæ§æã¹ããŒããå®çŸ©ããããŸããŸãªãœãŒã¹ïŒç°å¢å€æ°ãæ§æãã¡ã€ã«ãªã©ïŒããå€ãèªåçã«ããŒãã§ããŸãã
å©ç¹ïŒ
- é«åºŠã«ã«ã¹ã¿ãã€ãºå¯èœã
- è€æ°ã®æ§æãœãŒã¹ããµããŒãããŸãã
- è€éãªæ§æéå±€ãåŠçã§ããŸãã
èæ ®äºé ïŒ
- ããåçŽãªãã¿ãŒã³ãããå®è£ ãè€éã§ãã
- æ§æãã«ããŒãŸãã¯ãã¡ã¯ããªã®æ éãªèšèšãå¿ èŠã§ãã
5.æ§æã©ã€ãã©ãªã®äœ¿çš
å€ãã®ããã°ã©ãã³ã°èšèªãšãã¬ãŒã ã¯ãŒã¯ã«ã¯ãã¿ã€ãã»ãŒããªæ¹æ³ã§ã¢ããªã±ãŒã·ã§ã³èšå®ã管çããã®ã«åœ¹ç«ã€ããã«ç¹å¥ã«èšèšãããå°çšã©ã€ãã©ãªãçšæãããŠããŸãããããã®ã©ã€ãã©ãªã¯ã次ã®ãããªæ©èœãæäŸããããšããããããŸãã
- ããŸããŸãªãœãŒã¹ïŒãã¡ã€ã«ãç°å¢å€æ°ãã³ãã³ãã©ã€ã³åŒæ°ãããŒã¿ããŒã¹ïŒããã®æ§æã®ããŒãã
- åå€æãšæ€èšŒã
- éå±€æ§æã®ãµããŒãã
- æ§æå€æŽã®ããããªããŒãã
æ§æã©ã€ãã©ãªã®äŸïŒ
- .NETïŒ
Microsoft.Extensions.ConfigurationïŒçµã¿èŸŒã¿ãæè»ïŒ - JavaïŒ Spring Bootã®æ§ææ©èœïŒçµ±åïŒããã³Apache Commons Configuration
- PythonïŒ
pydanticïŒããŒã¿æ€èšŒãšèšå®çšïŒããã³python-dotenvïŒ`.env`ãã¡ã€ã«ã®ããŒãçšïŒ - Node.jsïŒ
convictãconfigãããã³dotenv - GoïŒ
viper
ãããã®ã©ã€ãã©ãªã䜿çšãããšãã¿ã€ãã»ãŒããªæ§æã®å®è£ ããã»ã¹ãåçåãããèšè¿°ããå¿ èŠã®ãããã€ã©ãŒãã¬ãŒãã³ãŒãã®éãåæžãããŸãã
å©ç¹ïŒ
- æ§æç®¡çãç°¡çŽ åããŸãã
- äžè¬çãªã¿ã¹ã¯åãã®äºåæ§ç¯ãããæ©èœãæäŸããŸãã
- éçºæéãççž®ããŸãã
èæ ®äºé ïŒ
- ãµãŒãããŒãã£ã©ã€ãã©ãªãžã®äŸåé¢ä¿ãçããå¯èœæ§ããããŸãã
- ç¹å®ã®ã©ã€ãã©ãªã®APIãåŠç¿ããå¿ èŠããããŸãã
ã¿ã€ãã»ãŒããªæ§æã®ãã¹ããã©ã¯ãã£ã¹
ã¿ã€ãã»ãŒããªæ§æã广çã«å®è£ ããã«ã¯ããã¿ãŒã³ãéžæããã ãã§ãªãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšãäžå¯æ¬ ã§ãããããã®ãã©ã¯ãã£ã¹ã«ãããæ§æã·ã¹ãã ãå ç¢ã§ãä¿å®å¯èœã§ãå®å šã«ãªãããšãä¿èšŒãããŸãã
1.ããŒãºã«åã£ãé©åãªãã¿ãŒã³ãéžæãã
æé©ãªæ§æãã¿ãŒã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®è€éããèšå®ã®æ°ãããã³å®è¡ãããç°å¢ã«ãã£ãŠç°ãªããŸããèšå®ãå°ãªãåçŽãªã¢ããªã±ãŒã·ã§ã³ã®å Žåã¯ãDTO/æ§æã¯ã©ã¹ã䜿çšããã ãã§ååã§ããèšå®ãå€ãè€éãªã¢ããªã±ãŒã·ã§ã³ã®å Žåã¯ãæ§æãã«ããŒãŸãã¯æ€èšŒæ©èœãåããå°çšã©ã€ãã©ãªãããé©åã§ããå¯èœæ§ããããŸãã
2.æ§æãã³ãŒãããåé¢ãã
æ§æå€ã¯ãã³ãŒãããŒã¹ã®å€ã«ä¿åããå¿ èŠããããŸããçæ³çã«ã¯ãç°å¢å€æ°ãæ§æãã¡ã€ã«ããŸãã¯å°çšã®æ§æãµãŒãã¹ã«ä¿åããŸãããã®ã¢ãããŒãã«ãããã¢ããªã±ãŒã·ã§ã³ãåæ§ç¯ãŸãã¯åãããã€ããã«æ§æã倿Žã§ããŸããããã¯ãDevOpsããã³ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒïŒCI/CDïŒãã€ãã©ã€ã³ã«ãããéèŠãªãã©ã¯ãã£ã¹ã§ãã 12èŠçŽ ã¢ããªã®æ¹æ³è«ã䜿çšãããšããããã®åé¡ã«é¢ããåªããã¬ã€ãã³ã¹ãåŸãããŸãã
3.ç°å¢åºæã®æ§æã䜿çšãã
ç°ãªãç°å¢ïŒéçºããã¹ããæ¬çªïŒã§ã¯ãç°ãªãæ§æãå¿ èŠã«ãªãããšããããããŸããç°å¢å€æ°ãäœæããããç°å¢å€æ°ã䜿çšããŠãåç°å¢ã®èšå®ãå®çŸ©ããŸãããã®ãã©ã¯ãã£ã¹ã¯ãã»ãã¥ãªãã£ïŒæ¬çªç°å¢çšã®ç°ãªãããŒã¿ããŒã¹èªèšŒæ å ±ãªã©ïŒãããã©ãŒãã³ã¹ãããã³æ©èœãã¹ãã«ãšã£ãŠéåžžã«éèŠã§ãã
4.æ§æããŒã¿ãæ€èšŒãã
ç¹ã«å€éšãœãŒã¹ããèªã¿åãå Žåã¯ãåžžã«æ§æããŒã¿ãæ€èšŒããŠãã ããããã®ãã©ã¯ãã£ã¹ã«ã¯ãå€ãäºæãããåãç¯å²ãããã³åœ¢åŒã«æºæ ããŠããããšã確èªããããšãå«ãŸããŸããæ€èšŒã¯ãã©ã³ã¿ã€ã ãšã©ãŒãã»ãã¥ãªãã£ã®è匱æ§ãããã³äºæããªãåäœãé²ãã®ã«åœ¹ç«ã¡ãŸããéžæããããã°ã©ãã³ã°èšèªã§äœ¿çšã§ããæ€èšŒã©ã€ãã©ãªãŸãã¯ã¢ãããŒã·ã§ã³ã掻çšããŸãã
5.ããã©ã«ãå€ãæäŸãã
ãã¹ãŠã®æ§æèšå®ã«ããã©ã«ãå€ãæäŸããŸãããã®ãã©ã¯ãã£ã¹ã«ãããæ§æèšå®ãæç€ºçã«æäŸãããŠããªãå Žåã§ããã¢ããªã±ãŒã·ã§ã³ãæ£ããæ©èœããããšãä¿èšŒãããŸããããã©ã«ãå€ã¯é©åã§ãããã¢ããªã±ãŒã·ã§ã³ã®æå³ãããåäœãšäžèŽããå¿ èŠããããŸããåžžã«ããã©ã«ãå€ãææžåããŠãã ããã
6.æ©å¯æ å ±ãä¿è·ãã
ãã¹ã¯ãŒããAPIããŒãªã©ã®æ©å¯æ å ±ãã³ãŒãããŒã¹ãŸãã¯æ§æãã¡ã€ã«ã«ããŒãã³ãŒãããªãã§ãã ããã代ããã«ãæ©å¯æ å ±ãç°å¢å€æ°ãã·ãŒã¯ã¬ãã管çãµãŒãã¹ïŒAWS Secrets ManagerãAzure Key VaultããŸãã¯Google Cloud Secret Managerãªã©ïŒããŸãã¯æå·åãããæ§æãã¡ã€ã«ã«å®å šã«ä¿åããŸãããããã®ã·ãŒã¯ã¬ãããžã®ã¢ã¯ã»ã¹ãæ¿èªãããæ åœè ãšããã»ã¹ã«å¶éããŸããæ©å¯ããŒãšãã¹ã¯ãŒãã宿çã«ããŒããŒã·ã§ã³ããŸãã
7.æ§æãææžåãã
æ§æèšå®ãæç¢ºãã€å æ¬çã«ææžåããŸãããã®ããã¥ã¡ã³ãã«ã¯ã次ã®ãã®ãå«ãŸããŠããå¿ èŠããããŸãã
- åèšå®ã®èª¬æã
- åèšå®ã®äºæãããããŒã¿åã
- åèšå®ã®ããã©ã«ãå€ã
- å€ã®æå¹ãªç¯å²ïŒè©²åœããå ŽåïŒã
- ããŸããŸãªç°å¢ã§èšå®ãæ§æããæ¹æ³ã«é¢ããæ å ±ã
é©åã«ææžåãããæ§æã«ãããéçºè ã¯ã¢ããªã±ãŒã·ã§ã³ãçè§£ããç¶æãããããªããŸãã OpenAPIïŒSwaggerïŒãPostmanãªã©ã®ããŒã«ã䜿çšãããšãAPIããã¥ã¡ã³ããCI/CDã«ç°¡åã«çµ±åã§ããŸãã
8.æ§æãªããŒãã¡ã«ããºã ãå®è£ ããïŒå¿ èŠãªå ŽåïŒ
ã¢ããªã±ãŒã·ã§ã³ãå®è¡æã«æ§æãåçã«æŽæ°ããå¿ èŠãããå Žåã¯ãæ§æãªããŒãã¡ã«ããºã ãå®è£ ããŸãããã®ã¡ã«ããºã ã«ãããã¢ããªã±ãŒã·ã§ã³ã¯æ§æããŒã¿ã®å€æŽãæ€åºããåèµ·åããã«æ°ããå€ããªããŒãã§ããŸããããã¯ã忣ã·ã¹ãã ãã¯ã©ãŠãç°å¢ãžã®ãããã€æã«ç¹ã«åœ¹ç«ã¡ãŸããã©ã€ãã©ãªã¯ãæ§æããŒã¿ã®ãªããŒãã®ããã®çµã¿èŸŒã¿æ©èœãæäŸããããšããããããŸãã
9.æ§æããã¹ããã
åäœãã¹ããšçµ±åãã¹ããäœæããŠãæ§æãæ£ããããŒãããã³äœ¿çšãããŠããããšã確èªããŸãããããã®ãã¹ãã§ã¯ã次ã®ãããªããã€ãã®ã·ããªãªãã«ããŒããå¿ èŠããããŸãã
- ããŸããŸãªãœãŒã¹ããã®æ§æã®ããŒãã
- æ§æå€ã®æ€èšŒã
- æ¬ èœããŠããæ§æèšå®ãŸãã¯ç¡å¹ãªæ§æèšå®ã®åŠçã
- ç°ãªãæ§æå€ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®åäœã®ãã¹ãã
ãã¹ãé§åéçºïŒTDDïŒã¯ãåé¡ãæ©æã«æ€åºããå ç¢ãªæ§æåŠçãä¿é²ããã®ã«åœ¹ç«ã¡ãŸãã
10.æ§æã®ããŒãžã§ã³ç®¡ç
æ§æãã¡ã€ã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒGitãªã©ïŒã«ä¿åããŸãããã®ãã©ã¯ãã£ã¹ã«ãããæ§æãžã®å€æŽã远跡ããããå¿ èŠã«å¿ããŠä»¥åã®ããŒãžã§ã³ã«æ»ããããä»ã®éçºè ãšå¹æçã«å ±åäœæ¥ãããã§ããŸãããã©ã³ãæŠç¥ïŒGitflowãªã©ïŒã¯ãæ§æãã¡ã€ã«ç®¡çã«åœ¹ç«ã¡ãŸãã
åœéåãšããŒã«ãªãŒãŒã·ã§ã³ã®èæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããå Žåã¯ãæ§ææŠç¥ã§åœéåïŒi18nïŒãšããŒã«ãªãŒãŒã·ã§ã³ïŒl10nïŒãèæ ®ããŠãã ãããæ§æã¯ãèšèªåºæã®èšå®ãé貚圢åŒãæ¥ä»ãšæå»ã®åœ¢åŒãããã³ãã®ä»ã®ãã±ãŒã«ã«äŸåããããŒã¿ãåŠçããå¿ èŠãããå ŽåããããŸãã
- ãã±ãŒã«åºæã®èšå®ïŒãã±ãŒã«åºæã®èšå®ã«å¯Ÿå¿ããããã«æ§æãèšèšããŸããããã«ã¯ãç°ãªãèšèªãŸãã¯ãªãŒãžã§ã³ã®èšå®ãä¿åããããšãå«ãŸããå ŽåããããŸãã
- ãªãœãŒã¹ãã³ãã«ïŒãªãœãŒã¹ãã³ãã«ïŒJavaã®ããããã£ãã¡ã€ã«ãJSONãã¡ã€ã«ãªã©ïŒãå©çšããŠãããŒã«ã©ã€ãºãããããã¹ãããã®ä»ã®ãªãœãŒã¹ãä¿åããŸãã
- æ¥ä»ãšæå»ã®åœ¢åŒïŒãŠãŒã¶ãŒã®ãã±ãŒã«ã«åºã¥ããŠãé©åãªæ¥ä»ãšæå»ã®åœ¢åŒã䜿çšããŸãã
- é貚圢åŒïŒãŠãŒã¶ãŒã®ãã±ãŒã«ã«åŸã£ãŠé貚å€ã圢åŒèšå®ããŸãã
ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã¯ãi18nãšl10nã®çµã¿èŸŒã¿ãµããŒããæäŸããããšãå€ããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã容æã«ãªããŸããããšãã°ãJavaã®`java.util.Locale`ã¯ã©ã¹ãããã®ä»ã®ããã°ã©ãã³ã°èšèªã®ICUã©ã€ãã©ãªã䜿çšããŠããŠãŒã¶ãŒã®ãã±ãŒã«ã«åŸã£ãŠæ¥ä»ãšçªå·ã圢åŒèšå®ããŸãã
äŸãšå®éã®ã¢ããªã±ãŒã·ã§ã³
ã¿ã€ãã»ãŒããªæ§æãéèŠãªå®éã®ã·ããªãªãèŠãŠã¿ãŸãããã
- Eã³ããŒã¹ãã©ãããã©ãŒã ïŒæ§æã«ã¯ãæ¯æãã²ãŒããŠã§ã€ã®èªèšŒæ å ±ãé éæïŒåœåºæïŒãããã³çšçïŒå°åã«ãã£ãŠç°ãªãïŒãå«ãŸããŠããã管çããã³ä¿è·ããå¿ èŠããããŸãã
- ã°ããŒãã«SaaSã¢ããªã±ãŒã·ã§ã³ïŒãã«ãããã³ãã¢ããªã±ãŒã·ã§ã³ã¯ãAPIãšã³ããã€ã³ããããŒã¿ããŒã¹æ¥ç¶ïŒå°ååºæïŒãããã³æ©èœãã©ã°ïŒé¡§å®¢ã®ãµãã¹ã¯ãªãã·ã§ã³ã«åºã¥ãïŒã®æ§æã«äŸåããŠããŸãã
- éèã·ã¹ãã ïŒéèããŒã¿ãåŠçããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãAPIããŒãèŠå¶ã³ã³ãã©ã€ã¢ã³ã¹èšå®ãããã³ã¬ãŒãå¶éãå®å šã«ä¿åããå¿ èŠããããŸãã
- ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ïŒã¢ãã€ã«ã¢ããªã§ã¯ãAPIãšã³ããã€ã³ããUIããŒããããã³ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èšèªã®éžæã«æ§æãé »ç¹ã«äœ¿çšããŸãã
- ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ïŒãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã§ã¯ãåãµãŒãã¹ã¯ãããŒã¿ããŒã¹ãã¡ãã»ãŒãžãã¥ãŒãããã³ãµãŒãã¹ééä¿¡ã®ããã«ç¬èªã®æ§æãæã€ããšããããããŸãã
ã°ããŒãã«ã«åæ£ãããé è»ãµãŒãã¹ããããŸããŸãªå°åã§APIãšã³ããã€ã³ããæ§æããå¿ èŠãããã·ããªãªãèããŠã¿ãŸããããã¿ã€ãã»ãŒããªæ§æã«ããããµãŒãã¹ã¯æ¬¡ã®ããšãå¯èœã«ãªããŸãã
- åãªãŒãžã§ã³ã®æ§æèšå®ãå®çŸ©ããŸãïŒAPIãšã³ããã€ã³ãURLãã¬ãŒãå¶éãæ¯æãã²ãŒããŠã§ã€ã®è©³çްãªã©ïŒã
- ãããã®èšå®ãæ€èšŒããŠãå¿ èŠãªåœ¢åŒãšåã«æºæ ããŠããããšã確èªããŸãã
- ãããã€ç°å¢ã«å¿ããŠãããŸããŸãªãœãŒã¹ïŒç°å¢å€æ°ãæ§æãã¡ã€ã«ãªã©ïŒããæ§æãããŒãããŸãã
- åãªãŒãžã§ã³ã«ç°ãªãæ§æã䜿çšããŸãã
æ§æã¯ã©ã¹ãŸãã¯DTOãæ€èšŒã©ã€ãã©ãªãšãšãã«äœ¿çšããããšã«ãããé è»ãµãŒãã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ããã¹ãŠã®ãªãŒãžã§ã³ã§æ£ããå®è¡ãããããã«ãããšã©ãŒãæå°éã«æãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãã§ããŸãã
çµè«
ã¿ã€ãã»ãŒããªæ§æã¯ãç¹ã«ã°ããŒãã«ã«å±éããããå ç¢ã§ä¿å®å¯èœã§å®å šãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®äžå¯æ¬ ãªãã©ã¯ãã£ã¹ã§ããã¿ã€ãã»ãŒããªæ§æãã¿ãŒã³ãæ¡çšãããã¹ããã©ã¯ãã£ã¹ã«åŸããæ§æã©ã€ãã©ãªãå©çšããããšã§ãã³ãŒãã®å質ãå€§å¹ ã«åäžãããã©ã³ã¿ã€ã ãšã©ãŒã®ãªã¹ã¯ã軜æžã§ããŸããããŸããŸãªå°åã«å±éãããåçŽãªWebã¢ããªã±ãŒã·ã§ã³ã®äŸãããæ©å¯ããŒã¿ã管çããè€éãªãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ãŸã§ãã¿ã€ãã»ãŒããªæ§æã¯ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®æ¡åŒµå¯èœã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ã®åºç€ãæäŸããŸãã
ã¿ã€ãã»ãŒããªæ§æã䜿çšããå©ç¹ã¯ããšã©ãŒé²æ¢ã«ãšã©ãŸããŸããããããã«ã¯ãã³ãŒãã®å¯èªæ§ã®åäžãéçºè ãšã¯ã¹ããªãšã³ã¹ã®åäžãããã³ã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ã«å¯Ÿããä¿¡é Œã®åäžãå«ãŸããŸãããããã®ãã¿ãŒã³ã®å®è£ ã«æéãšåŽåãæè³ããããšã§ãäžçäžã§å€åããèŠä»¶ã«å¯ŸããŠããå埩åããããé©å¿æ§ã®ãããœãããŠã§ã¢ãæ§ç¯ã§ããŸãã
æ°ãããœãããŠã§ã¢ãããžã§ã¯ãã«çæããããæ¢åã®ãœãããŠã§ã¢ãããžã§ã¯ãããªãã¡ã¯ã¿ãªã³ã°ããããããšãã¯ãã¿ã€ãã»ãŒããªæ§æã®éèŠãªéèŠæ§ãå¿ããªãã§ãã ãããããã¯ãäžçäžã®ãŠãŒã¶ãŒã«äŸ¡å€ãæäŸããé«å質ã®ãœãããŠã§ã¢ãäœæããããã®åºæ¬çãªæ§æèŠçŽ ã§ãã