{"id":1488,"date":"2017-12-10T00:00:01","date_gmt":"2017-12-09T15:00:01","guid":{"rendered":"https:\/\/www.ecomott.co.jp\/tech_blog\/?p=1488"},"modified":"2018-09-13T09:56:36","modified_gmt":"2018-09-13T00:56:36","slug":"s3-lambda-opencv%e3%81%a7%e7%94%bb%e5%83%8f%e3%81%8b%e3%82%89%e5%80%8b%e4%ba%ba%e6%83%85%e5%a0%b1%e3%82%92%e9%99%a4%e5%8e%bb%e3%81%97%e3%81%9f","status":"publish","type":"post","link":"https:\/\/test.ecomottblog.com\/?p=1488","title":{"rendered":"S3 + Lambda + OpenCV\u3067\u9854\u691c\u51fa&#038;\u30e2\u30b6\u30a4\u30af"},"content":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\uff01<br \/>\n\u958b\u767a\u90e8\u306e\u6b66\u5185\u3067\u3059\u3002<br \/>\n\u30a8\u30b3\u30e2\u30c3\u30c8\u30a2\u30c9\u30d9\u30f3\u30c8\u30ab\u30ec\u30f3\u30c0\u30fc\u306e10\u65e5\u76ee\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002<\/p>\n<p>\u5f0a\u793e\u3067\u306f <a href=\"https:\/\/www.gembaroid.jp\/product\/camera\/\">\u30df\u30eb\u30e2\u30c3\u30c8<\/a> \u3084 <a href=\"http:\/\/www.geo-scope.jp\/\">\u30b8\u30aa\u30b9\u30b3\u30fc\u30d7<\/a> \u3092\u306f\u3058\u3081\u3068\u3057\u305f\u3001<br \/>\n\u753b\u50cf\u30fb\u52d5\u753b\u3092\u6271\u3046\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u5c55\u958b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u4eca\u5e74\u3001\u7d4c\u6e08\u7523\u696d\u7701\u30fb\u7dcf\u52d9\u7701\u30fbIoT\u63a8\u9032\u30b3\u30f3\u30bd\u30fc\u30b7\u30a2\u30e0\u306b\u3088\u308a<br \/>\n<a href=\"http:\/\/www.meti.go.jp\/press\/2016\/01\/20170131002\/20170131002.html\">\u30ab\u30e1\u30e9\u753b\u50cf\u5229\u6d3b\u7528\u30ac\u30a4\u30c9\u30d6\u30c3\u30afver1.0<\/a> \u304c\u7b56\u5b9a\u3055\u308c\u3001<br \/>\n\u305d\u308c\u306b\u8ffd\u5f93\u3059\u308b\u3088\u3046\u306b\u672d\u5e4c\u5e02\u306a\u3069\u306e\u81ea\u6cbb\u4f53\u3067\u3082<br \/>\n<a href=\"http:\/\/www.city.sapporo.jp\/shimin\/chiiki-bohan\/camera\/index.html\">\u9632\u72af\u30ab\u30e1\u30e9\u306b\u95a2\u3059\u308b\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3<\/a> \u304c\u7b56\u5b9a\u3055\u308c\u308b\u306a\u3069\u3001<br \/>\n<strong>\u30ab\u30e1\u30e9\u3067\u64ae\u5f71\u3055\u308c\u305f\u500b\u4eba\u60c5\u5831<\/strong>\u306b\u5bfe\u3059\u308b\u610f\u8b58\u30fb\u6c17\u904b\u304c\u9ad8\u307e\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u305d\u3046\u3044\u3063\u305f\u6d41\u308c\u306b\u5bfe\u3057\u3066\u3001<br \/>\n\u30a8\u30f3\u30b8\u30cb\u30a2\u3068\u3057\u3066\u306f\u3084\u306f\u308a\u6280\u8853\u3067\u89e3\u6c7a\u3057\u305f\u3044\uff01\u3068\u3044\u3046\u3053\u3068\u3067\u3001<br \/>\n\u4eca\u56de\u306fAWS\u3092\u5229\u7528\u3057\u3066\u3001\u753b\u50cf\u5185\u306e\u500b\u4eba\u60c5\u5831\u306e\u4e00\u3064\u3067\u3042\u308b<strong>\u9854<\/strong>\u3092\u691c\u51fa\u3057\u30e2\u30b6\u30a4\u30af\u3092\u304b\u3051\u308b\u4ed5\u7d44\u307f\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n<!--more--><\/p>\n<h2>\u69cb\u6210<\/h2>\n<p>Serverless\u304b\u3064\u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u6210\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_diaglam.png\" alt=\"moza_diaglam\" \/><\/p>\n<ul>\n<li>Amazon S3 (\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u524d\/\u51e6\u7406\u5f8c\u306e\u753b\u50cf\u3092\u4fdd\u5b58\u3059\u308b)<\/li>\n<li>AWS Lambda + Python 2.7 + OpenCV 3.2 (\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3092\u884c\u3046)<\/li>\n<\/ul>\n<h2>\u5b9f\u88c5<\/h2>\n<h3>OpenCV\u306e\u30d3\u30eb\u30c9<\/h3>\n<p>\u307e\u305a\u306fOpenCV\u3092Python\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304b\u3089\u30d3\u30eb\u30c9\u3092\u884c\u3044\u307e\u3059\u3002<br \/>\n\u3053\u308c\u306b\u306fCMake\u3084\u95a2\u9023\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63c3\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u5c11\u3057\u9762\u5012\u306a\u3068\u3053\u308d\u306a\u306e\u3067\u3059\u304c\u3001<br \/>\n<a href=\"https:\/\/github.com\/aeddi\/aws-lambda-python-opencv\">Python OpenCV module for AWS Lambda<\/a> \u3068\u3044\u3046\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3053\u3061\u3089\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>\u30d3\u30eb\u30c9\u74b0\u5883\u3068\u3057\u3066EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n\u4eca\u56de\u306f\u4ee5\u4e0b\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/p>\n<ul>\n<li>Amazon Linux (ami-da9e2cbc)<\/li>\n<li>t2.nano<\/li>\n<\/ul>\n<p>\u4f5c\u6210\u3057\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306bSSH\u3057\u30d3\u30eb\u30c9\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<pre><code class=\"bash\"># Python OpenCV module for AWS Lambda\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n[ec2-user@ ~]$ wget https:\/\/github.com\/aeddi\/aws-lambda-python-opencv\/archive\/master.zip\n[ec2-user@ ~]$ unzip master.zip\n# \u30d3\u30eb\u30c9\n[ec2-user@ ~]$ cd aws-lambda-python-opencv-master &amp;&amp; .\/build.sh\n<\/code><\/pre>\n<p>t2.nano\u3060\u306830\u5206\u307b\u3069\u3067\u30d3\u30eb\u30c9\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002<\/p>\n<h3>\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u30b3\u30fc\u30c9<\/h3>\n<p>\u30d3\u30eb\u30c9\u304c\u5b8c\u4e86\u3059\u308b\u3068lambda-package\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001<br \/>\n\u305d\u306e\u4e2d\u306b\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u30b3\u30fc\u30c9\u3092\u914d\u7f6e\u3057\u3066Lambda\u7528\u306b\u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u5316(zip)\u3057\u307e\u3059\u3002<\/p>\n<p>\u307e\u305f\u3001\u9854\u691c\u51fa\u306b\u306f <a href=\"http:\/\/opencv.jp\/opencv-2svn\/c\/objdetect_cascade_classification.html\">\u30ab\u30b9\u30b1\u30fc\u30c9\u578b\u5206\u985e\u5668<\/a> \u3092\u4f7f\u7528\u3059\u308b\u306e\u3067\u3001<br \/>\n\u6b63\u9762\u9854\u691c\u51fa\u7528\u306e\u5b66\u7fd2\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"bash\">[ec2-user@ ~]$ cd ~\/aws-lambda-python-opencv-master\/lambda-package\n# \u30ab\u30b9\u30b1\u30fc\u30c9\u578b\u5206\u985e\u5668\u3067\u4f7f\u7528\u3059\u308b\u6b63\u9762\u9854\u691c\u51fa\u7528\u5b66\u7fd2\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n[ec2-user@ lambda-package]$ wget https:\/\/raw.githubusercontent.com\/opencv\/opencv\/master\/data\/haarcascades\/haarcascade_frontalface_default.xml\n<\/code><\/pre>\n<p>\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9f\u88c5\u3057\u307e\u3057\u305f\u3002<\/p>\n<pre><code class=\"bash\">[ec2-user@ lambda-package]$ vim lambda_function.py\n<\/code><\/pre>\n<pre><code class=\"python\"># -*- coding: utf-8 -*-\n\n# lambda_function.py\n\nfrom __future__ import print_function\n\nimport os\nimport re\nimport urllib\nimport boto3\nimport cv2\n\ns3 = boto3.client('s3')\n\n# \u6b63\u9762\u9854\u691c\u51fa\u7528\u5b66\u7fd2\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\ncascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')\n\ndef lambda_handler(event, context):\n    # S3\u306e\u30d5\u30a1\u30a4\u30eb\u60c5\u5831\u3092\u53d6\u5f97\/\u8a2d\u5b9a\n    bucket = event['Records'][0]['s3']['bucket']['name']\n    key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key'].encode('utf8'))\n    tmp = u'\/tmp\/' + os.path.basename(key)\n    output = re.sub(r'^input-data\/', u'output-data\/', key)\n    try:\n        # \u51e6\u7406\u524d\u306e\u753b\u50cf\u3092\u8aad\u307f\u8fbc\u307f\n        s3.download_file(Bucket = bucket, Key = key, Filename = tmp)\n        before = cv2.imread(tmp)\n        after = cv2.imread(tmp)\n\n        # \u30b0\u30ec\u30fc\u30b9\u30b1\u30fc\u30eb\u306b\u5909\u63db\n        gray = cv2.cvtColor(before, cv2.COLOR_RGB2GRAY)\n        # \u30ab\u30b9\u30b1\u30fc\u30c9\u578b\u5206\u985e\u5668\u3067\u9854\u3092\u691c\u51fa\n        face = cascade.detectMultiScale(gray, 1.3, 5)\n        if 0 &lt; len(face):\n            for (x, y, w, h) in face:\n                # \u9854\u3092\u5207\u308a\u53d6\u308a\u30e2\u30b6\u30a4\u30af\u51e6\u7406\n                cut_img = before[y:y+h, x:x+w]\n                cut_face = cut_img.shape[:2][::-1]\n                cut_img = cv2.resize(cut_img, (cut_face[0] \/ 10, cut_face[0] \/ 10))\n                cut_img = cv2.resize(cut_img, cut_face, interpolation = cv2.INTER_NEAREST)\n                # \u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3057\u305f\u90e8\u5206\u3092\u91cd\u306d\u308b\n                after[y:y+h, x:x+w] = cut_img\n\n        # \u51e6\u7406\u5f8c\u306e\u753b\u50cf\u3092\u4fdd\u5b58\n        cv2.imwrite(tmp, after)\n        s3.upload_file(Filename=tmp, Bucket=bucket, Key=output)\n        os.remove(tmp)\n        return\n    except Exception as e:\n        print(e)\n        raise e\n<\/code><\/pre>\n<p>\u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"bash\">[ec2-user@ lambda-package]$ zip -r ..\/lambda-package.zip *\n<\/code><\/pre>\n<h3>\u753b\u50cf\u4fdd\u5b58\u7528S3\u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210<\/h3>\n<p>face-mozaic\u3068\u3044\u3046\u30d0\u30b1\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3001<br \/>\n\u914d\u4e0b\u306binput-data\u3068output-data\u3068\u3044\u3046\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_s3_bucket.png\" alt=\"moza_s3_bucket\" \/><\/p>\n<p>input-data\u306b\u753b\u50cf\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3068output-data\u306b\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3055\u308c\u305f\u753b\u50cf\u304c\u4f5c\u6210\u3055\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<h3>\u30e2\u30b6\u30a4\u30af\u51e6\u7406Lambda\u95a2\u6570\u306e\u4f5c\u6210<\/h3>\n<p>face-mozaic\u3068\u3044\u3046\u95a2\u6570\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u30e9\u30f3\u30bf\u30a4\u30e0\u306fPython 2.7\u3092\u9078\u629e\u3057\u3001<br \/>\n\u30ed\u30fc\u30eb\u306fS3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u304c\u3042\u308b\u3082\u306e\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_lambda_01.png\" alt=\"moza_lambda_01\" \/><\/p>\n<p>\u95a2\u6570\u304c\u4f5c\u6210\u3055\u308c\u305f\u3089\u30c8\u30ea\u30ac\u30fc\u3068\u3057\u3066S3\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_lambda_02.png\" alt=\"moza_lambda_02\" \/><\/p>\n<p>\u30c8\u30ea\u30ac\u30fc\u8a2d\u5b9a\u3067\u5bfe\u8c61\u306e\u30d0\u30b1\u30c3\u30c8\u3068\u3057\u3066face-mozaic\u3092\u3001\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u3057\u3066input-data\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<br \/>\n\u4e00\u5fdc\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u306bjpg\u3092\u6307\u5b9a\u3057\u3001jpg\u30d5\u30a1\u30a4\u30eb\u306b\u3057\u304b\u30c8\u30ea\u30ac\u30fc\u304c\u53cd\u5fdc\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_lambda_03.png\" alt=\"moza_lambda_03\" \/><\/p>\n<p>\u5148\u307b\u3069\u4f5c\u6210\u3057\u305f\u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_lambda_04.png\" alt=\"moza_lambda_04\" \/><\/p>\n<h2>\u52d5\u4f5c\u78ba\u8a8d<\/h2>\n<p>\u3067\u306f\u52d5\u304b\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p>\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u3068\u3057\u3066 <a href=\"https:\/\/www.pexels.com\/\">Pexels<\/a> \u306e\u5199\u771f\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002<br \/>\n(Creative Commons Zero (CC0) license)<\/p>\n<p>input-data\u306b\u753b\u50cf\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_s3_input.png\" alt=\"moza_s3_input\" \/><\/p>\n<p>\u5c11\u3057\u5f85\u3064\u3068\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3055\u308c\u305f\u753b\u50cf\u304coutput-data\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/moza_s3_output.png\" alt=\"moza_s3_output\" \/><\/p>\n<p>\u7d50\u679c\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/man_before.jpg\" alt=\"man_before\" \/><\/p>\n<p>\u2193\u2193\u2193<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/man_after.jpg\" alt=\"man_after\" \/><\/p>\n<p>\u9854\u306b\u30e2\u30b6\u30a4\u30af\u304c\u304b\u304b\u308a\u307e\u3057\u305f\uff01<\/p>\n<p>\u8907\u6570\u4eba\u306e\u5834\u5408\u3067\u3082\u540c\u69d8\u306b\u30e2\u30b6\u30a4\u30af\u304c\u304b\u304b\u308a\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/group_before.jpg\" alt=\"group_before\" \/><\/p>\n<p>\u2193\u2193\u2193<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/group_after.jpg\" alt=\"group_after\" \/><\/p>\n<h3>\u6a2a\u9854\u3084\u52d5\u7269\u306e\u5834\u5408<\/h3>\n<p>\u6b63\u9762\u9854\u691c\u51fa\u7528\u306e\u5b66\u7fd2\u30c7\u30fc\u30bf\u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u306e\u3067\u3001<br \/>\n\u3053\u306e\u307e\u307e\u3067\u306f\u4eba\u9593\u306e\u6a2a\u9854\u3084\u52d5\u7269\u306e\u9854\u306f\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u305d\u308c\u3089\u306b\u3082\u5b66\u7fd2\u30c7\u30fc\u30bf\u304c\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u6a2a\u9854\u306b\u306f <a href=\"https:\/\/raw.githubusercontent.com\/opencv\/opencv\/master\/data\/haarcascades\/haarcascade_frontalface_default.xml\">haarcascade_profileface.xml<\/a> \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/profile_before.jpg\" alt=\"profile_before\" \/><\/p>\n<p>\u2193\u2193\u2193<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/profile_after.jpg\" alt=\"profile_after\" \/><\/p>\n<p>\u6a2a\u9854\u304c\u691c\u51fa\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u732b\u306e\u6b63\u9762\u9854\u7528\u306e\u5b66\u7fd2\u30c7\u30fc\u30bf\u3082\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n<a href=\"https:\/\/raw.githubusercontent.com\/opencv\/opencv\/master\/data\/haarcascades\/haarcascade_frontalcatface.xml\">haarcascade_frontalcatface.xml<\/a> \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/cat_before.jpg\" alt=\"cat_before\" \/><\/p>\n<p>\u2193\u2193\u2193<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.ecomottblog.com\/cmswp\/wp-content\/uploads\/2017\/12\/cat_after.jpg\" alt=\"cat_after\" \/><\/p>\n<p>\u3053\u3061\u3089\u306f\u3042\u307e\u308a\u7cbe\u5ea6\u304c\u9ad8\u304f\u306a\u304b\u3063\u305f\u306e\u3067\u3001<br \/>\n\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306a\u3069\u304c\u5fc5\u8981\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306d\u3002<\/p>\n<h2>\u304a\u308f\u308a\u306b<\/h2>\n<p>\u3044\u304b\u304c\u3067\u3057\u305f\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n<p>\u500b\u4eba\u60c5\u5831\u306e\u5207\u308a\u5206\u3051\u3084\u7834\u68c4\u306f\u3001\u4eba\u529b\u3067\u306f\u9aa8\u306e\u6298\u308c\u308b\u4f5c\u696d\u3067\u3059\u3002<br \/>\n\u753b\u50cf\u8a8d\u8b58\u3082\u9032\u6b69\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u3069\u3093\u3069\u3093\u30b7\u30b9\u30c6\u30e0\u5316\u3057\u3066\u3044\u304d\u305f\u3044\u3067\u3059\u306d\u3002<\/p>\n<p>\u7686\u3055\u307e\u306e\u5feb\u9069\u306a\u958b\u767a\u751f\u6d3b\u306e\u4e00\u52a9\u306b\u306a\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\uff01 \u958b\u767a\u90e8\u306e\u6b66\u5185\u3067\u3059\u3002 \u30a8\u30b3\u30e2\u30c3\u30c8\u30a2\u30c9\u30d9\u30f3\u30c8\u30ab\u30ec\u30f3\u30c0\u30fc\u306e10\u65e5\u76ee\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002 \u5f0a\u793e\u3067\u306f \u30df\u30eb\u30e2\u30c3\u30c8 \u3084 \u30b8\u30aa\u30b9\u30b3\u30fc\u30d7 \u3092\u306f\u3058\u3081\u3068\u3057\u305f\u3001 \u753b\u50cf\u30fb\u52d5\u753b\u3092\u6271\u3046\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u5c55\u958b\u3057\u3066\u3044\u307e\u3059\u3002 \u4eca\u5e74\u3001\u7d4c\u6e08\u7523\u696d\u7701\u30fb\u7dcf\u52d9 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":1736,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[24,19,31],"_links":{"self":[{"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1488"}],"collection":[{"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1488"}],"version-history":[{"count":32,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1488\/revisions"}],"predecessor-version":[{"id":1913,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1488\/revisions\/1913"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=\/wp\/v2\/media\/1736"}],"wp:attachment":[{"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.ecomottblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}