{"componentChunkName":"component---src-modules-datocms-post-page-page-tsx","path":"/posts/32","result":{"data":{"post":{"title":"ディープラーニングやろうぜ! MacBookPro-MacOSX10.10にGPUを使えるCaffeをビルドする","author":{"name":"reoring","images":{"r32":{"src":"https://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&fm=png&h=32&mask=ellipse&w=32","srcSet":"https://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=1&fm=png&h=32&mask=ellipse&w=32 1x,\nhttps://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=1.5&fm=png&h=32&mask=ellipse&w=32 1.5x,\nhttps://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=2&fm=png&h=32&mask=ellipse&w=32 2x,\nhttps://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=3&fm=png&h=32&mask=ellipse&w=32 3x"},"r48":{"src":"https://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&fm=png&h=48&mask=ellipse&w=48","srcSet":"https://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=1&fm=png&h=48&mask=ellipse&w=48 1x,\nhttps://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=1.5&fm=png&h=48&mask=ellipse&w=48 1.5x,\nhttps://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=2&fm=png&h=48&mask=ellipse&w=48 2x,\nhttps://www.datocms-assets.com/29850/1591833154-735890.jpg?auto=format&dpr=3&fm=png&h=48&mask=ellipse&w=48 3x"}},"bio":"株式会社クラフトマンソフトウェア代表 | Schoo講師 | 分報発祥の会社 | YYPHP主催 | マンガでわかるDocker監修 | 実践ドメイン駆動設計レビュア | 自動受け入れテスト ShouldBee http://shouldbee.at/"},"date":"2015年7月31日","tags":["ディープラーニング","Deep-Learning"],"category":"プログラミング","body":"<p data-sourcepos=\"1:1-1:324\">テスト自動化サービスの<a href=\"https://shouldbee.at/\" target=\"_blank\" rel=\"noopener noreferrer\">ShouldBee</a>では、テスト作業のさらなる省力化のために人工知能を用いた機能を開発しています。今回は、ディープラーニングフレームワークであるCaffeをインストールして使える状態にしていきます。</p>\n<p data-sourcepos=\"3:1-3:112\">MacBookPro(Late 2013)は、NVIDIAのGeForce GT 750Mが搭載されているので、CUDAが利用できます。</p>\n<p data-sourcepos=\"5:1-6:188\">本記事は2015/7/31時点の段階で一番確実なビルド方法です。<br>\nこれまでは、libstdc++を使うためのFormulaの変更が必要でしたが、libstdc++問題は現在は発生しないので、Formulaの書き換えは不要になりました。</p>\n<h1 data-sourcepos=\"8:1-8:60\" id=\"1-0-0\" name=\"1-0-0\">\n<a class=\"anchor\" id=\"pyenvを使ってanaconda 2.1.0をインストールする\" name=\"pyenv%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6anaconda%202.1.0%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B\" href=\"#pyenv%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6anaconda%202.1.0%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B\" data-position=\"1-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"pyenvを使ってanaconda 2.1.0をインストールする\"> &gt; pyenvを使ってanaconda 2.1.0をインストールする</span></a>pyenvを使ってanaconda 2.1.0をインストールする</h1>\n<blockquote data-sourcepos=\"10:1-10:334\">\n<p data-sourcepos=\"10:3-10:334\">AnacondaはPythonの数値計算環境を構築するために様々なパッケージをまとめた無料のディストリビューションです。 インストールを行うことで、NumPy，SciPy，matplotlibはもちろん、機械学習ライブラリscikit-learn等のパッケージをインストールできます。</p>\n</blockquote>\n<p data-sourcepos=\"12:1-12:83\">とのことなので、今回はpython環境にanacondaを使っていきます。</p>\n<div class=\"code-block\" data-sourcepos=\"14:1-21:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew <span class=\"nb\">install </span>pyenv\n<span class=\"nb\">export </span><span class=\"nv\">PYENV_ROOT</span><span class=\"o\">=</span>/usr/local/var/pyenv\n<span class=\"c\"># もしくは、export $HOME/.pyenv</span>\n<span class=\"c\"># 記事中では、$HOME/.pyenvとなっていますので適切に読み変えてください。</span>\n\npyenv <span class=\"nb\">install </span>anaconda-2.1.0 <span class=\"c\"># とても時間がかかります</span>\n</code></pre></div>\n</div>\n<h2 data-sourcepos=\"23:1-23:47\" id=\"1-1-0\" name=\"1-1-0\">\n<a class=\"anchor\" id=\"anaconda-2.1.0を使うように選択する\" name=\"anaconda-2.1.0%E3%82%92%E4%BD%BF%E3%81%86%E3%82%88%E3%81%86%E3%81%AB%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B\" href=\"#anaconda-2.1.0%E3%82%92%E4%BD%BF%E3%81%86%E3%82%88%E3%81%86%E3%81%AB%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B\" data-position=\"1-1-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"anaconda-2.1.0を使うように選択する\"> &gt; anaconda-2.1.0を使うように選択する</span></a>anaconda-2.1.0を使うように選択する</h2>\n<div class=\"code-block\" data-sourcepos=\"25:1-28:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>pyenv <span class=\"nb\">local </span>anaconda-2.1.0\npyenv global anaconda-2.1.0\n</code></pre></div>\n</div>\n<h2 data-sourcepos=\"30:1-30:40\" id=\"1-2-0\" name=\"1-2-0\">\n<a class=\"anchor\" id=\"pyenvを使うようにshellを設定\" name=\"pyenv%E3%82%92%E4%BD%BF%E3%81%86%E3%82%88%E3%81%86%E3%81%ABshell%E3%82%92%E8%A8%AD%E5%AE%9A\" href=\"#pyenv%E3%82%92%E4%BD%BF%E3%81%86%E3%82%88%E3%81%86%E3%81%ABshell%E3%82%92%E8%A8%AD%E5%AE%9A\" data-position=\"1-2-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"pyenvを使うようにshellを設定\"> &gt; pyenvを使うようにshellを設定</span></a>pyenvを使うようにshellを設定</h2>\n<p data-sourcepos=\"32:1-32:85\">.zshrcや、.bashrcに下記を記述して、sourceコマンドで読み込ませる</p>\n<div class=\"code-block\" data-sourcepos=\"34:1-38:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">export </span><span class=\"nv\">PYENV_ROOT</span><span class=\"o\">=</span><span class=\"s2\">\"</span><span class=\"nv\">$HOME</span><span class=\"s2\">/.pyenv\"</span>\n<span class=\"nb\">export </span><span class=\"nv\">PATH</span><span class=\"o\">=</span><span class=\"s2\">\"</span><span class=\"nv\">$PYENV_ROOT</span><span class=\"s2\">/bin:</span><span class=\"nv\">$PATH</span><span class=\"s2\">\"</span>\n<span class=\"nb\">eval</span> <span class=\"s2\">\"</span><span class=\"si\">$(</span>pyenv init -<span class=\"si\">)</span><span class=\"s2\">\"</span>\n</code></pre></div>\n</div>\n<p data-sourcepos=\"40:1-40:37\">最後に、 <code>pyenv rehash</code> する。</p>\n<h1 data-sourcepos=\"42:1-42:35\" id=\"2-0-0\" name=\"2-0-0\">\n<a class=\"anchor\" id=\"各種依存のインストール\" name=\"%E5%90%84%E7%A8%AE%E4%BE%9D%E5%AD%98%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" href=\"#%E5%90%84%E7%A8%AE%E4%BE%9D%E5%AD%98%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" data-position=\"2-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"各種依存のインストール\"> &gt; 各種依存のインストール</span></a>各種依存のインストール</h1>\n<div class=\"code-block\" data-sourcepos=\"44:1-48:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew <span class=\"nb\">install</span> <span class=\"nt\">--fresh</span> <span class=\"nt\">-vd</span> snappy leveldb gflags glog szip lmdb\nbrew tap homebrew/science\nbrew <span class=\"nb\">install </span>hdf5 opencv\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"50:1-50:27\" id=\"3-0-0\" name=\"3-0-0\">\n<a class=\"anchor\" id=\"BLASのインストール\" name=\"BLAS%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" href=\"#BLAS%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" data-position=\"3-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"BLASのインストール\"> &gt; BLASのインストール</span></a>BLASのインストール</h1>\n<blockquote data-sourcepos=\"52:1-52:185\">\n<p data-sourcepos=\"52:3-52:185\">Basic Linear Algebra Subprograms（BLAS）は、ベクトルと行列に関する基本線型代数操作を実行するライブラリAPIのデファクトスタンダードである</p>\n</blockquote>\n<p data-sourcepos=\"54:1-54:50\">とのことなので、今回はopenblasを使う</p>\n<div class=\"code-block\" data-sourcepos=\"56:1-59:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew tap homebrew/science\nbrew <span class=\"nb\">install </span>homebrew/science/openblas\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"61:1-61:25\" id=\"4-0-0\" name=\"4-0-0\">\n<a class=\"anchor\" id=\"boostと、boost-python\" name=\"boost%E3%81%A8%E3%80%81boost-python\" href=\"#boost%E3%81%A8%E3%80%81boost-python\" data-position=\"4-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"boostと、boost-python\"> &gt; boostと、boost-python</span></a>boostと、boost-python</h1>\n<p data-sourcepos=\"63:1-63:70\">boostは、1.55.0を使用しないとcaffeがビルドできない。</p>\n<div class=\"code-block\" data-sourcepos=\"65:1-68:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">cd</span> /usr/local\ngit checkout a252214 /usr/local/Library/Formula/boost.rb\n</code></pre></div>\n</div>\n<p data-sourcepos=\"70:1-70:85\">boost-pythonのformulaを編集して、boost1.55を使用するよう変更する。</p>\n<div class=\"code-block\" data-sourcepos=\"72:1-78:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew edit boost-python\nclass BoostPython &lt; Formula\nhomepage <span class=\"s2\">\"http://www.boost.org\"</span>\n<span class=\"nt\">--</span><span class=\"o\">&gt;</span> url <span class=\"s1\">'https://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2'</span>\n<span class=\"nt\">--</span><span class=\"o\">&gt;</span> sha1 <span class=\"s1\">'cef9a0cc7084b1d639e06cd3bc34e4251524c840'</span>\n</code></pre></div>\n</div>\n<p data-sourcepos=\"80:1-80:27\">最後にインストール</p>\n<div class=\"code-block\" data-sourcepos=\"82:1-84:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew <span class=\"nb\">install</span> <span class=\"nt\">--build-from-source</span> <span class=\"nt\">--fresh</span> <span class=\"nt\">-vd</span> boost boost-python\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"87:1-87:27\" id=\"5-0-0\" name=\"5-0-0\">\n<a class=\"anchor\" id=\"CUDAのインストール\" name=\"CUDA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" href=\"#CUDA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" data-position=\"5-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"CUDAのインストール\"> &gt; CUDAのインストール</span></a>CUDAのインストール</h1>\n<h2 data-sourcepos=\"89:1-89:72\" id=\"5-1-0\" name=\"5-1-0\">\n<a class=\"anchor\" id=\"設定→省電力の設定を変更して常にGPUを有効にする\" name=\"%E8%A8%AD%E5%AE%9A%E2%86%92%E7%9C%81%E9%9B%BB%E5%8A%9B%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E5%B8%B8%E3%81%ABGPU%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B\" href=\"#%E8%A8%AD%E5%AE%9A%E2%86%92%E7%9C%81%E9%9B%BB%E5%8A%9B%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E5%B8%B8%E3%81%ABGPU%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B\" data-position=\"5-1-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"設定→省電力の設定を変更して常にGPUを有効にする\"> &gt; 設定→省電力の設定を変更して常にGPUを有効にする</span></a>設定→省電力の設定を変更して常にGPUを有効にする</h2>\n<a href=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/4e845a7f-4794-4ff2-924c-8b9ebac4ab8e.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img width=\"668\" alt=\"Blank_Skitch_Document-1.png (99.1 kB)\" src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/4e845a7f-4794-4ff2-924c-8b9ebac4ab8e.png\"></a>\n<div class=\"code-block\" data-sourcepos=\"93:1-95:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew cask <span class=\"nb\">install </span>cuda\n</code></pre></div>\n</div>\n<h2 data-sourcepos=\"97:1-97:51\" id=\"5-2-0\" name=\"5-2-0\">\n<a class=\"anchor\" id=\"カーネルエクステンションのロード\" name=\"%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%89\" href=\"#%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%89\" data-position=\"5-2-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"カーネルエクステンションのロード\"> &gt; カーネルエクステンションのロード</span></a>カーネルエクステンションのロード</h2>\n<div class=\"code-block\" data-sourcepos=\"99:1-101:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">sudo </span>kextload /System/Library/Extensions/CUDA.kext\n</code></pre></div>\n</div>\n<h2 data-sourcepos=\"103:1-103:62\" id=\"5-3-0\" name=\"5-3-0\">\n<a class=\"anchor\" id=\"devieQueryでCUDAデバイスが認識しているか確認\" name=\"devieQuery%E3%81%A7CUDA%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%8C%E8%AA%8D%E8%AD%98%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D\" href=\"#devieQuery%E3%81%A7CUDA%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%8C%E8%AA%8D%E8%AD%98%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D\" data-position=\"5-3-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"devieQueryでCUDAデバイスが認識しているか確認\"> &gt; devieQueryでCUDAデバイスが認識しているか確認</span></a>devieQueryでCUDAデバイスが認識しているか確認</h2>\n<div class=\"code-block\" data-sourcepos=\"105:1-109:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">cd</span> /Developer/NVIDIA/CUDA-7.0/samples/1_Utilities/deviceQuery\nmake\n./deviceQuery\n</code></pre></div>\n</div>\n<p data-sourcepos=\"111:1-111:41\">下記のように認識していればOK</p>\n<div class=\"code-block\" data-sourcepos=\"113:1-156:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>./deviceQuery Starting...\n\n CUDA Device Query <span class=\"o\">(</span>Runtime API<span class=\"o\">)</span> version <span class=\"o\">(</span>CUDART static linking<span class=\"o\">)</span>\n\nDetected 1 CUDA Capable device<span class=\"o\">(</span>s<span class=\"o\">)</span>\n\nDevice 0: <span class=\"s2\">\"GeForce GT 750M\"</span>\n  CUDA Driver Version / Runtime Version          7.0 / 7.0\n  CUDA Capability Major/Minor version number:    3.0\n  Total amount of global memory:                 2048 MBytes <span class=\"o\">(</span>2147024896 bytes<span class=\"o\">)</span>\n  <span class=\"o\">(</span> 2<span class=\"o\">)</span> Multiprocessors, <span class=\"o\">(</span>192<span class=\"o\">)</span> CUDA Cores/MP:     384 CUDA Cores\n  GPU Max Clock rate:                            926 MHz <span class=\"o\">(</span>0.93 GHz<span class=\"o\">)</span>\n  Memory Clock rate:                             2508 Mhz\n  Memory Bus Width:                              128-bit\n  L2 Cache Size:                                 262144 bytes\n  Maximum Texture Dimension Size <span class=\"o\">(</span>x,y,z<span class=\"o\">)</span>         <span class=\"nv\">1D</span><span class=\"o\">=(</span>65536<span class=\"o\">)</span>, <span class=\"nv\">2D</span><span class=\"o\">=(</span>65536, 65536<span class=\"o\">)</span>, <span class=\"nv\">3D</span><span class=\"o\">=(</span>4096, 4096, 4096<span class=\"o\">)</span>\n  Maximum Layered 1D Texture Size, <span class=\"o\">(</span>num<span class=\"o\">)</span> layers  <span class=\"nv\">1D</span><span class=\"o\">=(</span>16384<span class=\"o\">)</span>, 2048 layers\n  Maximum Layered 2D Texture Size, <span class=\"o\">(</span>num<span class=\"o\">)</span> layers  <span class=\"nv\">2D</span><span class=\"o\">=(</span>16384, 16384<span class=\"o\">)</span>, 2048 layers\n  Total amount of constant memory:               65536 bytes\n  Total amount of shared memory per block:       49152 bytes\n  Total number of registers available per block: 65536\n  Warp size:                                     32\n  Maximum number of threads per multiprocessor:  2048\n  Maximum number of threads per block:           1024\n  Max dimension size of a thread block <span class=\"o\">(</span>x,y,z<span class=\"o\">)</span>: <span class=\"o\">(</span>1024, 1024, 64<span class=\"o\">)</span>\n  Max dimension size of a grid size    <span class=\"o\">(</span>x,y,z<span class=\"o\">)</span>: <span class=\"o\">(</span>2147483647, 65535, 65535<span class=\"o\">)</span>\n  Maximum memory pitch:                          2147483647 bytes\n  Texture alignment:                             512 bytes\n  Concurrent copy and kernel execution:          Yes with 1 copy engine<span class=\"o\">(</span>s<span class=\"o\">)</span>\n  Run <span class=\"nb\">time </span>limit on kernels:                     Yes\n  Integrated GPU sharing Host Memory:            No\n  Support host page-locked memory mapping:       Yes\n  Alignment requirement <span class=\"k\">for </span>Surfaces:            Yes\n  Device has ECC support:                        Disabled\n  Device supports Unified Addressing <span class=\"o\">(</span>UVA<span class=\"o\">)</span>:      Yes\n  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0\n  Compute Mode:\n     &lt; Default <span class=\"o\">(</span>multiple host threads can use ::cudaSetDevice<span class=\"o\">()</span> with device simultaneously<span class=\"o\">)</span> <span class=\"o\">&gt;</span>\n\ndeviceQuery, CUDA Driver <span class=\"o\">=</span> CUDART, CUDA Driver Version <span class=\"o\">=</span> 7.0, CUDA Runtime Version <span class=\"o\">=</span> 7.0, NumDevs <span class=\"o\">=</span> 1, Device0 <span class=\"o\">=</span> GeForce GT 750M\nResult <span class=\"o\">=</span> PASS\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"158:1-158:31\" id=\"6-0-0\" name=\"6-0-0\">\n<a class=\"anchor\" id=\"dylibライブラリの指定\" name=\"dylib%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E6%8C%87%E5%AE%9A\" href=\"#dylib%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E6%8C%87%E5%AE%9A\" data-position=\"6-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"dylibライブラリの指定\"> &gt; dylibライブラリの指定</span></a>dylibライブラリの指定</h1>\n<div class=\"code-block\" data-sourcepos=\"160:1-162:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">export </span><span class=\"nv\">DYLD_FALLBACK_LIBRARY_PATH</span><span class=\"o\">=</span>/usr/local/cuda/lib:/Users/reoring/.pyenv/versions/anaconda-2.1.0/lib:/usr/local/lib\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"164:1-164:19\" id=\"7-0-0\" name=\"7-0-0\">\n<a class=\"anchor\" id=\"Caffeのビルド\" name=\"Caffe%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89\" href=\"#Caffe%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89\" data-position=\"7-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"Caffeのビルド\"> &gt; Caffeのビルド</span></a>Caffeのビルド</h1>\n<h2 data-sourcepos=\"166:1-166:27\" id=\"7-1-0\" name=\"7-1-0\">\n<a class=\"anchor\" id=\"ソースコード取得\" name=\"%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E5%8F%96%E5%BE%97\" href=\"#%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E5%8F%96%E5%BE%97\" data-position=\"7-1-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"ソースコード取得\"> &gt; ソースコード取得</span></a>ソースコード取得</h2>\n<div class=\"code-block\" data-sourcepos=\"168:1-171:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>git clone https://github.com/BVLC/caffe.git\n<span class=\"nb\">cd </span>caffe\n</code></pre></div>\n</div>\n<h2 data-sourcepos=\"174:1-174:12\" id=\"7-2-0\" name=\"7-2-0\">\n<a class=\"anchor\" id=\"ビルド\" name=\"%E3%83%93%E3%83%AB%E3%83%89\" href=\"#%E3%83%93%E3%83%AB%E3%83%89\" data-position=\"7-2-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"ビルド\"> &gt; ビルド</span></a>ビルド</h2>\n<div class=\"code-block\" data-sourcepos=\"176:1-179:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">mkdir </span>build\n<span class=\"nb\">cd </span>build\n</code></pre></div>\n</div>\n<p data-sourcepos=\"181:1-181:156\">cmakeでMakefileを生成する。こときに、-DPYTHON_LIBRARYでanacondaのlibpython2.7.dylibを指定しないと、実行時にSegfaultで落ちる。</p>\n<div class=\"code-block\" data-sourcepos=\"183:1-185:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>cmake <span class=\"nt\">-DPYTHON_LIBRARY</span><span class=\"o\">=</span>/Users/reoring/.pyenv/versions/anaconda-2.1.0/lib/libpython2.7.dylib ..\n</code></pre></div>\n</div>\n<p data-sourcepos=\"187:1-187:55\">cmakeの出力が下記のようになっていればOK</p>\n<div class=\"code-block\" data-sourcepos=\"190:1-260:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nt\">--</span> Boost version: 1.55.0\n<span class=\"nt\">--</span> Found the following Boost libraries:\n<span class=\"nt\">--</span>   system\n<span class=\"nt\">--</span>   thread\n<span class=\"nt\">--</span> Found gflags  <span class=\"o\">(</span>include: /usr/local/include, library: /usr/local/lib/libgflags.dylib<span class=\"o\">)</span>\n<span class=\"nt\">--</span> Found glog    <span class=\"o\">(</span>include: /usr/local/include, library: /usr/local/lib/libglog.dylib<span class=\"o\">)</span>\n<span class=\"nt\">--</span> Found PROTOBUF Compiler: /usr/local/bin/protoc\n<span class=\"nt\">--</span> Found lmdb    <span class=\"o\">(</span>include: /usr/local/include, library: /usr/local/lib/liblmdb.dylib<span class=\"o\">)</span>\n<span class=\"nt\">--</span> Found LevelDB <span class=\"o\">(</span>include: /usr/local/include, library: /usr/local/lib/libleveldb.dylib<span class=\"o\">)</span>\n<span class=\"nt\">--</span> Found Snappy  <span class=\"o\">(</span>include: /usr/local/include, library: /usr/local/lib/libsnappy.dylib<span class=\"o\">)</span>\n<span class=\"nt\">--</span> CUDA detected: 7.0\n<span class=\"nt\">--</span> Added CUDA NVCC flags <span class=\"k\">for</span>: sm_30\n<span class=\"nt\">--</span> Cuda + Boost 1.55: Applying noinline work around\n<span class=\"nt\">--</span> OpenCV found <span class=\"o\">(</span>/usr/local/share/OpenCV<span class=\"o\">)</span>\n<span class=\"nt\">--</span> Found vecLib as part of Accelerate.framework\n<span class=\"nt\">--</span> NumPy ver. 1.9.0 found <span class=\"o\">(</span>include: /Users/reoring/.pyenv/versions/anaconda-2.1.0/lib/python2.7/site-packages/numpy/core/include<span class=\"o\">)</span>\n<span class=\"nt\">--</span> Boost version: 1.55.0\n<span class=\"nt\">--</span> Found the following Boost libraries:\n<span class=\"nt\">--</span>   python\n<span class=\"nt\">--</span> Could NOT find Doxygen <span class=\"o\">(</span>missing:  DOXYGEN_EXECUTABLE<span class=\"o\">)</span>\n<span class=\"nt\">--</span>\n<span class=\"nt\">--</span> <span class=\"k\">*******************</span> Caffe Configuration Summary <span class=\"k\">*******************</span>\n<span class=\"nt\">--</span> General:\n<span class=\"nt\">--</span>   Version           :   &lt;TODO&gt; <span class=\"o\">(</span>Caffe doesn<span class=\"s1\">'t declare its version in headers)\n--   Git               :   rc2-362-g7f70854\n--   System            :   Darwin\n--   C++ compiler      :   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++\n--   Release CXX flags :   -O3 -DNDEBUG -fPIC -Wall -Wno-sign-compare -Wno-uninitialized\n--   Debug CXX flags   :   -g -fPIC -Wall -Wno-sign-compare -Wno-uninitialized\n--   Build type        :   Release\n--\n--   BUILD_SHARED_LIBS :   ON\n--   BUILD_python      :   ON\n--   BUILD_matlab      :   OFF\n--   BUILD_docs        :   ON\n--   CPU_ONLY          :   OFF\n--\n-- Dependencies:\n--   BLAS              :   Yes (vecLib)\n--   Boost             :   Yes (ver. 1.55)\n--   glog              :   Yes\n--   gflags            :   Yes\n--   protobuf          :   Yes (ver. 2.6.1)\n--   lmdb              :   Yes (ver. 0.9.14)\n--   Snappy            :   Yes (ver. 1.1.3)\n--   LevelDB           :   Yes (ver. 1.18)\n--   OpenCV            :   Yes (ver. 2.4.11)\n--   CUDA              :   Yes (ver. 7.0)\n--\n-- NVIDIA CUDA:\n--   Target GPU(s)     :   Auto\n--   GPU arch(s)       :   sm_30\n--   cuDNN             :   Not found\n--\n-- Python:\n--   Interpreter       :   /Users/reoring/.pyenv/shims/python2.7 (ver. 2.7.10)\n--   Libraries         :   /Users/reoring/.pyenv/versions/anaconda-2.1.0/lib/libpython2.7.dylib (ver 2.7.6)\n--   NumPy             :   /Users/reoring/.pyenv/versions/anaconda-2.1.0/lib/python2.7/site-packages/numpy/core/include (ver 1.9.0)\n--\n-- Documentaion:\n--   Doxygen           :   No\n--   config_file       :\n--\n-- Install:\n--   Install path      :   /Users/reoring/git/github/caffe/build/install\n--\n-- Configuring done\n-- Generating done\n-- Build files have been written to: /Users/reoring/git/github/caffe/build\n</span></code></pre></div>\n</div>\n<h1 data-sourcepos=\"262:1-262:52\" id=\"8-0-0\" name=\"8-0-0\">\n<a class=\"anchor\" id=\"MNISTを使って学習のテストをしてみる\" name=\"MNIST%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%AD%A6%E7%BF%92%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" href=\"#MNIST%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%AD%A6%E7%BF%92%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" data-position=\"8-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"MNISTを使って学習のテストをしてみる\"> &gt; MNISTを使って学習のテストをしてみる</span></a>MNISTを使って学習のテストをしてみる</h1>\n<div class=\"code-block\" data-sourcepos=\"264:1-269:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nb\">cd</span> /path/to/caffe\n./data/mnist/get_mnist.sh\n./examples/mnist/create_mnist.sh\n./examples/mnist/train_lenet.sh\n</code></pre></div>\n</div>\n<p data-sourcepos=\"271:1-271:93\">GPUが使われていれば先頭に下記のようなメッセージがでるはずです。</p>\n<div class=\"code-block\" data-sourcepos=\"273:1-275:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>I0731 19:32:39.669621 2005259008 caffe.cpp:113] Use GPU with device ID 0\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"278:1-278:11\" id=\"9-0-0\" name=\"9-0-0\">\n<a class=\"anchor\" id=\"エラー\" name=\"%E3%82%A8%E3%83%A9%E3%83%BC\" href=\"#%E3%82%A8%E3%83%A9%E3%83%BC\" data-position=\"9-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"エラー\"> &gt; エラー</span></a>エラー</h1>\n<h2 data-sourcepos=\"280:1-280:53\" id=\"9-1-0\" name=\"9-1-0\">\n<a class=\"anchor\" id=\"Python error: PyThreadState_Get: no current thread\" name=\"Python%20error:%20PyThreadState_Get:%20no%20current%20thread\" href=\"#Python%20error:%20PyThreadState_Get:%20no%20current%20thread\" data-position=\"9-1-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"Python error__colon__ PyThreadState_Get__colon__ no current thread\"> &gt; Python error__colon__ PyThreadState_Get__colon__ no current thread</span></a>Python error: PyThreadState_Get: no current thread</h2>\n<p data-sourcepos=\"282:1-282:149\">boost-pythonの1.55.0を、1.58.0にして再インストールすると治りますが、caffeのビルドには失敗するかもしれません。</p>\n<div class=\"code-block\" data-sourcepos=\"284:1-287:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew uninstall boost-python\nbrew <span class=\"nb\">install</span> <span class=\"nt\">--build-from-source</span> <span class=\"nt\">--fresh</span> <span class=\"nt\">-vd</span> boost-python\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"289:1-289:12\" id=\"10-0-0\" name=\"10-0-0\">\n<a class=\"anchor\" id=\"References\" name=\"References\" href=\"#References\" data-position=\"10-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"References\"> &gt; References</span></a>References</h1>\n<ul data-sourcepos=\"291:1-296:115\">\n<li data-sourcepos=\"291:1-291:40\"><a href=\"https://github.com/BVLC/caffe\" target=\"_blank\" rel=\"noopener noreferrer\">Caffe</a></li>\n<li data-sourcepos=\"292:1-292:75\"><a href=\"http://caffe.berkeleyvision.org/installation.html\" target=\"_blank\" rel=\"noopener noreferrer\">Caffe | Installation</a></li>\n<li data-sourcepos=\"293:1-293:135\"><a href=\"http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-mac-os-x/#axzz3hSbMsSVu\" target=\"_blank\" rel=\"noopener noreferrer\">NVIDIA CUDA Getting Started Guide for Mac OS X </a></li>\n<li data-sourcepos=\"294:1-294:144\"><a href=\"http://hoondy.com/2015/04/03/how-to-install-caffe-on-mac-os-x-10-10-for-dummies-like-me/\" target=\"_blank\" rel=\"noopener noreferrer\">How to install Caffe on Mac OS X 10.10 for dummies</a></li>\n<li data-sourcepos=\"295:1-295:130\"><a href=\"http://qiita.com/RyotaKatoh/items/3e9ffe89ee1ab58b8671\" target=\"_blank\" rel=\"noopener noreferrer\">2015/06/07時点caffeをMacOS X 10.10にインストールする手順</a></li>\n<li data-sourcepos=\"296:1-296:115\"><a href=\"http://qiita.com/t-hiroyoshi/items/2bf473fd06c352d97579\" target=\"_blank\" rel=\"noopener noreferrer\">Caffeで手書き数字(MNIST)の認識学習をする</a></li>\n</ul>\n"}},"pageContext":{"id":"DatoCmsPost-5142967-ja","description":"テスト自動化サービスのShouldBeeでは、テスト作業のさらなる省力化のために人工知能を用いた機能を開発しています。今回は、ディープラーニングフレームワークであるCaffeをインストールして使える状態にしていきます。 MacBookPro(Late 2013)は、NVIDIAのGeForce GT 750Mが搭載されているので、CUDAが利用できます。 本記事は2015/7/31時点の段階で一番確実なビルド方法です。 これまでは、libstdc++を使うためのFormulaの変更が必要でしたが、libstdc++問題は現在は発生しないので、Formulaの書き換えは不要になりました。 pye","toc":[{"tag":"h1","depth":1,"href":"#pyenv%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6anaconda%202.1.0%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B","text":"pyenvを使ってanaconda 2.1.0をインストールする","html":"pyenvを使ってanaconda 2.1.0をインストールする"},{"tag":"h2","depth":2,"href":"#anaconda-2.1.0%E3%82%92%E4%BD%BF%E3%81%86%E3%82%88%E3%81%86%E3%81%AB%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B","text":"anaconda-2.1.0を使うように選択する","html":"anaconda-2.1.0を使うように選択する"},{"tag":"h2","depth":2,"href":"#pyenv%E3%82%92%E4%BD%BF%E3%81%86%E3%82%88%E3%81%86%E3%81%ABshell%E3%82%92%E8%A8%AD%E5%AE%9A","text":"pyenvを使うようにshellを設定","html":"pyenvを使うようにshellを設定"},{"tag":"h1","depth":1,"href":"#%E5%90%84%E7%A8%AE%E4%BE%9D%E5%AD%98%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB","text":"各種依存のインストール","html":"各種依存のインストール"},{"tag":"h1","depth":1,"href":"#BLAS%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB","text":"BLASのインストール","html":"BLASのインストール"},{"tag":"h1","depth":1,"href":"#boost%E3%81%A8%E3%80%81boost-python","text":"boostと、boost-python","html":"boostと、boost-python"},{"tag":"h1","depth":1,"href":"#CUDA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB","text":"CUDAのインストール","html":"CUDAのインストール"},{"tag":"h2","depth":2,"href":"#%E8%A8%AD%E5%AE%9A%E2%86%92%E7%9C%81%E9%9B%BB%E5%8A%9B%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E5%B8%B8%E3%81%ABGPU%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B","text":"設定→省電力の設定を変更して常にGPUを有効にする","html":"設定→省電力の設定を変更して常にGPUを有効にする"},{"tag":"h2","depth":2,"href":"#%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%89","text":"カーネルエクステンションのロード","html":"カーネルエクステンションのロード"},{"tag":"h2","depth":2,"href":"#devieQuery%E3%81%A7CUDA%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%8C%E8%AA%8D%E8%AD%98%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D","text":"devieQueryでCUDAデバイスが認識しているか確認","html":"devieQueryでCUDAデバイスが認識しているか確認"},{"tag":"h1","depth":1,"href":"#dylib%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E6%8C%87%E5%AE%9A","text":"dylibライブラリの指定","html":"dylibライブラリの指定"},{"tag":"h1","depth":1,"href":"#Caffe%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89","text":"Caffeのビルド","html":"Caffeのビルド"},{"tag":"h2","depth":2,"href":"#%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E5%8F%96%E5%BE%97","text":"ソースコード取得","html":"ソースコード取得"},{"tag":"h2","depth":2,"href":"#%E3%83%93%E3%83%AB%E3%83%89","text":"ビルド","html":"ビルド"},{"tag":"h1","depth":1,"href":"#MNIST%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%AD%A6%E7%BF%92%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B","text":"MNISTを使って学習のテストをしてみる","html":"MNISTを使って学習のテストをしてみる"},{"tag":"h1","depth":1,"href":"#%E3%82%A8%E3%83%A9%E3%83%BC","text":"エラー","html":"エラー"},{"tag":"h2","depth":2,"href":"#Python%20error:%20PyThreadState_Get:%20no%20current%20thread","text":"Python error: PyThreadState_Get: no current thread","html":"Python error: PyThreadState_Get: no current thread"},{"tag":"h1","depth":1,"href":"#References","text":"References","html":"References"}],"ogpImageUrl":"https://www.datocms-assets.com/29850/1593190022-pastedimage20200627146.png?fm=png&mark64=aHR0cHM6Ly93d3cuZGF0b2Ntcy1hc3NldHMuY29tLzI5ODUwLzE1OTMxNTQ2MzYtdHJhbnNwYXJlbnQtcGl4ZWwucG5nP3c9NDAwJmg9NjQmZml0PWNyb3AmYmxlbmQ2ND1hSFIwY0hNNkx5OTNkM2N1WkdGMGIyTnRjeTFoYzNObGRITXVZMjl0THpJNU9EVXdMekUxT1RFNE16TXhOVFF0TnpNMU9Ea3dMbXB3Wno5dFlYTnJQV1ZzYkdsd2MyVW1abTA5Y0c1bkpuYzlNalUySm1nOU1qVTImYmxlbmQtaD02NCZibGVuZC14PTAmYmxlbmQteT0wJmJsZW5kLW1vZGU9bm9ybWFsJm1hcms2ND1hSFIwY0hNNkx5OWhjM05sZEhNdWFXMW5hWGd1Ym1WMEwzNTBaWGgwUDNSNGRDMWhiR2xuYmoxdGFXUmtiR1VsTWtOc1pXWjBKblI0ZEMxbWIyNTBQWE5oYm5NdGMyVnlhV1lsTWtOaWIyeGtKblI0ZEMxamIyeHZjajB5TWpFNE1UWW1kSGgwTmpROVkyMVdkbU50YkhWYWR5WjBlSFF0YzJsNlpUMHpNQ1pvUFRZMCZtYXJrLXg9NjQmbWFyay1hbGlnbj1taWRkbGUlMkNsZWZ0&mark-align=bottom%2Cleft&mark-x=100&mark-y=496&blend64=aHR0cHM6Ly93d3cuZGF0b2Ntcy1hc3NldHMuY29tLzI5ODUwLzE1OTMxNTQ2MzYtdHJhbnNwYXJlbnQtcGl4ZWwucG5nP3c9MTIwMCZoPTYzMCZmaXQ9Y3JvcCZtYXJrNjQ9YUhSMGNITTZMeTkzZDNjdVpHRjBiMk50Y3kxaGMzTmxkSE11WTI5dEx6STVPRFV3THpFMU9UTXhOVEE1TkRBdFkzSmhablJ6YldGdUxUQXhMbkJ1WncmbWFyay1hbGlnbj10b3AlMkNjZW50ZXImbWFyay13PTI1MCZtYXJrLXk9ODAmYmxlbmQ2ND1hSFIwY0hNNkx5OWhjM05sZEhNdWFXMW5hWGd1Ym1WMEwzNTBaWGgwUDNSNGRDMWhiR2xuYmoxdGFXUmtiR1VsTWtOalpXNTBaWEltZEhoMExXWnZiblE5YzJGdWN5MXpaWEpwWmlVeVEySnZiR1FtZEhoMExYQmhaRDB4TURBbWRIaDBMV052Ykc5eVBUSXlNVGd4TmlaMGVIUTJORDAwTkU5SU5EUkxhalEwVHpnME5FOVlORFJQY0RRMFR6ZzBORTlNTkRSUGVqUTBTM2MwTkV0Rk5EUkxUalEwUjBjME5FZGpTVk5DVGxsWFRrTmlNamx5VlVoS2RreFZNV2haTURsVVYwUkZkMHhxUlhjME5FZHlVakZDVmpRMFMxTTFUREpmTkRSSFNUUTBTMHhSTWtadFdtMVlhbWR3VEdwbk5WQnFaeloyYW1jMGJtcG5XbTVxWjI5ekpuUjRkQzF6YVhwbFBUVTFKbmM5TVRJd01DWm9QVFl6TUEmYmxlbmQtbW9kZT1ub3JtYWw&blend-mode=normal","otherPost":{"type":"author","title":"Reactコンポーネント紹介! 今回は、日付の範囲選択ができる「react-date-range」!","slug":"/posts/41"}}}}