ãã¹ã¿ãŒã»æ°èŠåå
¥è
ã®ããã®C++ã³ãŒãèªè§£è¡
ãèšèšå³ããªã巚倧ãªããžããªãã§ãè¿·åã«ãªããªãïŒãšã³ããªãã€ã³ãããã®æ¢çŽ¢è¡ãšäŸåã®è¿œãæ¹
äœäžè¡ãããC++ãããžã§ã¯ãã«é
å±ããããã¹ã¿ãŒãæ°äººããã°ã©ããŒãžãã¯ã©ã¹å³ã仿§æžãå€ããŠããã³ãŒããã®ãã®ããã·ã¹ãã ã®å
šäœåãšããŒã¿ãããŒãçŽ æ©ãæ£ç¢ºã«èªã¿è§£ãããã®æ¢çŽ¢ãã¯ããã¯ãäŒæããŸãã
1.1 ãªãC++ãããžã§ã¯ãã¯åèŠã§è¿·åã«ãªããããã®ãïŒ
Webãã¹ã¯ãªããèšèªãšéããC++ã®ã³ãŒãããŒã¹ã«ã¯ãèªè§£ãé£ããããç¹æã®æ§é ããååšããŸããæµãç¥ãããšããå§ããŸãããã
ð§ ãã³ã®ã³å
茩
æå°å®ïŒé
å±å
ã®ãããžã§ã¯ããéãããããã¡ã€ã«ã500å以äžãã£ãŠãã©ãããèªãã°ããã®ãããŸã£ããåãããŸããïŒæ€çŽ¢ããŠãåãååã®é¢æ°ããã£ã±ãåºãŠããŠé ãççºãããã§ãâŠïŒ
ð»ââïž ã·ãã¯ãå
ç
ãããïŒèª°ããéãéãããªãC++ã¯ãããããšå®è£
ã®åé¢ãã倿
æ§ïŒvtableïŒããæé»ã®å倿ãããã¯ãããªã©ãéçãªããã¹ãæ€çŽ¢ã ãã§ã¯çã®æåã远ããªãçœ ããããããããã ããæ£ããâèªã¿é âããç¥ã£ãŠããã°ãè¿·å®®ã¯äžæ¬éã«ãªãã®ããïŒ
### C++ã®èªè§£ãé»ãã4倧èŠå ã
1. **ãããïŒ.h/.hppïŒãšå®è£
ïŒ.cppïŒã®ç©ççåé¢**:
宣èšãšäžèº«ãå¥ãã¡ã€ã«ã«ããããããšãã£ã¿ã§è¡ãæ¥ããŠãããã¡ã«ã³ã³ããã¹ããèŠå€±ããŸãã
2. **倿
æ§ïŒä»®æ³é¢æ°ã»ã€ã³ã¿ãŒãã§ãŒã¹ïŒã«ãããžã£ã³ãå
ã®ææ§ã**:
`target->onDamage(10);` ãšæžãããŠããŠããå®éã«åŒã°ããã®ã `Player::onDamage` ãªã®ã `Boss::onDamage` ãªã®ããã³ãŒãã®åé¢ã ãã§ã¯ç¹å®ã§ããŸããã
3. **ãã¯ãïŒ`#define`ïŒãšããªããã»ããµã®å°é·**:
ãã©ãããã©ãŒã åå²ïŒ`#ifdef _WIN32` ãªã©ïŒãç¬èªãã¯ãã«ãã£ãŠãä»èªãã§ããè¡ãæ¬åœã«ãã«ã察象ãªã®ãåããã«ããããšããããŸãã
4. **ã¡ã¢ãªæææš©ã®äžå¯èŠæ§ïŒç¹ã«ã¬ã¬ã·ãŒC++ïŒ**:
çãã€ã³ã¿ `Enemy*` ãæž¡ããããšããããã®é¢æ°ã®äžã§ delete ãããã®ãïŒãããããšãå€éšã§èª°ããæã¡ç¶ããã®ãïŒããã·ã°ããã£ã ãã§ã¯èŠãã«ããç¹ã§ãã
ð¡ ãã®ã»ã¯ã·ã§ã³ã®éèŠãã€ã³ã
- ãå
šéšèªããããšããªãã®ãéå: 巚倧ã³ãŒãããŒã¹ã1è¡ç®ããé ã«èªãã®ã¯äžå¯èœã§ãããèµ·ç¹ããšãå¢çãã ããçãæã¡ã«ããŠèªãã®ãããã®æµåã§ãã
1.2 ãŸãæåã«æ¢ãã¹ãã3ã€ã®èµ·ç¹ã
ã³ãŒãããŒã¹ãéãããããŸãå
šäœã®å¿èéšã§ããã3ã€ã®èµ·ç¹ããç¹å®ããŸããããããæŒãããã°ãå
šäœã®8å²ã®æ§é ãèŠããŠããŸãã
ð§ ãã³ã®ã³å
茩
ãªãã»ã©ïŒãããªãæµã®AIã³ãŒããšããéãã®ã§ã¯ãªãããŸã `main()` ãã `GameManager` ãžãšãäžæµããäžæµãžé ã«éããŠãããã§ããïŒ
ð»ââïž ã·ãã¯ãå
ç
ãã®éãïŒå·ã®æµããšåãã§ãæ°ŽæºïŒmainïŒãæŒãããã«æ¯æµã®å°ç³ïŒæ«ç«¯ã®ã¯ã©ã¹ïŒãçºããŠããå
šäœã®å°åœ¢ã¯çµ¶å¯Ÿã«çè§£ã§ããã®ããïŒ
### èµ·ç¹1ïŒãšã³ããªãã€ã³ãïŒ`main` ãŸã㯠`WinMain`ïŒ
ãã¹ãŠã®åŠçã¯ããããå§ãŸããŸãããŸã㯠`main` 颿°ãæ¢ãã以äžã®3ç¹ã ãã確èªããŸãã
- **åæåãã§ãŒãº**: ã©ããªãµãã·ã¹ãã ïŒæç»ã»ãµãŠã³ãã»å
¥åã»ãããã¯ãŒã¯ïŒãã©ã®é åºã§ç«ã¡äžãã£ãŠãããïŒ
- **ã¡ã€ã³ã«ãŒãïŒã²ãŒã ã«ãŒãïŒ**: æ¯ãã¬ãŒã æŽæ°ïŒ`update`ïŒãšæç»ïŒ`draw`ïŒãåããŠããã«ãŒãæ¡ä»¶ã¯ã©ããïŒ
- **çµäºã»è§£æŸãã§ãŒãº**: ã«ãŒããæããåŸãäœãç Žæ£ãããŠãããïŒ
```cpp
// å
žåçãªã¡ã€ã³é¢æ°ã®èªã¿è§£ãæ¹
int main() {
// 1. ã·ã¹ãã åæåïŒäŸåã®æ ¹å¹¹ãèŠæ¥µãã
Config config = LoadConfig("settings.json");
Renderer renderer(config.width, config.height);
GameManager gameManager(&renderer);
// 2. ã¡ã€ã³ã«ãŒãïŒãã¬ãŒã åŠçã®å
¥å£
while (!renderer.shouldClose()) {
float dt = timer.tick();
input.poll();
gameManager.update(dt); // â
ããã«æœãã°ã²ãŒã å
šäœã®è«çããããïŒ
gameManager.render(); // â
ããã«æœãã°æç»ãããŒããããïŒ
}
// 3. çµäºåŠçïŒãªãœãŒã¹è§£æŸã®é åºã確èª
gameManager.shutdown();
return 0;
}
```
### èµ·ç¹2ïŒäžå€®ç®¡çã¯ã©ã¹ïŒ`GameManager` / `App` / `Engine`ïŒ
`main` ã®çŽäžã«ããã¡ã€ã³ç®¡çã¯ã©ã¹ã§ãããã®ã¯ã©ã¹ãã¡ã³ã倿°ãšããŠãèª°ãææããŠãããããèŠãããšã§ãã·ã¹ãã ã®äž»èŠæ§æèŠçŽ ãäžç®çç¶ã«ãªããŸãã
### èµ·ç¹3ïŒã·ãŒã³/ã¹ããŒããããŒãžã£
ç»é¢ããã¿ã€ãã«ç»é¢ããæŠéç»é¢ãããªã¶ã«ããã®ããã«é·ç§»ããå Žåã`SceneManager` ã `GameState` ã®å®è£
ãèŠãããšã§ãåç»é¢ã®ç¬ç«ããããžãã¯ãã©ãã«éé¢ãããŠããããåãããŸãã
1.3 ãããïŒ.hïŒããAPI仿§æžããšããŠèªããã¯ããã¯
æ°äººãæããããã¡ãªå€±æã¯ããããªã `.cpp` å®è£
ãã¡ã€ã«ãéããŠäœçŸè¡ãã®ããžãã¯ã«å§åãããããšã§ãããŸãã¯ãããã ããèªã¿ãŸãããã
### ããããã¡ã€ã«ãããæé«ã®ä»æ§æžã§ãã
C++ã«ãããŠãããããã¡ã€ã«ïŒ`.h` ãŸã㯠`.hpp`ïŒã¯**ãå€éšã«å¯ŸããŠæäŸããæ©èœã®å¥çŽæžïŒInterface ContractïŒã**ã§ãã
å®è£
ïŒ`.cpp`ïŒã«æžãããŠããã¢ã«ãŽãªãºã ã®è©³çްãç¡èŠãããããã® `public:` é åã ããã¹ãã£ã³ããŸãã
```cpp
// Player.h ãéãããšãã®ãããã®èŠç·ã
class Player {
public: // â
ããããäžã ããèŠãïŒ
Player(float x, float y);
// ãç¶æ
ååŸãconst ãä»ããŠããïŒå
éšç¶æ
ã倿Žããªãå®å
šãªé¢æ°
float getHp() const;
bool isAlive() const;
Vector2 getPosition() const;
// ãç¶æ
倿Žã»æäœãåŒæ°ãšé¢æ°åããå¯äœçšïŒäœãèµ·ãããïŒãæšæž¬
void takeDamage(int amount);
void move(const Vector2& direction);
void fireWeapon();
private: // â
æåã¯èªãŸãªããŠOKïŒïŒå
éšå®è£
ã®è©³çްã«éããªãïŒ
float m_hp;
Vector2 m_pos;
// ...
};
```
#### èªã¿æ¹ã®ã³ãïŒ`const` ã¡ã³ã颿°ã«æ³šç®ãã
`float getHp() const;` ã®ããã«æ«å°Ÿã« `const` ãä»ããŠãã颿°ã¯ã**ããªããžã§ã¯ãã®å
éšç¶æ
ãäžåæžãæããªãïŒèªã¿åãå°çšïŒã**ãšããèšèªä»æ§äžã®çµ¶å¯Ÿä¿èšŒã§ãã
ãã¹ã¿ãŒãšããŠããã®ãã¿ã³ãæŒãããHPãæžããã°ãããããšããçŸè±¡ã远ãå Žåã`const` ã®ä»ãã颿°ã¯ç¯äººåè£ããé€å€ã§ããŸãïŒ
1.4 äŸåé¢ä¿ã®è¿œãæ¹ïŒææïŒå®äœïŒvs åãªãåç
§
ããã¯ã©ã¹ãå£ãããšãã誰ã«åœ±é¿ãæ³¢åããã®ãïŒ C++ã®ãã€ã³ã¿ãåç
§ã®èšè¿°ãããçµåã®æ·±ãããç¬æã«èŠæãæ¹æ³ã§ãã
### ã¯ã©ã¹éã®é¢ä¿æ§ãèŠæã3段éã®ã°ã©ããŒã·ã§ã³
ãããã«æžãããŠããã¡ã³ã倿°ãåŒæ°ã®æžãæ¹ãèŠãã ãã§ããã®é¢ä¿ããåœéãå
±ã«ããäž»åŸé¢ä¿ããªã®ããäžæçãªéããããããªã®ããåãããŸãã
| è¡šèš | é¢ä¿æ§ã®æå³ | 圱é¿åºŠã»çµå床 | 寿åœã®é£å |
| :--- | :--- | :--- | :--- |
| `Weapon m_weapon;`<br>`std::unique_ptr<Weapon> m_weapon;` | **å®å
šãªææïŒCompositionïŒ**<br>ãã®ã¯ã©ã¹ãæ»ã¬ãšãã®ãªããžã§ã¯ããåæã«æ¶æ»
ããã | **æåŒ·** | å®å
šã«äžèŽ |
| `std::shared_ptr<Texture> m_tex;` | **å
±æææïŒAggregationïŒ**<br>è€æ°ã®å Žæã§å
±åå©çšãæåŸã®1äººãææŸããŸã§çãç¶ããã | **äž** | 誰ããæã£ãŠããã°çå |
| `Enemy* m_target;`<br>`const Map& m_map;` | **åãªãåç
§ã»èгå¯ïŒAssociationïŒ**<br>èŠãã ãã寿åœç®¡çã¯ãã®ã¯ã©ã¹ã®ä»äºã§ã¯ãªãã | **匱** | çžæãå
ã«æ»ã¬ãšãã³ã°ãªã³ã°å±éº |
#### 忹宣èšïŒ`class Boss;`ïŒãèŠãããççµåãã®èšŒ
ãããã®åé ã§ `#include "Boss.h"` ãæžããã«ã`class Boss;` ãšã ãæžãããŠããå Žåããã®ãã¡ã€ã«ã¯ `Boss` ã®äžèº«ïŒãµã€ãºãã¡ã³ãïŒãç¥ãå¿
èŠããªãïŒ**çµååºŠãæ¥µããŠäœã**ããšãæå³ããŸãã
1.5 ãã¹ã¿ãŒå¿
èŠïŒç¶æ
å€åïŒãã¥ãŒããŒã·ã§ã³ïŒã®è¿œè·¡æ³
ãç¹å®ã®ã¿ã€ãã³ã°ã§ã¹ã³ã¢ãäžæ£ã«ãªã»ãããããããæµãæ»ãã ã¯ããªã®ã«ç»é¢ã«æ®ãç¶ããããšãã£ãäžå
·åãæçã§ç¹å®ããã¢ãããŒãã§ãã
### äžå
·å調æ»ã®éåïŒã誰ãå€ãæžãæããŠããã®ãïŒã
ãã¹ã¿ãŒããããã°æ
åœã远ãã¹ãã¯ãèšç®åŒã§ã¯ãªã**ãç¶æ
倿°ïŒãã©ã°ã»æ°å€ïŒã®å€æŽç®æã**ã§ãã
#### ã¹ããã1ïŒã¿ãŒã²ããã®ã¡ã³ã倿°ãç¹å®ãã
äŸãã°ãæµãæ»ãªãªãããã°ãªãã`m_hp` ãŸã㯠`m_isDead` ãç¹å®ããŸãã
#### ã¹ããã2ïŒã»ãã¿ãŒïŒSetterïŒãæ¢ã
ã¯ã©ã¹èšèšããã£ããããŠããã°ãã¡ã³ã倿°ã¯ `private` ã«é èœããã`setHp()` ã `kill()` ãªã©ã®é¢æ°ãçµç±ããŠå€æŽãããŸãã
ãã®é¢æ°ã«ãšãã£ã¿ã®ãåç
§ã®æ€çŽ¢ïŒFind All ReferencesïŒãããããã°ã**æžãæããè¡ã£ãŠããå
šç®æãç¬æã«ãªã¹ãã¢ãã**ãããŸãïŒ
#### ã¹ããã3ïŒã¬ã¬ã·ãŒã³ãŒãã§ã¡ã³ãã `public` ã ã£ãå Žåã®å¯Ÿæç
ãã `struct Enemy { int hp; bool isDead; };` ã®ããã«ã¡ã³ããçŽæ¥å
¬éãããŠããå Žåãéçæ€çŽ¢ã ãã§ã¯éæ¹ã«æ®ããŸãã
ãã®æã¯**ã倿°ãäžæçã« private ã«æžãæããŠãã«ãããã**ãšããè£æããããŸãã
ã³ã³ãã€ã©ããã¢ã¯ã»ã¹ã§ããŸããããšãšã©ãŒãåºããå Žæãã**ãã®å€æ°ãçŽæ¥æäœããŠãããã¹ãŠã®ç¯äººãªã¹ã**ã«ãªããŸãïŒ
ð¡ ãã®ã»ã¯ã·ã§ã³ã®éèŠãã€ã³ã
- ã³ã³ãã€ã©ããããã°ããŒã«ãšããŠäœ¿ã: privateåããŠãã«ããšã©ãŒãèµ·ããããææ³ã¯ãã¬ã¬ã·ãŒã³ãŒãã®äŸåç®æãæŽãåºãçŸå Žã®è¶
匷åãªè£æã§ãã
1.6 çŸå Žã®æåŒ·ã®æŠåšïŒãããã¬ã®ã³ãŒã«ã¹ã¿ãã¯éåŒã
ãœãŒã¹ã³ãŒãã®åé¢ãç®ã§è¿œãïŒè³å
ãããã°ïŒã®ã¯äººéã®éçããããŸããåããŠãã宿©ããã°ã©ã ããããã¬ã§æ¢ããŠèª¿ã¹ãã®ãæã確å®ã§ãã
### ã³ãŒã«ã¹ã¿ãã¯ïŒCall StackïŒã¯ãçŸå Žã«æ®ããã足跡ãã§ãã
äžå
·åãèµ·ããç¬éã«ãããã¬ïŒVS Code, Visual Studio, GDB, LLDBïŒã§ãã¬ãŒã¯ãã€ã³ããæ¢ãããšãç»é¢ã®çé
ã«**ãã³ãŒã«ã¹ã¿ãã¯ïŒåŒã³åºãå±¥æŽïŒã**ã衚瀺ãããŸãã
```
[Call Stack ã®è¡šç€ºäŸ]
#0 Player::takeDamage(int amount=9999) <-- ä»ãŸãã«ããã§æ¢ãŸã£ãŠããïŒ
#1 Bullet::onHit(Entity* other) <-- 匟ãåœãã£ãŠåŒã³åºãã
#2 CollisionSystem::update(float dt) <-- åœããå€å®ã·ã¹ãã ãæ€ç¥ãã
#3 GameManager::update(float dt) <-- ã¡ã€ã³ã²ãŒã ãããŒãžã£ãæŽæ°ãã
#4 main() <-- ãã¹ãŠã®èµ·ç¹
```
#### ã³ãŒã«ã¹ã¿ãã¯ã®èªã¿æ¹
- **äžããäžãž**: æç³»åé ã®åŒã³åºãçµè·¯ïŒmain -> update -> onHit -> takeDamageïŒ
- **äžããäžãž**: è²¬ä»»ã®æåšã®è¿œè·¡ãããªã 9999 ãšãã巚倧ãªãã¡ãŒãžãæž¡ãããã®ãïŒããç¥ããããã°ãã¹ã¿ãã¯ã® `#1 Bullet::onHit` ãã¯ãªãã¯ããã°ããã®ç¬éã®åŒŸã®ãã©ã¡ãŒã¿ãåŒã³åºãå
ã®ã³ãŒããžã¿ã€ã ã¹ãªããã§ããŸãïŒ
ð ç解床ãã§ãã¯ã¯ã€ãº
Q1. äœäžè¡ãããæªç¥ã®C++ã³ãŒãããŒã¹ã調æ»ãããšããæåã«çæãã¹ãã¢ãããŒããšããŠæãé©åãªãã®ã¯ã©ããïŒ
- 1. ã¢ã«ãã¡ãããé ã«ãã¹ãŠã® .cpp ãã¡ã€ã«ãå
é è¡ããéèªãã
- 2. main() 颿°ãäžå€®ç®¡çã¯ã©ã¹ïŒGameManagerçïŒãç¹å®ããå
šäœã®ã©ã€ããµã€ã¯ã«ãšåæåé åºãææ¡ãã
- 3. ãã¹ãŠã®ããããã¡ã€ã«ã1ã€ã®å·šå€§ãªãã¡ã€ã«ã«çµ±åããŠå
šäœæ€çŽ¢ãã
- 4. ãã¹ãŠã®å€æ°ãã°ããŒãã«å€æ°ã«å€æŽããŠæåã芳å¯ãã
æ£è§£ãšè§£èª¬ãèŠã
æ£è§£ïŒmain() 颿°ãäžå€®ç®¡çã¯ã©ã¹ïŒGameManagerçïŒãç¹å®ããå
šäœã®ã©ã€ããµã€ã¯ã«ãšåæåé åºãææ¡ãã
巚倧ãªãããžã§ã¯ãã§ã¯ãèµ·ç¹ïŒmain颿°ãã²ãŒã ã«ãŒããäžå€®ç®¡çã¯ã©ã¹ïŒããäžæµâäžæµãžãšæµãã远ãã®ãéåã§ããæ«ç«¯ããé ã«éèªããã®ã¯éå¹çã§ãã
Q2. ããããã¡ã€ã«å
ã§ `int getScore() const;` ãšå®£èšãããŠãã颿°ã«ã€ããŠãæ£ãã説æã¯ã©ããïŒ
- 1. ãã®é¢æ°ãåŒã³åºããšããªããžã§ã¯ãã®å
éšå€æ°ãå¿
ãåæåããã
- 2. ãã®é¢æ°ã¯å
éšç¶æ
ã倿ŽããªãïŒèªã¿åãå°çšïŒããšãä¿èšŒãããŠãããããç¶æ
å€åã®äžå
·åã®åå ããé€å€ãããã
- 3. ãã®é¢æ°ã¯å®æ°ïŒconstïŒããåŒæ°ã«åãããšãã§ããªã
- 4. ãã®é¢æ°ã¯ãã«ãã¹ã¬ããç°å¢ã§ã®æä»å¶åŸ¡ãèªåçã«è¡ããã
æ£è§£ãšè§£èª¬ãèŠã
æ£è§£ïŒãã®é¢æ°ã¯å
éšç¶æ
ã倿ŽããªãïŒèªã¿åãå°çšïŒããšãä¿èšŒãããŠãããããç¶æ
å€åã®äžå
·åã®åå ããé€å€ãããã
constã¡ã³ã颿°ã¯ãå
éšç¶æ
ã倿Žããªãããšããèšèªä»æ§äžã®å¶çŽãæã€ãããç¶æ
ç Žå£ã®ãã°ã远ãéã«èª¿æ»å¯Ÿè±¡ããå€ãããããªããŸãã
Q3. ã¯ã©ã¹ A ã®ãããã§ `std::unique_ptr<B> m_b;` ãšå®çŸ©ãããŠããå ŽåãA ãš B ã®é¢ä¿æ§ãšããŠæ£ãããã®ã¯ã©ããïŒ
- 1. A 㯠B ã®åãªã芳å¯è
ã§ãããB ã®å¯¿åœã«ã¯äžåé¢äžããªã
- 2. B ã¯è€æ°ã®ã¯ã©ã¹ã§å
±æãããŠãããèª°ãææããŠãããäžæã§ãã
- 3. A 㯠B ã®å®å
šãªåç¬ææè
ã§ãããA ãç Žæ£ããããš B ãé£åããŠç Žæ£ããã
- 4. B ã¯ã³ã³ãã€ã«æã«ãã¹ãŠã€ã³ã©ã€ã³å±éããã
æ£è§£ãšè§£èª¬ãèŠã
æ£è§£ïŒA 㯠B ã®å®å
šãªåç¬ææè
ã§ãããA ãç Žæ£ããããš B ãé£åããŠç Žæ£ããã
std::unique_ptr ã¯åç¬æææš©ã衚ããããææè
ïŒAïŒã®å¯¿åœãå°œããéã«ææç©ïŒBïŒãèªåçã«è§£æŸãããŸããæ¥µããŠåŒ·ãäž»åŸé¢ä¿ïŒææïŒã衚ããŸãã
Q4. ããã°ã©ã ãç¹å®ã®ç°åžžç¶æ
ã«é¥ã£ãéããããã¬ã®ãã³ãŒã«ã¹ã¿ãã¯ïŒåŒã³åºãå±¥æŽïŒãã確èªããæå€§ã®ã¡ãªããã¯ã©ããïŒ
- 1. ã³ã³ãã€ã«é床ã倧å¹
ã«åäžãã
- 2. çŸåšåæ¢ããŠãã颿°ã«è³ããŸã§ã®é¢æ°åŒã³åºãçµè·¯ãšãåãã¬ãŒã ã§ã®åŒæ°ã®å€ãéåŒãã§è¿œè·¡ã§ãã
- 3. ã¡ã¢ãªãªãŒã¯ãèªåçã«æ€ç¥ã»ä¿®æ£ããã
- 4. ãã¹ãŠã®æªå®çŸ©åäœãã³ã³ãã€ã«ãšã©ãŒãšããŠæ€åºããã
æ£è§£ãšè§£èª¬ãèŠã
æ£è§£ïŒçŸåšåæ¢ããŠãã颿°ã«è³ããŸã§ã®é¢æ°åŒã³åºãçµè·¯ãšãåãã¬ãŒã ã§ã®åŒæ°ã®å€ãéåŒãã§è¿œè·¡ã§ãã
ã³ãŒã«ã¹ã¿ãã¯ã¯ãã©ã®é¢æ°ããã©ããªåŒæ°ã§é ã«åŒã³åºããŠçŸåšå°ã«è³ã£ãã®ãããšããæç³»åã®è¶³è·¡ãéåŒãã§ç¢ºèªã§ããããããã°ã®æéèŠæ
å ±ã§ãã
ð»ââïž ã·ãã¯ãC++ã©ã ã€ã³ã¿ã©ã¯ãã£ãåŠç¿ã·ã¹ãã
ãã©ãŠã¶ã§JavaScriptãæå¹ã«ãããšããã©ãŠã¶å
ã€ã³ããŒããŒã²ãŒã ãšãã¥ã¬ãŒã¿ãã¡ã¢ãªãããå¯èŠåãUMLã¯ã©ã¹å³ã察話å解説ãç解床ã¯ã€ãºãèµ·åããŸãã
ã€ã³ã¿ã©ã¯ãã£ãåŠç¿ãéå§ãã â