Blue Frog Roboticsã¯2幎åã«ããªã§èšç«ãããã¹ã¿ãŒãã¢ããã§ãã 圌ã¯çŸåšãããã£ãéçºããŠããŸãã éçºè ã¯ããœãŒã·ã£ã«ãããããšããŠã®ããã£ã家æã®ãã¹ãŠã®ã¡ã³ããŒãå£çµãããŠä¿è·ãããããããšå¯Ÿè©±ããŠãããšäž»åŒµããŠããŸãã
2015幎ã®ã¯ã©ãŠããã¡ã³ãã£ã³ã°ãã£ã³ããŒã³äžã«ãBlue Frogã¯1æ¥ã§100,000ãã«ã®èšç»é¡ãåŒãäžãããã£ã³ããŒã³çµäºãŸã§ã«620,000ãã«ã«åŒãäžããŸããã ããªã»ãŒã«ã¹ã¯Blue Frog Webãµã€ãã§ç¶ç¶ãããåèšã§150äžãã«ã«éããŸããã
Buddyã®é åžã¯Blue Frog Roboticsã«ãšã©ãŸããããããã®è²©å£²ã¯ããŸããŸãªå°åã®åºèãã§ãŒã³ãéããŠè¡ãããŸãã ãã®ãããäžçäžã®Buddyããããã®å®éã®å±éãšäœ¿çšãèæ ®ããã·ã¹ãã ãäœæããããšãéèŠã§ãã ããã«ããã人æ°åºŠã«å¿ããŠæé©ãªã¬ãã«ã®ãµãŒãã¹ãæäŸãããŸãã
ã¯ã©ãŠããœãªã¥ãŒã·ã§ã³ã¯ãåéãããããŒã¿ïŒæ¶è²»ãã»ã³ãµãŒãªã©ïŒãä¿åããããããã®æåã®2,200ã³ããŒãé©åã«æ©èœããããã«å¿ èŠãªããŸããŸãªãµãŒãã¹ãæäŸããŸãã ããã€ã¹ãå¹æçã«åäœãããã«ã¯ãä¿¡é Œæ§ãé«ãã¹ã±ãŒã©ãã«ãªå éšã·ã¹ãã ãå¿ èŠã§ãã ããã«ãæé ãªäŸ¡æ Œã®ãœãªã¥ãŒã·ã§ã³ãšæé©ãªãµãŒãã¹å質ãæäŸããã¢ãŒããã¯ãã£ãéçºããããšãéèŠã§ãã
ããã¯ãã§ã¹ãã®æéäžãBlue Frog RoboticsãšMicrosoft DX Franceã¯ãçç£ã®èŠ³ç¹ãããœãªã¥ãŒã·ã§ã³ãå ±åéçºããŸãããããã«ã€ããŠã¯ã以äžã§èª¬æããŸãã
BUDDYã«ã€ããŠ
Buddyã¯äžè¬çãªããŒã«ïŒArduinoãOpenCVãUnity 3DïŒã䜿çšããŠéçºãããéçºè ãããââãžã§ã¯ããç°¡åã«äœæã§ããããã«ããŸããã ãŸããã¯ãªãšã€ã¿ãŒã¯çŸåšããã«æ©èœã®APIãå®è£ ããŠããŸãã ãœãããŠã§ã¢ã«å ããŠããããããšå¯Ÿè©±ããããã«ãéçºè ã¯ããŒããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ãäœæã§ããŸãã
ãã®ãããã«ã¯ã家æãé ãããããã£ã«é£çµ¡ããããã®ã¢ãã€ã«ã³ã³ãããªã³ã¢ããªãå«ãŸããŠããããããªç£èŠããããªé話ããªã¢ãŒãã³ã³ãããŒã«ããµããŒãããŠããŸãã CïŒãšUnity 3Dã䜿çšããŠéçºãããiOSãAndroidãWindowsã§å©çšå¯èœã«ãªããŸãã
ããã£ã®æ©èœïŒ
- é«ã56 cmãéé5 kgãããããªãŒå¯¿åœ-8ã10æéã
- Integrated Brain-ã¯ã€ã€ã¬ã¹ãããã¯ãŒã¯ãšBluetoothãå èµãã8ã€ã³ãã®ã¹ããŒãã¿ãã¬ããPCã
- Arduinoãã©ãããã©ãŒã ã䜿çšããŠãããããã®æ©æ¢°ã³ã³ããŒãã³ãã¯è³ã®ã³ãã³ããå®è¡ããŸãã
- 3ã€ã®è»èŒªãšå€ãã®ã»ã³ãµãŒãå®å šãªã¢ããªãã£ãæäŸããŸããããããã¯ãå€ã®äžçã移åããåŠç¿ããçžäºäœçšã§ããŸãã
- 3Dããžã§ã³ãã¯ãããžãŒã æšæºã«ã¡ã©ãèµ€å€ç·ã«ã¡ã©ãèµ€å€ç·ã¬ãŒã¶ãŒãšããã¿ã®å©ããåããŠãããã£ã¯æãšé ã®åããç°¡åã«è¿œè·¡ããŠèªèãããªããžã§ã¯ããé¡ãåç©ãæ€ç©ãªã©ãåºå¥ããèŠçã«ãããªããžã§ã¯ãã®æ·±åºŠã枬å®ããŸãã
- æå 端ã®äººå·¥ç¥èœæè¡ã«ãããé¡ããªããžã§ã¯ããèªèããåãã远跡ã§ããŸãã
- ããããã¯èãã話ããããªããããšãã§ããŸãã
- ããããã«ã¯åæ§ããããããŸããŸãªææ ã®å©ããåããŠèµ·ãã£ãŠããããšã«åå¿ããããã家æãšã®ããåããåäžããŸãã ææ ã®è¡šåºã«ãããéšå µã®é«ã¬ãã«ã å¯ãããã圌ã¯æ¯ãå©ãããšããã§ããŸãïŒ
ããŒã¿å
ããã£ã¯2çš®é¡ã®ããŒã¿ãã¯ã©ãŠãã«éä¿¡ããŸãã
ãããã¡ã€ã«ããã³ã³ã³ããã¹ãããŒã¿ã¯ãåæãŸãã¯ããã¯ã¢ããã®ããã«ããã£ãŸãã¯ã³ã³ãããªã³ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäœæãããããŒã¿ã®ã»ããã§ãïŒãããããŒã¿ããŠãŒã¶ãŒãããã¡ã€ã«ãªã©ïŒã ãã®ããŒã¿ã¯ãäœããªã¯ãšã¹ãã¬ãŒãã§èªã¿æžãããããã«èšå®ãããJSON圢åŒã§ä¿åãããŸãã
æè¡ããŒã¿ãšäœ¿çšæ å ±ã¯ãã¿ãã¬ããPCãšArduinoã«ãŒããããããã®æè¡ã€ã³ãžã±ãŒã¿ãŒããåä¿¡ããããŒã¿ã§ãïŒããšãã°ãããããªãŒã¬ãã«ãå ŽæããµãŒãã¢ãŒã¿ãŒã®åäœïŒã ãã®ããŒã¿ã¯é«é »åºŠã§éä¿¡ãããJSON圢åŒã§å€æŽããã³æžã蟌ãããšã¯ã§ããŸããã ããŒã¿ã¯Base64ã·ã¹ãã ã§ãšã³ã³ãŒãããããããã¡ãã»ãŒãžã®é·ããçããªããŸãã
ã¢ãŒããã¯ãã£ã®äœæ
ã¢ãŒããã¯ãã£ãäœæããããã®äž»ãªåºæºïŒã³ã¹ããã¹ã±ãŒã©ããªãã£ãããã³ã»ãã¥ãªãã£ã ãããã£ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¹ããæå°éã«æããããšãéèŠã§ãã
é¢é£ãããã¹ãŠã®æè¡çåŽé¢ã«ã€ããŠãããããã®ã°ããŒãã«å±éäžã®ããã©ãŒãã³ã¹ã®åé¡ãåé¿ããããã«ã¹ã±ãŒãªã³ã°ãæ€èšããå¿ èŠããããŸãã
ã»ãã¥ãªãã£ã®èŠ³ç¹ãããBuddyãœãããŠã§ã¢ã¯ããã€ãã®ã¿ã€ãã®ããŒã¿æå·åãšåé¢ãå®è£ ããŠããŸãã ã¯ã©ãŠãã§ã®ä¿è·ãä¿èšŒããããã«ãéä¿¡ãããããŒã¿ã¯å¿åã§ãããããŒã¿ã®èªã¿åãããã³æžã蟌ã¿æ©èœã¯æ¿èªãããã·ã¹ãã ã«å¯ŸããŠã®ã¿ååšããŸãã
éžæããã¢ãŒããã¯ãã£ãå±éãããšãã«ã3ã€ã®é åãç¹å®ãããŸããã
- BLOBã¹ãã¬ãŒãžïŒå ±æ眲åïŒSASïŒã䜿çšããŠããã€ããªåœ¢åŒããããŒã¿ãä¿åããã³åŸ©å ããŸãã
- ã¡ãã»ãŒãžã®åéïŒã€ãã³ããã°ãã³ãã³ããç£èŠçµæããã¬ã³ãŒããåéããPower BIã¬ããŒããäœæããŸãã
- èªååïŒç¶ç¶çãªã€ã³ãã©ã¹ãã©ã¯ãã£å±éã®ããã«ããã¹ãŠã®Azure Resource Managerãã¡ã€ã«ãšèªååã¹ã¯ãªãããäœæããŸãã
ã¡ãã»ãŒãžã³ã°ïŒããããããPower BIãž
ããŒã¿ã¬ã·ãŒããŒãšããŠã€ãã³ããããéžæãããŸããã ã€ãã³ãããã«ã¡ãã»ãŒãžãéä¿¡ããã«ã¯ãåããã£ãå ±æ眲åãåä¿¡ããå¿ èŠããããŸãã SASã¯Azure Functionã䜿çšããŠæž¡ãããŸãã
ãµã³ãã«Azureé¢æ°ã³ãŒãïŒ
#r "Microsoft.ServiceBus" using System.Net; using Microsoft.ServiceBus; using System.Configuration; public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) { log.Info("Generate Shared Access Signature for Event Hub"); // parse query parameter string publisherName = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "publisherName", true) == 0) .Value; string tokenTimeToLiveParam = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "tokenTimeToLive", true) == 0) .Value; // Get request body dynamic data = await req.Content.ReadAsAsync<object>(); // Set name to query string or body data publisherName = publisherName ?? data?.publisherName; tokenTimeToLiveParam = tokenTimeToLiveParam ?? data?.tokenTimeToLive; if( publisherName == null) return req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a publisherName on the query string or in the request body"); TimeSpan tokenTimeToLive; if( tokenTimeToLiveParam == null) {tokenTimeToLive = TimeSpan.FromMinutes(60);} else {tokenTimeToLive = TimeSpan.FromMinutes(double.Parse(tokenTimeToLiveParam));} var appSettings = ConfigurationManager.AppSettings; var sas = CreateForHttpSender( appSettings["EH_1_SAS_PolicyName"], appSettings["EH_1_SAS_Key"], appSettings["EH_1_SAS_Namespace"], appSettings["EH_1_SAS_HubName"], publisherName, tokenTimeToLive); if (string.IsNullOrEmpty(sas)) {return req.CreateResponse(HttpStatusCode.NoContent, "No SaS found!");} else {return req.CreateResponse(HttpStatusCode.OK, sas);} } public static string CreateForHttpSender(string senderKeyName, string senderKey, string serviceNamespace, string hubName, string publisherName, TimeSpan tokenTimeToLive) { var serviceUri = ServiceBusEnvironment.CreateServiceUri("https", serviceNamespace, String.Format("{0}/publishers/{1}/messages", hubName, publisherName)) .ToString() .Trim('/'); return SharedAccessSignatureTokenProvider.GetSharedAccessSignature(senderKeyName, senderKey, serviceUri, tokenTimeToLive); }
ããããã¯ããŒã¿ãã€ãã³ãããã«éä¿¡ããŸãã
Unity 3Dã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãããããã¯Azure Functionã®äžã«äœæãããSASããŒã¯ã³ãåãåããŸãã
``` /// Methode call with StartCoroutine(); private IEnumerator GetSaS(string publisherName) { WWW wwwSas = new WWW(string.Format("https://tbrblobsasfunapp.azurewebsites.net/api/EventHubSasTokenCSharp?code=YourAccessKey&publisherName={0}", publisherName)); yield return wwwSas; // check for errors if (wwwSas.error == null) { SaS = wwwSas.text.Trim(new Char[] { ' ', '\"' }); Debug.Log("Get SaS OK: " + wwwSas.text.Trim(new Char[] { ' ', '\"' })); } else { Debug.Log("Get SaS Error: " + wwwSas.error); } } ```
ãã®é¢æ°ã«ã¯ãã€ãã³ãããã³ã³ãããŒã«ããŒããããŸãã
ããŒã¿ã¯ãUnityããã®WebèŠæ±ãä»ããŠéä¿¡ãããŸãã ããã¯cURLãšåçã§ãïŒ
Azure Event Hubãžã®ããŒã¿ãããŒïŒ
ãããã¯ãAzure Stream Analyticsãä»ããŠããã«åŠçãããŸãã
Azure Stream Analyticsã¯ããã¹ãŠã®ããŒã¿ã®ã³ããŒãblobã¹ãã¬ãŒãžã«éä¿¡ããŸãã
Azure Data Lake Analyticsã¯ãããŒã¿ã®æ€çŽ¢ã«äœ¿çšãããŸãã
ãããã£ãŠãããŒã¿ã¯Power BIã«è¡šç€ºãããŸãã
ã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¹ãã®èšç®
ããããã®ã³ã¹ããèšç®ããã«ã¯ãããã€ãã®éèŠãªèŠçŽ ã匷調衚瀺ããå¿ èŠããããŸãã
- å±éãããããããã®æ°ïŒ2200
- ããããããšã®ã¢ã¯ãã£ããªã³ã³ãããªã³ã¢ããªã®æ°ïŒ2
- å¹³åçãªæè¡ããŒã¿ãšäœ¿çšæ å ±ïŒ100 KB
- ã³ã³ããã¹ãããŒã¿ãšç¹æ®ããŒã¿ã®å¹³åããªã¥ãŒã ïŒ3 MB
- æè¡ããŒã¿ãšäœ¿çšæ å ±ã®ãªã¯ãšã¹ããéä¿¡ããé »åºŠïŒ5å
- ãããããŸãã¯ããã€ã¹äžã®1æ¥ãããã®ã³ã³ããã¹ãããŒã¿ãšãããã¡ã€ã«ããŒã¿ã®åæïŒ1
- SASããŒã¯ã³ã®æå¹æéïŒ1æé
- Azure Functionsã®å¹³åæéïŒ100ããªç§
- Azure Functionsã®ã¡ã¢ãªæ¶è²»éïŒ512 MB
ãŸãã24æéã®ã¢ã¯ãã£ããã£ã31æ¥éèæ ®ããŸãã ããã«ãããææªã®ã·ããªãªã«åããããšãã§ããŸãã
ç·è²»çšã¯122.1797ãã«ã§ããã
1ãæããã1ããã£ã®åèšã³ã¹ã= 122.1797 / 2200 = 0.05554ç±³ãã«ã
åã³ã¹ãé ç®ã®è©³çŽ°ãªèšç®ã«ã€ããŠã¯ã以äžã®ãã¿ãã¬ãã芧ãã ããã
ã³ã³ããã¹ãããŒã¿ãšãããã¡ã€ã«ããŒã¿ã®BLOBã¹ãã¬ãŒãžã³ã¹ã= 14.8896ãã«BLOBãä¿åããã«ã¯ããããããªãããŒã«ã«åé·ã¹ãã¬ãŒãžã䜿çšãããŸãã
éåžžãããŒã¿ã»ããã¯ããŸããŸãªãµã€ãºãšåœ¢åŒã®5ã€ã®ãã¡ã€ã«ïŒ.jsonã.pngãå°å³äœæïŒã§æ§æãããŸãã Azureã¹ãã¬ãŒãžã®ã³ã¹ãã¯ãã¹ãã¬ãŒãžãšã¢ã¯ã»ã¹ãšãã2ã€ã®åºæºã«åŸã£ãŠèšç®ãããŸãã ãã®å Žåãã¹ãã¬ãŒãžã³ã¹ãã¯1ãæãããGBããã0.024ãã«ã§ãã ãã¹ãŠã®ããããã®ããŒã¿ã¹ãã¬ãŒãžã®ç·ã³ã¹ããèšç®ããŸãã
åèšã¹ãã¬ãŒãžã³ã¹ã=å±éãããããããã®æ°*ã³ã³ããã¹ãããã³ç¹æ®ããŒã¿ã®å¹³åé* GBãããã®ã¹ãã¬ãŒãžã³ã¹ã= 2200 * 0.003 * 0.024 = 0.1584ç±³ãã«ã
ã¢ã¯ã»ã¹ã®ã³ã¹ãã¯æäœã®çš®é¡ã«ãã£ãŠç°ãªããæ¯æãæäœã®æ£ç¢ºãªçš®é¡ãšæ°ã確å®ããã®ã¯å°é£ã§ãã ãããã£ãŠãèšç®ã«ã¯æ倧ã³ã¹ããããããŸãã
ãããããŸãã¯ããã€ã¹ããšã®æšå®æäœæ°ïŒ10
1ãæãããã®åèšæäœæ°=å±éãããããããã®æ°*ïŒããããããšã®ã¢ã¯ãã£ããªã³ã³ãããªã³ã¢ããªã±ãŒã·ã§ã³ã®æ°+ 1ïŒ*ãããã/ããã€ã¹ããšã®æšå®æäœæ°* 31 = 2200 * 4 * 10 * 31 = 2,728,000æäœã
åèšã¢ã¯ã»ã¹ã³ã¹ã= 1ãæãããã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ç·æ°/ 10000 * 0.054 = 14.7312ãã«ã
ã³ã³ããã¹ãããŒã¿ãšãããã¡ã€ã«ããŒã¿ã®BLOBã¹ãã¬ãŒãžã³ã¹ã= 14.8896ãã«ã
ã€ãã³ãããã³ã¹ã= 22.55ãã«ã€ãã³ãããã¯ã1ç§éã«æ°çŸäžã®ã€ãã³ããåä¿¡ããããã«èšèšãããŠãããããæ¥ç¶ãããããã€ã¹ãã¢ããªã±ãŒã·ã§ã³ããã®èšå€§ãªéã®ããŒã¿ãåŠçããã³åæã§ããŸãã
ã€ãã³ãããã®ã³ã¹ãã¯ãåä¿¡ã€ãã³ãã®æ°ãšå±éå¯èœãªåž¯åå¹ ã®åäœã«åºã¥ããŠèšç®ãããŸãã 垯åå¹ ãèšå®ããããã«ãããããããéä¿¡ãããçä¿¡ã€ãã³ãã®Mb /ç§ã®æ°ãèšç®ããŸãã
çä¿¡ã€ãã³ãã®Mb / s =æè¡ããŒã¿ãšäœ¿çšããŒã¿ã®å¹³åéïŒMbïŒ*å±éãããããããã®æ°/æè¡ããŒã¿ãšäœ¿çšããŒã¿ã®ãªã¯ãšã¹ãã®éä¿¡é »åºŠïŒç§ïŒ= 0.1 * 2200/300 = 0.7333 Mb / s ã
1ãŠãããã®ã¹ã«ãŒãããã€ã³ãžã±ãŒã¿ã®å Žåãå¶éã¯çä¿¡ã€ãã³ãã«å¯ŸããŠ1 Mb / sã«å¶éãããŸãã ããã§ã¯ãçä¿¡èŠæ±ã®æ°ãå¶éãã27ïŒ å°ãªããããå¿ èŠãªåž¯åå¹ ã¯1ãŠãããã®ã¿ã§ãã 次ã«ãããããããéä¿¡ãããçä¿¡ã€ãã³ãã®æ°ãèšç®ããŸãããã
çä¿¡ã€ãã³ãã®æ°= 1æ¥ãããã®åæ°/æè¡ããŒã¿ããã³äœ¿çšæ å ±ã®èŠæ±ã®éä¿¡é »åºŠ*å±éãããããããã®æ°*æ¥= 1440/5 * 2200 * 31 = 19 641 600ã€ãã³ãã
ã€ã³ããŠã³ãã€ãã³ãã®ã³ã¹ã=ã€ã³ããŠã³ãã€ãã³ãã®æ°/ 1,000,000 * 0.028 = 0.55ãã«ã
垯åå¹ ã®æšæºåäœã¯æé¡çŽ22ãã«ã§ãã€ãã³ãããã䜿çšããç·è²»çšã¯æ¬¡ã®ãšããã§ãã
ã€ãã³ãããã³ã¹ã= 22 + 0.55 = 22.55ãã«ã
Azure Functionsã®ã³ã¹ã= 1,1094ãã«Azure Functionsã䜿çšããŠãSASãã³ã³ããã¹ãããã³ãããã¡ã€ã«ããŒã¿ãšã€ãã³ãããã䜿çšããŠBLOBã¹ãã¬ãŒãžã«ã¢ã¯ã»ã¹ã§ããããã«ããŸããã
Azure Functionsã®ã³ã¹ãã¯ããªãŒãã¿ã€ã ãšå®è¡ã®åèšæ°ã«åºã¥ããŠèšç®ãããŸãã SASããŒã¯ã³ã¯1æéæå¹ãªã®ã§ããããããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã§åæ©èœã1æ¥24ååŒã³åºãããŸãã BLOBã«ã¢ã¯ã»ã¹ããããã®é¢æ°ã¯ããããããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåŒã³åºãããŸãã ã€ãã³ãã³ã³ã»ã³ãã¬ãŒã¿ãŒã«ã¢ã¯ã»ã¹ããããã®é¢æ°ã¯ãããããã«ãã£ãŠã®ã¿åŒã³åºãããŸãã
环ç©å®è¡æ°=ïŒïŒå±éãããããããã®æ°+å±éãããããããã®æ°*ïŒããããããšã®ã¢ã¯ãã£ããªã³ã³ãããªã³ã¢ããªã±ãŒã·ã§ã³ã®æ°ïŒ* 24 *æ¥ïŒ+ïŒïŒå±éãããããããã®æ°* 24 *æ¥ïŒ=ïŒïŒ2200 + 2200 * 2ïŒ* 24 * 31ïŒ+ïŒ2200 * 24 * 31ïŒ= 4 910 400 + 1 636 800 = 6 547 200
ç·å®è£ ã³ã¹ã=ïŒ6,547,200-1,000,000ïŒ/ 1,000,000 * 0.20 = 1,1094ãã«ã
AzureããŒã¿ã«ã®Azure Functionsç£èŠããŒã«ã¯ãå¹³åãªãŒãã¿ã€ã ã®ââèšç®ã«åœ¹ç«ã¡ãŸããã ãã®å Žåã80ããªç§ã§ãã é¢æ°ã®ã¡ã¢ãªå®¹éã¯512 MBã§ãã ãã®æ å ±ã¯ããªãŒãã¿ã€ã ã®ââã³ã¹ãã®èšç®ã«åœ¹ç«ã¡ãŸããã
ãªãœãŒã¹æ¶è²»ïŒç§ïŒ=å®è¡*å®è¡æéïŒç§ïŒ= 6 547 200 * 0.08 = 523.776ç§
ãªãœãŒã¹æ¶è²»ïŒGB-sïŒ= GBã«å€æããããªãœãŒã¹æ¶è²»*ã©ã³ã¿ã€ã ïŒç§åäœïŒ= 512/1 024 * 523 776 = 261 888 GB-sã
æ¯æãå¯èœãªãªãœãŒã¹æ¶è²»=ãªãœãŒã¹æ¶è²»-æé¡å²åŒ= 261,888-400,000 = 0 GB-sã
æ¯æãªãœãŒã¹ãæ¶è²»ããã³ã¹ãã¯0ãã«ã§ãïŒ
Azure Functionsã®ã³ã¹ã=å®è£ ã³ã¹ãã®åèš+ãªãœãŒã¹æ¶è²»ã®æéã³ã¹ã= 1,1094ãã«ã
ã¹ããªãŒã åæã³ã¹ã= 25.0281ãã«Stream Analyticsã®ã³ã¹ãã¯ãåŠçãããããŒã¿ã®éãšåŠçã«å¿ èŠãªã¹ããªãŒãã³ã°ã¢ãžã¥ãŒã«ã®æ°ã«äŸåããŸãã
ã¹ããªãŒãã³ã°ã«ãã£ãŠåŠçãããããŒã¿ã®é=æè¡ããŒã¿ãšäœ¿çšããŒã¿ã®å¹³åéïŒMBïŒ*å±éãããããããã®æ°*æè¡ããŒã¿ãšäœ¿çšããŒã¿ã®ãªã¯ãšã¹ãã®éä¿¡é »åºŠïŒæ¥ïŒ*æ¥= 0.1 * 2200 * 288 * 31 = 1 964 160 MB = 1964.16 GBã
åŠçãããããŒã¿ã®éã®ã³ã¹ã= 1 964.16 * 0.001 = 1.9641ç±³ãã«ã
ãã®ãããªããªã¥ãŒã ã®å Žåãå¿ èŠãªã¹ããªãŒãã³ã°ã¯1ãŠãããã®ã¿ã§ãã
ã¹ããªãŒãã³ã°ãŠããããããã®ã³ã¹ã= 0.031 * 24 * 31 = 23.064ãã«ã
Stream Analyticsã®ã³ã¹ã=åŠçãããããŒã¿ã®éã®ã³ã¹ã+ã¹ããªãŒãã³ã°ãŠããããããã®ã³ã¹ã= 25.0281ç±³ãã«ã
æè¡ããŒã¿ãšäœ¿çšããŒã¿ã®BLOBã¹ãã¬ãŒãžã³ã¹ã= 54.7398ãã«Blobã¹ãã¬ãŒãžã«ã¯ãStream Analyticsããåä¿¡ããããŒã¿ã®ã¿ãå«ãŸããŸãã ã¹ãã¬ãŒãžå ã®BLOBãã¡ã€ã«ã®åèšãµã€ãºã¯ãStream Analyticsã«ãã£ãŠåŠçãããããŒã¿ã®éãšåãã§ãã
ã¹ãã¬ãŒãžã³ã¹ã=ã¹ããªãŒãã³ã°ã«ãã£ãŠåŠçãããããŒã¿ã®é* 1 GBã®ã¹ãã¬ãŒãžã®ã³ã¹ã= 1964.16 * 0.024 = 47.1398ç±³ãã«ã
ã¢ã¯ã»ã¹ã®ã³ã¹ããèšç®ããã«ã¯ãã¢ã¯ã»ã¹ãæŽæ°ããããã«ãã€ãã³ãããã®çä¿¡ã€ãã³ãã«ãã£ãŠåŠçãããã¡ãã»ãŒãžããšã«1ãŠãããã®ã¢ã¯ã»ã¹ãæ€èšããŸãã
ã¢ã¯ã»ã¹ã³ã¹ã=çä¿¡ã€ãã³ãã®æ°*ãã©ã³ã¶ã¯ã·ã§ã³ã³ã¹ãïŒ10,000ãããïŒ= 19,641,600 / 10,000 * 0.004 = 7.60ãã«ã
æè¡ããŒã¿ãšäœ¿çšæ å ±ã®BLOBã¹ãã¬ãŒãžã³ã¹ã=ã¹ãã¬ãŒãžã³ã¹ã+ã¢ã¯ã»ã¹ã³ã¹ã= 54.7398ç±³ãã«ã
垯åå¹ ã³ã¹ã= 3.8628ãã«ããã¯ãã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ãExpressRouteã®ã³ã¹ãã§ã¯ãªããAzureããŒã¿ã»ã³ã¿ãŒãšã®éã§ããŒã¿ã移åããã³ã¹ããæããŸãã ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«ããããŒã¿ã®èªã¿èŸŒã¿ãèæ ®ãããŸãã åã¢ããªã±ãŒã·ã§ã³ã¯æã«2åãã¡ã€ã«å šäœãšåæããããšèããŠããŸãã
ããŠã³ããŒãããããŒã¿ã®é=ã³ã³ããã¹ãããŒã¿ãšãããã¡ã€ã«ããŒã¿ã®å¹³åéïŒGBïŒ* 2 *ããããããšã®ã¢ã¯ãã£ããªã³ã³ãããªã³ã¢ããªã±ãŒã·ã§ã³ã®æ°*å±éãããããããã®æ°= 0.003 * 3 * 2 * 2200 = 39.6 GBã
éä¿¡ããŒã¿è»¢éã³ã¹ã=ïŒããŠã³ããŒãããããŒã¿ã®é-æé¡å²åŒïŒ* 1 GBã®éä¿¡ã³ã¹ã=ïŒ39.6-5ïŒ* 0.087 = 2.5752ç±³ãã«ã
Azureãšããããã®éã§ãããšãã°SASããŒã¯ã³ãååŸããããã«ãå°éã®ããŒã¿ãäœåºŠã転éãããŸãã ãããã®ã³ã¹ããã«ããŒããããã«ãã³ã¹ãã«ããã«50ïŒ ãè¿œå ããããšã決å®ãããŸããã
垯åå¹ ã³ã¹ã=éä¿¡ããŒã¿ã³ã¹ã+ 50ïŒ = 2.5752 + 1.2876 = $ 3.8628ã
ãããã«
Blue Frog Roboticsã¯ããã3æ¥ã§ãå®å šã«æ©èœããå éšã·ã¹ãã ãã»ããã¢ããããŸããã ããã§ãäŒç€Ÿã¯çºå£²åŸããã«ããããã®å±éãšè©Šé転ãç£èŠã§ããããã«ãªããŸãã
ãããã€ãããã¢ãŒããã¯ãã£ã¯ãå°æ¥ã®éçºã«éåžžã«æè»ã§ãããããæè¡è ã¯æ°ããäžéãµãŒãã¹ãè¿œå ã§ããå€ãã®å°åã®éçºç°å¢ãšã¢ãŒããã¯ãã£å šäœã®èªååããµããŒãããŸãã æãèå³æ·±ãã®ã¯ãçç£åäœãããã®å éšã·ã¹ãã ã®ã³ã¹ããéåžžã«å°ãªãããšã§ãã
ãã®ãããªã¢ãŒããã¯ãã£ãŸãã¯ãã®ã³ã³ããŒãã³ãã®ãããã€ã«èå³ãããå Žåã¯ã GitHubã§ãœãŒã¹ã³ãŒããå ¥æã§ããŸã ã
3æ30æ¥ã«ãããžãã¹ ã IoTå°çšã®ãªã³ã©ã€ã³äŒè°ãéå¬ãããããšãæãåºããŠãã ããã