{"id":1069,"date":"2012-07-20T17:21:33","date_gmt":"2012-07-20T08:21:33","guid":{"rendered":"http:\/\/www.digifie.jp\/blog\/?p=1069"},"modified":"2012-07-20T17:28:57","modified_gmt":"2012-07-20T08:28:57","slug":"opencv-%e3%81%ae-ane-%e3%81%a7%e3%81%ae%e3%81%9e%e3%81%8d%e8%a6%8b%e3%82%a2%e3%83%97%e3%83%aa%ef%bc%88%e8%ac%8e%ef%bc%89%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f","status":"publish","type":"post","link":"https:\/\/www.digifie.jp\/blog\/archives\/1069","title":{"rendered":"OpenCV \u306e ANE \u3067\u306e\u305e\u304d\u898b\u30a2\u30d7\u30ea\uff08\u8b0e\uff09\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f"},"content":{"rendered":"<div class='wp_social_bookmarking_light'>        <div class=\"wsbl_facebook\"><a href='http:\/\/www.facebook.com\/share.php?u=https%3A%2F%2Fwww.digifie.jp%2Fblog%2Farchives%2F1069&t=OpenCV%20%E3%81%AE%20ANE%20%E3%81%A7%E3%81%AE%E3%81%9E%E3%81%8D%E8%A6%8B%E3%82%A2%E3%83%97%E3%83%AA%EF%BC%88%E8%AC%8E%EF%BC%89%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F' title='Facebook \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='https:\/\/www.digifie.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/facebook.png' alt='Facebook \u306b\u30b7\u30a7\u30a2' title='Facebook \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>        <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.digifie.jp\/blog\/archives\/1069\" data-text=\"OpenCV \u306e ANE \u3067\u306e\u305e\u304d\u898b\u30a2\u30d7\u30ea\uff08\u8b0e\uff09\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\" data-via=\"LLC DigiFie\" data-lang=\"ja\">Tweet<\/a><\/div><\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.digifie.jp\/blog\/wp-content\/uploads\/2012\/07\/ANE_OpenCV_Away3D.jpg\" alt=\"ANE_OpenCV_Away3D\" title=\"ANE_OpenCV_Away3D\" width=\"590\" height=\"439\" class=\"aligncenter size-full wp-image-1070\" srcset=\"https:\/\/www.digifie.jp\/blog\/wp-content\/uploads\/2012\/07\/ANE_OpenCV_Away3D.jpg 590w, https:\/\/www.digifie.jp\/blog\/wp-content\/uploads\/2012\/07\/ANE_OpenCV_Away3D-300x223.jpg 300w\" sizes=\"(max-width: 590px) 100vw, 590px\" \/><\/p>\n<p>\u753b\u50cf\u8a8d\u8b58\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af OpenCV \u304c\u4f7f\u3048\u308b ANE\uff08 AIR Native Extension \uff09\u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u4ed8\u5c5e\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u3061\u3087\u3061\u3087\u3063\u3068\u3044\u3058\u3063\u3066\u3001\u4e0a\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306e\u3088\u3046\u306a Desktop AIR \u7528\u300c\u306e\u305e\u304d\u898b\u30a2\u30d7\u30ea\u300d\u3092\u4f5c\u3063\u3066\u904a\u3093\u3067\u307f\u307e\u3057\u305f\u3002<\/p>\n<p>\u3053\u308c\u3001\u3069\u3093\u306a\u30a2\u30d7\u30ea\u304b\u3068\u3044\u3048\u3070\u3001OpenCV \u3067\u898b\u3066\u3044\u308b\u4eba\u306e\u9854\u3092\u8ffd\u8de1\u3057\u3066\u3001\u9854\u306e\u4f4d\u7f6e\u306b\u5fdc\u3058\u3066 Away3D 4.0 \u306e\u30ab\u30e1\u30e9\u3092\u30b0\u30ea\u30b0\u30ea\u52d5\u304b\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u9854\u306e\u4f4d\u7f6e\u306b\u30ab\u30e1\u30e9\u304c\u4ed8\u3044\u3066\u304f\u308b\u306e\u3067\u3001\u8868\u793a\u3055\u308c\u3066\u3044\u308b 3D\u30e2\u30c7\u30eb\u3092\u4e0a\u4e0b\u5de6\u53f3\u304b\u3089\u306e\u305e\u304d\u8fbc\u3093\u3060\u308a\u3001\u8fd1\u304f\u306b\u5bc4\u3063\u305f\u308a\u9060\u304f\u306b\u96e2\u308c\u305f\u308a\u3057\u3066\u2026<br \/>\n\u3053\u3093\u306a\u611f\u3058\u3067\u52d5\u304d\u307e\u3059\u3002<br \/>\n\u3000<br \/>\n<iframe loading=\"lazy\" width=\"590\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/EOldyHzSKC4\" frameborder=\"0\" allowfullscreen><\/iframe><br \/>\n\u3000<\/p>\n<p>\u3053\u308c\u307e\u3067\u3082 Flash \u3067\u9854\u8a8d\u8b58\u3092\u5b9f\u88c5\u3057\u305f\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3042\u3063\u305f\u306e\u3067\u3059\u304c\u3001OpenCV \u304b\u3089\u306e\u79fb\u690d\u7248\u3067\u52d5\u4f5c\u304c\u3082\u3063\u3055\u308a\u3068\u3057\u305f\u3082\u306e\u3070\u304b\u308a\u3067\u30013D \u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u3068\u3068\u3066\u3082\u6050\u308d\u3057\u3044\u3053\u3068\u306b\u306a\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u30cd\u30a4\u30c6\u30a3\u30d6\u306e C++\u7248 OpenCV \u3092\u30e9\u30c3\u30d7\u3057\u305f ANE \u3068 Stage3D\uff08\u4eca\u56de\u306f Away3D 4.0 \u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\uff09\u306e\u7d44\u307f\u5408\u308f\u305b\u3060\u3068\u300160 fps \u3067\u30b5\u30af\u30b5\u30af\u52d5\u304f\u306e\u3067\u5feb\u9069\u3067\u3059\u3002<\/p>\n<p>\u307e\u305f\u3001\u5148\u65e5\u767a\u8868\u3055\u308c\u305f FlashPlayer 11.4 Beta \u304b\u3089\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u305f ActionScript Worker \u306e\u30b5\u30f3\u30d7\u30eb\u306b\u3082 AS \u79fb\u690d\u7248\u306e OpenCV \u3092\u4f7f\u3063\u305f\u3082\u306e\u304c\u3042\u308a\u307e\u3057\u305f\u304c\u3001\u753b\u9762\u63cf\u753b\u306f 60 fps \u51fa\u3066\u3044\u3066\u3082\u3001\u9854\u8a8d\u8b58\u306e\u8ffd\u5f93\u6027\u306f\u3044\u307e\u3072\u3068\u3064\u3060\u3063\u305f\u306e\u3068\u3001Worker \u3092\u5b9f\u88c5\u3059\u308b\u969b\u3001Worker \u9593\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u3084\u308a\u3068\u308a\u3067\u982d\u304c\u3053\u3093\u304c\u3089\u304c\u3063\u3066\u3057\u307e\u3046\u50d5\u306e\u3088\u3046\u306a\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u306f\u3053\u306e ANE\u7248 OpenCV \u306f\u4f7f\u3044\u3084\u3059\u3044\u611f\u3058\u3067\u3057\u305f\u3002<\/p>\n<p>\u3068\u3044\u3046\u308f\u3051\u3067\u4eca\u56de\u306e\u30b3\u30fc\u30c9\uff08ANE\u4ed8\u5c5e\u306e\u30b5\u30f3\u30d7\u30eb\u300cVirtualWindowDemo.as\u300d\u3092\u4e00\u90e8\u5909\u66f4\uff09\u306f\u4ee5\u4e0b\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: as3; title: ; notranslate\" title=\"\">\r\npackage be.aboutme.nativeExtensions.opencv.demos\r\n{\r\n\timport away3d.cameras.Camera3D;\r\n\timport away3d.cameras.lenses.PerspectiveLens;\r\n\timport away3d.containers.Scene3D;\r\n\timport away3d.containers.View3D;\r\n\timport away3d.entities.Mesh;\r\n\timport away3d.lights.DirectionalLight;\r\n\timport away3d.loaders.Loader3D;\r\n\timport away3d.loaders.parsers.Parsers;\r\n\timport away3d.materials.ColorMaterial;\r\n\timport away3d.materials.SegmentMaterial;\r\n\timport away3d.materials.lightpickers.StaticLightPicker;\r\n\timport away3d.materials.methods.SoftShadowMapMethod;\r\n\timport away3d.primitives.CubeGeometry;\r\n\timport away3d.primitives.PlaneGeometry;\r\n\timport away3d.primitives.WireframeGrid;\r\n\t\r\n\timport be.aboutme.nativeExtensions.opencv.OpenCV;\r\n\timport be.aboutme.nativeExtensions.opencv.events.DetectionEvent;\r\n\t\r\n\timport flash.display.BitmapData;\r\n\timport flash.display.Sprite;\r\n\timport flash.events.Event;\r\n\timport flash.filesystem.File;\r\n\timport flash.geom.Point;\r\n\timport flash.geom.Rectangle;\r\n\timport flash.geom.Vector3D;\r\n\timport flash.media.Camera;\r\n\timport flash.media.Video;\r\n\timport flash.net.URLRequest;\r\n\r\n\tpublic class VirtualWindowDemo extends DemoBase\r\n\t{\r\n\t\tprivate static const IMAGE_SIZE:Point = new Point( 640, 480 );\r\n\r\n\t\tprivate var openCV:OpenCV;\r\n\t\tprivate var minSize:Point;\r\n\t\tprivate var webcam:Camera;\r\n\t\tprivate var video:Video;\r\n\t\tprivate var bmpData:BitmapData;\r\n\t\tprivate var rectangleContainer:Sprite;\r\n\r\n\t\tprivate var scene:Scene3D;\r\n\t\tprivate var camera:Camera3D;\r\n\t\tprivate var view:View3D;\r\n\t\tprivate var loader:Loader3D;\r\n\r\n\t\tprivate var zeroPoint:Vector3D = new Vector3D();\r\n\r\n\t\toverride protected function startDemoImplementation():void\r\n\t\t{\r\n\t\t\tParsers.enableAllBundled();\r\n\r\n\t\t\topenCV = new OpenCV();\r\n\t\t\tminSize = new Point( 50, 50 );\r\n\r\n\t\t\t\/\/setup camera\r\n\t\t\twebcam = Camera.getCamera();\r\n\t\t\twebcam.setMode( IMAGE_SIZE.x, IMAGE_SIZE.y, 30 );\r\n\t\t\tvideo = new Video( IMAGE_SIZE.x, IMAGE_SIZE.y );\r\n\t\t\tvideo.attachCamera( webcam );\r\n\r\n\t\t\t\r\n\t\t\t\/*\r\n\t\t\t-------------- Modified @mousepancyo Start--------------\r\n\t\t\t*\/\r\n\r\n\t\t\tvar monitor:Video = new Video( 160, 120 );\r\n\t\t\tmonitor.attachCamera( webcam );\r\n\t\t\tmonitor.x = 800;\r\n\t\t\tmonitor.scaleX = -1;\r\n\t\t\taddChild( monitor );\r\n\r\n\t\t\t\/*\r\n\t\t\t-------------- Modified @mousepancyo End--------------\r\n\t\t\t*\/\r\n\r\n\t\t\t\/\/create bitmapdata\r\n\t\t\tbmpData = new BitmapData( IMAGE_SIZE.x, IMAGE_SIZE.y, true, 0 );\r\n\t\t\t\/\/addChild(new Bitmap(bmpData));\r\n\r\n\t\t\t\/\/create container for rectangles\r\n\t\t\trectangleContainer = new Sprite();\r\n\t\t\t\/\/addChild(rectangleContainer);\r\n\r\n\t\t\t\/\/create away3D scene\r\n\t\t\tcreateScene();\r\n\r\n\t\t\t\/\/add event listeners\r\n\t\t\topenCV.addEventListener( DetectionEvent.DETECTION_UPDATE, detectionUpdateHandler, false, 0, true );\r\n\t\t\taddEventListener( Event.ENTER_FRAME, enterFrameHandler, false, 0, true );\r\n\r\n\t\t\t\/\/load the cascade\r\n\t\t\topenCV.loadCascade( File.applicationDirectory.resolvePath( &quot;assets\/haarcascades\/haarcascade_frontalface_alt2.xml&quot; ).nativePath );\r\n\t\t}\r\n\r\n\t\tprivate function createScene():void\r\n\t\t{\r\n\t\t\tscene = new Scene3D();\r\n\t\t\tcamera = new Camera3D();\r\n\t\t\tcamera.lookAt( zeroPoint );\r\n\r\n\t\t\tview = new View3D();\r\n\t\t\tview.antiAlias = 4;\r\n\t\t\tview.backgroundColor = 0xEEEEEE;\r\n\t\t\tview.scene = scene;\r\n\t\t\tview.camera = camera;\r\n\t\t\taddChild( view );\r\n\t\t\t\r\n\t\t\t\/*var m:ColorMaterial = new ColorMaterial( 0xFF0000 );\r\n\r\n\t\t\tvar i:int;\r\n\t\t\tvar line:Mesh;\r\n\t\t\t\/\/top\r\n\t\t\tfor ( i = -10; i &lt; 10; i++ )\r\n\t\t\t{\r\n\t\t\t\tline = new Mesh( new CubeGeometry( 1, 1, 1000 ), m );\r\n\t\t\t\tline.x = i * 50;\r\n\t\t\t\tline.y = 400;\r\n\t\t\t\tline.z = -500;\r\n\t\t\t\tscene.addChild( line );\r\n\t\t\t}\r\n\t\t\t\/\/bottom\r\n\t\t\tfor ( i = -10; i &lt; 10; i++ )\r\n\t\t\t{\r\n\t\t\t\tline = new Mesh( new CubeGeometry( 1, 1, 1000 ), m );\r\n\t\t\t\tline.x = i * 50;\r\n\t\t\t\tline.y = -400;\r\n\t\t\t\tline.z = -500;\r\n\t\t\t\tscene.addChild( line );\r\n\t\t\t}\r\n\t\t\t\/\/left\r\n\t\t\tfor ( i = -8; i &lt; 8; i++ )\r\n\t\t\t{\r\n\t\t\t\tline = new Mesh( new CubeGeometry( 1, 1, 1000 ), m );\r\n\t\t\t\tline.x = -500;\r\n\t\t\t\tline.y = i * 50;\r\n\t\t\t\tline.z = -500;\r\n\t\t\t\tscene.addChild( line );\r\n\t\t\t}\r\n\t\t\t\/\/right\r\n\t\t\tfor ( i = -8; i &lt; 8; i++ )\r\n\t\t\t{\r\n\t\t\t\tline = new Mesh( new CubeGeometry( 1, 1, 1000 ), m );\r\n\t\t\t\tline.x = 500;\r\n\t\t\t\tline.y = i * 50;\r\n\t\t\t\tline.z = -500;\r\n\t\t\t\tscene.addChild( line );\r\n\t\t\t}\r\n\r\n\t\t\t\/\/some cubes\r\n\t\t\tvar cube1:Mesh = new Mesh(new CubeGeometry(100, 100, 100), m);\r\n\t\t\tcube1.x = 50;\r\n\t\t\tcube1.y = 50;\r\n\t\t\tcube1.z = -100;\r\n\t\t\tscene.addChild(cube1);\r\n\r\n\t\t\tvar cube2:Mesh = new Mesh(new CubeGeometry(100, 100, 100), m);\r\n\t\t\tcube2.x = -50;\r\n\t\t\tcube2.y = -50;\r\n\t\t\tcube2.z = -500;\r\n\t\t\tscene.addChild(cube2);*\/\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\/*\r\n\t\t\t-------------- Modified @mousepancyo Start--------------\r\n\t\t\t*\/\r\n\t\t\t\r\n\t\t\t\/\/ Lens\r\n\t\t\tvar lens:PerspectiveLens = new PerspectiveLens( 60 );\r\n\t\t\tcamera.lens = lens;\r\n\t\t\t\r\n\t\t\t\/\/ Light\r\n\t\t\tvar light:DirectionalLight = new DirectionalLight();\r\n\t\t\tlight.ambient = .8;\r\n\t\t\tscene.addChild(light);\r\n\t\t\tvar lightPicker:StaticLightPicker = new StaticLightPicker([light]);\r\n\t\t\t\r\n\t\t\t\/\/ Plane\r\n\t\t\tvar planeGeo:PlaneGeometry = new PlaneGeometry(5000, 5000);\r\n\t\t\tvar mat:ColorMaterial = new ColorMaterial(0x99EEFF);\r\n\t\t\tvar plane:Mesh = new Mesh( planeGeo, mat );\r\n\t\t\tplane.y = -300;\r\n\t\t\tscene.addChild( plane );\r\n\t\t\t\r\n\t\t\tvar top:WireframeGrid = new WireframeGrid( 20, 5000, 1, 0xFF9933 );\r\n\t\t\ttop.y = 650;\r\n\t\t\tscene.addChild( top );\r\n\r\n\t\t\t\/\/ Model\r\n\t\t\tloader = new Loader3D( true, null );\r\n\t\t\tloader.load( new URLRequest( &quot;model\/model.3ds&quot; ));\r\n\t\t\tloader.scaleX = loader.scaleY = loader.scaleZ = 3;\r\n\t\t\tloader.y = -300;\r\n\t\t\tloader.z = -500;\r\n\t\t\tscene.addChild( loader );\r\n\t\t\t\r\n\t\t\tmat.shadowMethod = new SoftShadowMapMethod(light);\r\n\t\t\tmat.lightPicker = lightPicker;\r\n\t\t\t\r\n\t\t\t\/*\r\n\t\t\t-------------- Modified @mousepancyo End-------------- \r\n\t\t\t*\/\r\n\r\n\t\t}\r\n\r\n\t\tprotected function enterFrameHandler( event:Event ):void\r\n\t\t{\r\n\t\t\tview.render();\r\n\t\t\tbmpData.draw( video );\r\n\t\t\topenCV.updateImage( bmpData, minSize );\r\n\t\t}\r\n\r\n\t\toverride protected function stopDemoImplementation():void\r\n\t\t{\r\n\t\t\topenCV.removeEventListener( DetectionEvent.DETECTION_UPDATE, detectionUpdateHandler );\r\n\t\t\tremoveEventListener( Event.ENTER_FRAME, enterFrameHandler );\r\n\t\t\tview.dispose();\r\n\t\t}\r\n\r\n\t\tprotected function detectionUpdateHandler( event:DetectionEvent ):void\r\n\t\t{\r\n\t\t\trectangleContainer.graphics.clear();\r\n\t\t\trectangleContainer.graphics.lineStyle( 2, 0xFF0000 );\r\n\r\n\t\t\tif ( event.rectangles.length &gt; 0 )\r\n\t\t\t{\r\n\t\t\t\tvar r:Rectangle = event.rectangles[ 0 ];\r\n\r\n\t\t\t\tvar halfWidth:Number = r.width * .5;\r\n\t\t\t\tvar halfHeight:Number = r.height * .5;\r\n\r\n\t\t\t\tvar xPos:Number = ( r.x + halfWidth );\r\n\t\t\t\tvar yPos:Number = ( r.y + halfHeight );\r\n\t\t\t\tvar sizeRatio:Number = ( r.width * r.height ) \/ ( IMAGE_SIZE.x * IMAGE_SIZE.y );\r\n\r\n\t\t\t\t\/\/sizeRatio is ratio of rect to camera image\r\n\r\n\t\t\t\tcamera.x = -NumberUtils.map( xPos, halfWidth, IMAGE_SIZE.x - halfWidth, -500, 500 );\r\n\t\t\t\tcamera.y = -NumberUtils.map( yPos, halfHeight, IMAGE_SIZE.y - halfHeight, -500, 500 );\r\n\t\t\t\tcamera.z = NumberUtils.map( sizeRatio, 0, 1, -1000, 0 );\r\n\r\n\t\t\t\tcamera.lookAt( zeroPoint );\r\n\r\n\t\t\t\trectangleContainer.graphics.drawCircle( xPos, yPos, 5 );\r\n\t\t\t\trectangleContainer.graphics.drawRect( r.x, r.y, r.width, r.height );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n<div class='wp_social_bookmarking_light'>        <div class=\"wsbl_facebook\"><a href='http:\/\/www.facebook.com\/share.php?u=https%3A%2F%2Fwww.digifie.jp%2Fblog%2Farchives%2F1069&t=OpenCV%20%E3%81%AE%20ANE%20%E3%81%A7%E3%81%AE%E3%81%9E%E3%81%8D%E8%A6%8B%E3%82%A2%E3%83%97%E3%83%AA%EF%BC%88%E8%AC%8E%EF%BC%89%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F' title='Facebook \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='https:\/\/www.digifie.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/facebook.png' alt='Facebook \u306b\u30b7\u30a7\u30a2' title='Facebook \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>        <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.digifie.jp\/blog\/archives\/1069\" data-text=\"OpenCV \u306e ANE \u3067\u306e\u305e\u304d\u898b\u30a2\u30d7\u30ea\uff08\u8b0e\uff09\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\" data-via=\"LLC DigiFie\" data-lang=\"ja\">Tweet<\/a><\/div><\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u753b\u50cf\u8a8d\u8b58\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af OpenCV \u304c\u4f7f\u3048\u308b ANE\uff08 AIR Native Extension \uff09\u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u4ed8\u5c5e\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u3061\u3087\u3061\u3087\u3063\u3068\u3044\u3058\u3063\u3066\u3001\u4e0a\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306e\u3088\u3046\u306a Desktop AIR  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[37,3,36,38],"tags":[],"_links":{"self":[{"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/posts\/1069"}],"collection":[{"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/comments?post=1069"}],"version-history":[{"count":12,"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/posts\/1069\/revisions"}],"predecessor-version":[{"id":1082,"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/posts\/1069\/revisions\/1082"}],"wp:attachment":[{"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/media?parent=1069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/categories?post=1069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.digifie.jp\/blog\/wp-json\/wp\/v2\/tags?post=1069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}