ãã¹ã¦ã®çµæ¸æ´»åãããã¸ã¿ã«åããããã«ããã¹ã¦ã®æ¥åæ´»åãããã¸ã¿ã«åãããã³ã¼ãã¬ã¼ãã¨ã³ã¸ãã¢ãªã³ã°å®¤ã® @yuya-takeyama ã§ãã
7æã¯Bet Technology Monthã¨ãããã¨ã§ããã°ãããããåºã¦ããæã§ãã
ããã¦7æã¨ããã°ã第äºååæã®å§ã¾ãã§ããã
ä»æãã転è·ãç°åã«ãã£ã¦æ°ããç°å¢ã§åãå§ããæ¹ãå¤ãã®ã§ã¯ãªãã§ããããã
LayerXã§ã¯æ¯æã®ããã«å ¥ç¤¾ã»ç°åãããããããã®åº¦ã«ãããªãã¨ãããªããã¨ãããã¾ãã
ããã¯ãå種ã°ã«ã¼ãã®ã¡ã³ãã¼ã®æ´æ°ã§ãã
LayerXã«ãããã°ã«ã¼ãã¡ã³ãã¼ã®ç®¡ç
LayerXã§ã¯IDåºç¤ã¨ãã¦Microsoft Entra IDãå©ç¨ãã¦ãã¾ãã
ã¾ããSCIMãããã³ã«ãå©ç¨ããèªåãããã¸ã§ãã³ã°ã«ãããããããå種SaaS (Google Workspace, Slack, Notion, AWS, 1Passwordç) ã«ã¦ã¼ã¶ã¼ãã°ã«ã¼ãã®æ å ±ãåæãããããã«ãªã£ã¦ãã¾ãã
èªåãããã¸ã§ãã³ã°ããããã¨ã§ããªã楽ã«ã¯ãªã£ã¦ãã¾ãããããããã®Microsoft Entra IDä¸ã®ã°ã«ã¼ãã®ã¡ã³ãã¼ç®¡çã大å¤ã§ãã
å ¥ç¤¾æã®ã°ã«ã¼ãã«ã¤ãã¦ã¯ãé å±é¨ç½²ãå½¹è·çã®æ å ±ããã¨ã«ãããç¨åº¦èªååããã¦ãã¾ããã
ã§ãããç°åæã«ã¤ãã¦ã¯ãHRãããããç°åæ å ±ã®ã·ã¼ãã人éãèªã¿åã£ã¦ãã°ã«ã¼ãã¸ã®è¿½å ãåé¤ã人åã§è¡ãã¨ãããã¨ã¦ãç ©éãªãã®ã§ããã
ä¾ãã°ãå ¨ç¤¾ããã¼ã¸ã£ã¼ãã®ãããªã°ã«ã¼ãã®å ´åãé¨ç½²Aã®ããã¼ã¸ã£ã¼ãé¨ç½²Bã«ç°åããå ´åãé¨ç½²Bã§ã¾ãããã¼ã¸ã£ã¼ã«ãªãã®ã§ããã°ã°ã«ã¼ãã«æ®çãã¾ãããä¸è¬ã¡ã³ãã¼ã«ãªãã®ã§ããã°ãã°ã«ã¼ãããåé¤ããªããã°ãªãã¾ããã
ãã¨æããããå®ã¯é¨ç½²Aã®ããã¼ã¸ã£ã¼ã¨ãã¦ãå ¼ä»»ã¨ãã¦æ®ãã®ã§ããã°ãã£ã±ãæ®ç⦠ã¨ãã£ãå½¢ã§ãç°åæ å ±ã ãã§ã¯ãªãããããæå±æ å ±ãç §ããåãããªããã°ãæ£ããå¤æãããã¨ã¯ã§ãã¾ããã
ã°ã«ã¼ãã®ã¡ã³ãã¼ãæ£ããç¶æ ã«ä¿ã¦ã¦ããªãã¨ãã¡ã¼ãªã³ã°ãªã¹ããã«ã¬ã³ãã¼ã«ããæ å ±å ±æãã¹ã ã¼ãºã«ã«è¡ããªãã£ãããç¶æ ãæ£ãããã®ä¾é ¼ã®ããåããçºçãããã¨éçç£çã§ãã
ããã«ãã°ã«ã¼ãã¯Google Driveä¸ã®ãã¡ã¤ã«ã»ãã©ã¤ãã®ã¢ã¯ã»ã¹æ¨©ãããã¦ãããã¯ãã®ç®¡çã·ã¹ãã ã®æ¨©é管çã«ä½¿ããã¦ãããããã»ãã¥ãªãã£ãã¬ããã³ã¹ä¸ãéè¦ãªè¦ç´ ã¨è¨ãã¾ãã
RBACãåæã¨ããã·ã¹ãã ä¸ã§ã®æ¬ä¼¼çãªABACã®å®ç¾
ã¨ããã·ã¹ãã ã®æ¨©éãã以ä¸ã®ãããªã°ã«ã¼ããã¨ã«å²ãå½ã¦ãæå±ããã¡ã³ãã¼ã¯ãã®ã°ã«ã¼ãã«å¿ãã権éãæã¤ãã®ã¨ãã¾ãã
- 管çè 権é
- ä¸è¬æ¨©é
- é²è¦§æ¨©é
ãããã£ãã¢ã¯ã»ã¹å¶å¾¡ããRBAC (Role-Based Access Control) ã¨å¼ã³ã¾ãã
ããã¯ä¼ç¤¾ã®è¦æ¨¡ã大ãããªãã¾ã§ã¯ç´ æ´ã§ããããããã®ã§ãããã ãã ãã¨é©åã«ç¶æãããã®ãé£ãããªã£ã¦ããã¨æãã¾ãã
LayerXã¯å ¨ç¤¾ã§300åãè¶ ããRiskï¼Compliance室ãã§ãããã¨ãã¬ããã³ã¹ã¸ã®åãåãæ¹ã®ã®ã¢ãããã«ä¸ãã¦ããå¿ è¦ãããã¾ãã
ã¾ããããããã®ãã¼ã«ã¯ã©ã®ãããªäººã ã«å²ãå½ã¦ãã¹ããªã®ããã¨ããã«ã¼ã«ã決ããªãã¦ã¯ãªãã¾ããã
ä¾ãã°ãã管çè 権éã¯é¨ç½²Aã®æ£ç¤¾å¡ãä¸è¬æ¨©éã¯é¨ç½²Bã®å ¨å¡ãé²è¦§æ¨©éã¯ãã以å¤é¨ç½²ã«ãããè·ç¨®Cã®å ¨å¡ãã¨ãã£ãå ·åã§ãã
ãã®ãããªãæå±é¨ç½²ã»å½¹è·ã»éç¨å½¢æ ã»è·ç¨®ã¨ãã£ãå±æ§æ å ±ãå ã«ããã¢ã¯ã»ã¹å¶å¾¡ã ABAC (Attribute-Based Access Control) ã¨å¼ã³ã¾ãã
ã§ãããLayerXãå©ç¨ããå¤ãã®SaaSã社å ã·ã¹ãã ã¯ãRBACãåæã¨ãããã®ã¨ãªã£ã¦ãã¾ãã
ããã§ãã°ã«ã¼ãã®ã¡ã³ãã¼ãå±æ§æ å ±ãå ã«èªåçã«æ´æ°ããæ£ããç¶æ ãç¶æãç¶ãããã¨ã§ãæ¬ä¼¼çãªABACãå®ç¾ãã¾ããã
æ¬ä¼¼ABACãå®ç¾ããã³ã³ãã¼ãã³ã: ABAC Generator
LayerXã§ã¯ç¤¾å¡ã®ä»¥ä¸ã®ãããªå±æ§æ å ±ãSmartHRä¸ã«æã£ã¦ãã¾ãã
- æå±é¨ç½²
- å½¹è·
- å¥ç´å½¢æ
- 主æ å½è·ç¨®
ããããåç §ãã¤ã¤ãMicrosoft Entra IDä¸ã®ã°ã«ã¼ãã¡ã³ãã¼ãããæãã«æ´æ°ã§ããã°ããã¨ã¯èªåãããã¸ã§ãã³ã°ã«ãã£ã¦å種ãµã¼ãã¹ã«ãåæããã¾ãã
ããã§ã以ä¸ã®ãããªä»çµã¿ãæ§ç¯ãã¾ããã
- ããã®ã°ã«ã¼ãã«ã¯ããããå±æ§ã®äººã ãå±ãããã¨ããæ¡ä»¶ãè¨è¿°ããè¨å®ãã¡ã¤ã«ãç¨æ
- SmartHRããå ¨ã¦ã®ç¤¾å¡ã¨ãã®å±æ§æ å ±ãèªã¿åããããããã®ã°ã«ã¼ãã«å±ãã¹ãã¡ã³ãã¼ãå²ãåºã
- å²ãåºãããã¡ã³ãã¼ã¨ãç¾ç¶ã®å®éã®ã¡ã³ãã¼ãæ¯è¼ããå·®åã¯è¿½å ã»åé¤ãããã¨ã§æ£ããç¶æ ã«ãã
è¨å®ãã¡ã¤ã«ã¯ã大ä½ä»¥ä¸ã®ãããªãã®ã§ããTypeScript ã® Object ã¨ãã¦è¨è¿°ãã¾ãã
const config = { groups: [ { resourceId: 'admin', name: '管çè 権é', memberConditions: [ { departmentCode: '1', employmentTypeId: EmploymentTypes.æ£ç¤¾å¡, }, ], ], }, { resourceId: 'general', name: 'ä¸è¬æ¨©é', memberConditions: [ { deparmentCode: '2', } ] }, // ãã®ä»ã®ã°ã«ã¼ã // ... };
departmentCode
ã¨ããã®ã¯é¨ç½²ã表ãé¨ç½²ã³ã¼ãã¨ãããã®ã§ãã
é¨ç½²ã³ã¼ãã¯HRå ã§çºçªã»ç®¡çããã¦ãããé¨ç½²åã®å¤æ´ãçµ±å»åãèµ·ããå ´åãããã®å¾ã®å®æ ã«å³ããå½¢ã«ãªãããã«é¨ç½²ãæå±æ å ±ãæ´æ°ããã¾ãã
employmentTypeId
㯠SmartHR ä¸ã®éç¨å½¢æ
ã®ãã¹ã¿ã¼ãã¼ã¿ã®IDã使ã£ã¦ãã¾ãã
é¨ç½²ã®ãã¹ã¿ã¼ãã¼ã¿ã¯æ¯æã®ããã«å¤æ´ãããã®ã«å¯¾ãã¦ãéç¨å½¢æ ã®ãã¹ã¿ã¼ãã¼ã¿ã«å¤åãèµ·ãããã¨ã¯ããªãå°ãªãããã£ã¦ãæ°ãããã®ãå¢ããããããªã®ã§ãIDãã¨ã«ä»¥ä¸ã®ããã«å®æ°åãã¦ãã¾ãã
const EmploymentTypes = { å½¹å¡: '00000000-0000-0000-0000-000000000000', æ£ç¤¾å¡: '11111111-1111-1111-1111-111111111111', å¥ç´ç¤¾å¡: '22222222-2222-2222-2222-222222222222', // ãã®ä»ã®éç¨å½¢æ // ... } as const;
ããã¦ãã®ãããªæ å ±ãå ã«ABAC Generatorãä½ãããã®ãã¨ããã¨ãå®éã«ã¯ä»¥ä¸ã®ãããªTerraformã®ãªã½ã¼ã¹å®ç¾©ãã¡ã¤ã«ãçæãã¾ãã
ããã¯Terraform Provider for Azure Active Directoryã®ãMicrosoft Entra IDã®ã°ã«ã¼ãã¨ãã®ã¡ã³ãã¼ãå®ç¾©ãããªã½ã¼ã¹ã§ãã
(Azure Active Directoryã¯Microsoft Entra IDã®æ§ç§°)
resource "azuread_group" "admin" { name = "管çè 権é" security_enabled = true members = [ '33333333-3333-3333-3333-333333333333', # [email protected] ] } resource "azuread_group" "general" { name = "ä¸è¬æ¨©é" security_enabled = true members = [ '44444444-4444-4444-4444-444444444444', # [email protected] '55555555-5555-5555-5555-555555555555', # [email protected] ] }
ããã¦ããããTerraformã®CI/CDåºç¤ã®ããGitHubãªãã¸ããªã«pushãã¦Pull Requestãä½æãã¦ãã¾ãã
ç¾å¨ã¯ä½ã£ãã°ããã¨ãããã¨ã§ãä½ãä¸å ·åããã£ãæã®ããã«ç§ãªã©ãå·®åããã§ãã¯ãã¦ãã¼ã¸ãã¦ãã¾ãããæçµçã«ã¯èªåãã¼ã¸ã¾ã§ãã£ã¦ãã¾ããã¨æã£ã¦ãã¾ãã
ã¬ãã¥ã¼ãè¡ããªãã«ãã¦ããPull Requestã¨ãã¦æ®ããã¨ã§ãä½ãæå³ããªãã¡ã³ãã¼ã®å²ãå½ã¦ããã£ãæãªã©ã«å±¥æ´ã追ãããããã¨ã§ããã¤ãã®å²ãå½ã¦ãè¡ãããã®ãã確èªãããã¨ãã§ãã¾ãã
ã¾ããazuread_groupã®memberã¯ã¦ã¼ã¶ã¼ã®Object IDã§æå®ããå¿ è¦ãããããã人éãè¦ã¦ããããããããã«ã¡ã¼ã«ã¢ãã¬ã¹ãã³ã¡ã³ãã¨ãã¦ä»è¨ãã¦ããã¾ãã
ä¸é£ã®æµããã·ã¼ã±ã³ã¹å³ã«ã¾ã¨ãããã®ã以ä¸ã§ãã
å®è£ ä¸ã®ãã¤ã³ã
ãã¤ã³ãã¯ããªãã¨ãã£ã¦ãã°ã«ã¼ãã»ã¡ã³ãã¼ã®æ´æ°ãTerraformã§è¡ã£ã¦ãããã¨ã§ãã
å®ã¯ä¼¼ããããªã·ã¹ãã ãLayerX以åã®è·å ´ã§ãã¡ã³ããã³ã¹ãã¦ãããã¨ããã£ãã®ã§ãããããã¯ã¹ã¯ãªããå ã§ã¯ã©ã¦ããµã¼ãã¹å´ã®APIãç´æ¥å©ç¨ãã¦ãã¡ã³ãã¼ã®è¿½å ã»åé¤ãè¡ããã¨ãããã®ã§ããã
ã§ãããããã«ã¯ä»¥ä¸ã®ãããªåé¡ãããã¾ããã
- ã¹ã¯ãªããã®å®è£ ãè¤éã«ãªã
- å¯ä½ç¨ãä¼´ãããã¦ããããã¹ããå°é£ã«ãªã
ãã®åé¡ããABAC Generatorã§ã¯ä»¥ä¸ã®ãããªããã¼ã«ãããã¨ã§åé¿ãã¦ãã¾ãã
- SmartHRãMicrosoft Entra IDããå ¨ç¤¾å¡ã®æ å ±ãããéãã
- ããéããå ¨ç¤¾å¡ã®æ å ±ã¨è¨å®ãå ¥åã¨ãã¦ãã°ã«ã¼ãã¨ãã®ã¡ã³ãã¼ã表ç¾ãããã¼ã¿æ§é ãåºåãã
- ã°ã«ã¼ãã¨ã¡ã³ãã¼ã表ç¾ãããã¼ã¿æ§é ãå ¥åã¨ãã¦ãTerraformãã¡ã¤ã«ãåºåãã
ãã®ããã«ãããã¨ã§ã1ã¯HTTPãªã¯ã¨ã¹ããä¼´ãããã¦ããããã¹ããå°é£ã§ããã2ã¨3ã¯ç´ç²é¢æ°ã¨ãã¦å®è£ ãããã¨ãã§ããã®ã§ãã¦ããããã¹ãã容æã«è¡ããã¨ãã§ãã¾ãã
ã¾ããã¡ã³ãã¼ã®è¿½å ã»åé¤ã«é¢ããå¦çãä¸åæ¸ããªãã¦è¯ããªãã®ã§ãABAC Generatorã®å®è£ ã¯ãè¨å®ãã¦ããããã¹ããé¤ãã¨600è¡ã«ãæºããªãTypeScriptã§è¨è¿°ãããé常ã«ã³ã³ãã¯ããªãã®ã«ãªã£ã¦ãã¾ãã
å®éã«ã¯Terraformã§ãªãã¦ã宣è¨çãªInfrastructure as Codeãã¼ã«ã§ãã¤ãç¶æ ãä¿æã§ãããã®ã§ããã°å¤§ä½ãªãã§ãè¯ãã¨ã¯æãã¾ãã
宣è¨çãªè¨å®ãå®æçã«é©ç¨ãããã¨ã§ãªã½ã¼ã¹ãæã¾ããç¶æ ã«åæãããããæ¹ã¯ãKubernetesã«ãããReconciliation Loopãæèãã¦ãããããããã®ãªã½ã¼ã¹ãå®å®çã«ç®¡çããã«ã¯ä¾¿å©ãªææ³ã ã¨æãã¾ãã
ååã«ã¤ãã¦
ãABAC Generatorãã¨ããã®ã¯å°ãå¤ãªååã«èãããããããã¾ããã
ããæ£ç¢ºã«ã¯ãæ¬ä¼¼ABACã®ããã®ã°ã«ã¼ãGeneratorãã¨ãã£ãã¨ããã§ããããã©ãã®ã§ç¸®ãã¦ãã®ããã«ãªãã¾ããã
ä½ãããæãã®ãã©ãã©ãã¼ã ãã¤ãã¦ãããããããã¾ãããã
ã©ããã¼ã ã£ããã¨
ãã®ãããªä»çµã¿ãä½ã£ã¦ããä¸ã§ãç§ã«ã¨ã£ã¦æãã©ããã¼ã ã£ãã®ã¯ãHRãã³ã¼ãã¬ã¼ãã®æ¹ã ã®æã«ãã£ã¦ãSmartHRä¸ã«çµç¹æ å ±ãæ´åããã¦ãããã¨ã§ããã
ã¨ãã£ã¦ãããã¯æ¯è¼çæè¿è¡ããããã¨ã§ãå¥ã«ãã®æ¬ä¼¼ABACã®ä»çµã¿ãä½ããã¨ãç´æ¥ã®ç®çã«ãããã®ã§ã¯ããã¾ããã
ã§ãããæ ¹æ¬çã«ã¯ä¼¼ããããªç®çæèããã£ããããããçµæçã«å®ç¾ãããã®ã ã¨èãã¾ãã
ããããå°éæ§ãããã¯ã°ã©ã¦ã³ãã¯éãã©ãããè¯ãçµç¹ã®ããæ¹ãèããçµæããã¸ã¿ã«åãå°ããã¤é²ãã§ãããªã¨æãã¾ãã
ã°ã«ã¼ã管çã®ãã®ã³ããã
ãã¦ãABAC Generatorã«ããæ¬ä¼¼ABACã·ã¹ãã ãã§ãããã¨ã§ã確å®ã«ã°ã«ã¼ã管çã®ããæ¹ãåé²ããã¨ã¯æã£ã¦ãã¾ãããããã¯ã¾ã å ¨ä½ããããã°æ°·å±±ã®ä¸è§ã«éãã¾ããã
æ¢åã®ã°ã«ã¼ãã®ã¤ã³ãã¼ã
ããã¾ã§äººã®æã«ãã£ã¦ä½ããã¦ããå¤æ°ã®ã°ã«ã¼ãããABAC Generatorã®è¨å®ä¸ã«åãè¾¼ãå¿ è¦ãããã¾ãã
ä»åã¯èª¬æãçãã¾ããããTerraformã®import
ãããã¯ãæ´»ç¨ããããã®è¨å®ãå¯è½ã«ãªã£ã¦ãããããããã£ã¦ããã ãã§ã¯ãããã§ãããåç´ã«ææ°ãå¿
è¦ã§ãã
è¨å®ã®ãã¼ã¹é¨åãçæãã¦ãããã¹ã¯ãªããã¯ä¸å¿ããã¾ãããæå±æ¡ä»¶ã«ã¤ãã¦ã¯ããã¥ã¡ã³ããèªã¿è§£ããããå ´åã«ãã£ã¦ã¯ãªãã¼ã¹ã¨ã³ã¸ãã¢ãªã³ã°ãå¿ è¦ã§ãã
ã¾ããã®è¾ºã¯ã¬ããã¨æ ¹æ§ã§ãã£ã¦ããã ãã§ãã
SmartHRã¸ã®å±æ§æ å ±ã®ç»é²ã»æ´æ°ã大å¤
社å¡ã®å ¥ç¤¾æã«ã¯ãå ¥ç¤¾ãªã³ãã¼ãã£ã³ã°ãã¨å¼ã°ããæ¥åããã¼ãéãã¦ãMicrosoftã¢ã«ã¦ã³ãã®çºè¡ãSmartHRã¸ã®ç»é²ãè¡ããã¾ãã
ãããã®ä¸é¨ã¯ã·ã¹ãã ã«ãã£ã¦èªååããã¦ãã¾ããã人éã®æä½æ¥ã¸ã®ä¾åã¯ã¾ã ã¾ã 大ããã§ãã
æ ¹æ¬çã«ã¯èª°ããã©ããã«ãã¼ã¿ãå ¥åããå¿ è¦ãããã¾ãããã·ã¹ãã éã®è»¢è¨ãç¡ããã¦ãããã¨ã§å¹çåã¨ãã¹ã®åæ¸ãæå¾ ã§ãã¾ãã
ã¾ãããã£ã¨å¤§å¤ãªã®ã¯ç°åæã§ãç°åæ å ±ã確å®ãããããã«ã¯ãå®ããããæéã¾ã§ã«é¢ä¿è ã«ç¢ºå®ã«æ å ±ãããããªããã°ãªãã¾ããã
ããæãã®ç³è«ã·ã¹ãã ã«ãã£ã¦å¹çåãããã¨ã¯ã§ããªãã¯ãªãã§ããããã¯ãæè©®ã¯äººéã®å¶ã¿ã§ãã
ç³è«ã·ã¹ãã ã¨ããããã¯ãæ¥åããã¼ã§ãã£ãããé£æºã®å¹çãé«ããããã®ä½å¶ã®ããæ¹ããèãã¦ããå¿ è¦ããããã¨ã§ãããã
ã½ããã¦ã§ã¢ã·ã¹ãã ã¯ãããæ¯ããèå°ã«éãã¾ããã
ããã¯ã³ã¼ãã¬ã¼ãã¨ã³ã¸ãã¢ãªã³ã°å®¤ã ãã§ãªããHRãã³ã¼ãã¬ã¼ããªã©ãã¾ãã¾ãªé¢ä¿è ãé¢ããè¤éãªæ¥åãªã®ã§ãååãã¦ããã¼ãä½ãä¸ããå¿ è¦ãããã¾ãã
è¨å®ã®ã»ã«ããµã¼ãã¹å
ABAC Generatorã®è¨å®ã¯åè¿°ã®éãTypeScript ã§è¨è¿°ããã¦ããããããPull Requestãã¼ã¹ã§å¤æ´ãã¦ãã¾ãã
ä»ã®æ®µéã¨ãã¦ã¯ãç´ æ©ãã·ã¹ãã ã稼åã¾ã§æã£ã¦æ¥ããã®ã§è¯ãé¸æã ã£ãã¨æã£ã¦ãã¾ããããã®è¨å®ã®å¤æ´ã¯ããã°ã©ãã³ã°çµé¨ã®ãªã人ã«ã¯ãã¼ãã«ã®é«ãä½æ¥ã§ãã
ããããã社å ã§ã¯å ¨å¡ãGitHubã¢ã«ã¦ã³ããæã£ã¦ããããã§ãããã¾ããã
ç¾ç¶ã¯ã³ã¼ãã¬ã¼ãã¨ã³ã¸ãã¢ãªã³ã°å®¤ã®ã¡ã³ãã¼ãä¸å¿ã«ä¾é ¼ãå ã«è¨å®ãè¨è¿°ãã¦ããããããããããã¯ã«ãªããã¨ã¯ããã¾ãããããã¯ãæçµçã«ã¯ç¤¾å ã®ãããã人ãè¨å®ã®å¤æ´ãèªåã§ç³è«ããã³ã¼ãã¬ã¼ãã¨ã³ã¸ãã¢ãªã³ã°å®¤ã§ãã£ãããé©åãªæ¿èªè ã®æ¿èªãæã£ã¦å¤æ´ãåãè¾¼ããå½¢ã«ãã¦ããããã¨æã£ã¦ãã¾ãã
ã¨ã¯ãããããã£ã管çç¨ã®Web UIã¯ã¡ã³ããã³ã¹ã³ã¹ãããããã®ã§ãããå¡©æ¢ ã®ããæ¹ãèãããã¨ããã§ãã
çµããã«
ã°ã«ã¼ãã®ç®¡çã¯å¤ãã®ä¼æ¥ã§å ±éã®èª²é¡ã ã¨æãã¾ãã
ã¨ã¦ãå°å³ã§ãããã»ãã¥ãªãã£ãã¬ããã³ã¹ä¸éè¦ãªè¦ç´ ã§ãã
ãããªã°ã«ã¼ã管çãã¨ãã®ããã§ç¤¾å ã®é£æºã«åããã¼ãããã£ããããããã«ãã¼ããããã«ä¾é ¼ãä½æ¥ã®å·¥æ°ãããã£ãããæã«ã¯ã¤ã³ã·ãã³ãã«ã¤ãªãã£ããã¨ãã£ããããã¾ã§ã®å½ããåãå¤ãã¦ããããã¨èãã¦ãã¾ãã
ãããªæ°ããå½ããåãä¸ç·ã«ä½ã£ã¦ããã¡ã³ãã¼ãåéãã¦ãã¾ãã
- ãå ±éãã³ã¼ãã¬ã¼ãã¨ã³ã¸ãã¢ï¼ã½ããã¦ã§ã¢ï¼
- ãå ±éãã³ã¼ãã¬ã¼ãã¨ã³ã¸ã㢠ï¼ITåºç¤ï¼
ã¾ãã¯è©±ã ãã§ããã¨ããæ¹ã¯æ¯éã«ã¸ã¥ã¢ã«é¢è«ããLayerX Casual Nightã¨ãã£ãã¤ãã³ãã«ãå¿åãã¦ã¿ã¦ãã ããã