<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
<title>シングスブログ</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/" />
<modified>2016-09-12T06:35:53Z</modified>
<tagline>事業の成長を支えるマーケティングの顧問サービス / ウェブサイト内製・自主運営</tagline>
<id>tag:blog.thingslabo.com,2016://1</id>
<generator url="http://www.movabletype.org/" version="5.2.10">Movable Type</generator>
<copyright>Copyright (c) 2016, thingsym</copyright>

<entry>
<title>ウェブエンジニア、プログラマのためのプログラミング開発環境「VAP」をリリースしました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000421.html" />
<modified>2016-09-12T06:35:53Z</modified>
<issued>2016-06-22T07:26:56Z</issued>
<id>tag:blog.thingslabo.com,2016://1.421</id>
<created>2016-06-22T07:26:56Z</created>
<summary type="text/plain">プログラミング開発環境 Vagrant Ansible Programming languages (VAP) を作りました。 VAP は日常的にプログラミングするウェブエンジニア、プログラマのための Ansible playbooks で...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>プログラミング開発環境 <strong>Vagrant Ansible Programming languages (VAP)</strong > を作りました。</p>
<p>VAP は日常的にプログラミングするウェブエンジニア、プログラマのための Ansible playbooks です。Vagrant でプログラミング開発環境を立ち上げて、プログラミングをしてプロダクトを作ったり、ソフトウェアの技術課題の検証やバグ・不具合の検証ができます。</p>
<p>エンジニアにとって開発環境の構築に時間がかかる手間を減らしていきたい、社内で開発環境を整えるツールとして活用できます。</p>
<p>VAP の特長は、3つ。</p>
<ul>
<li>様々な組み合わせのサーバとデータベース構成で構築</li>
<li>Ruby, PHP, Perl, Python などプログラミング言語をバージョンを指定してインストール</li>
<li>Develop &amp; Deploy ツールのインストール</li>
</ul>
<p>以前 2014年12月に WordPressサイトを開発する <a href="http://blog.thingslabo.com/archives/000402.html">WordPress開発環境 Vagrant Ansible WordPress (VAW)</a> を作ってリリースしました。VAW はアップデートを続け、いろいろなノウハウを蓄積してきました。VAP は、そのコンセプトをベースに開発環境を素早く立ち上げてアイデアを試して、終わればその開発環境を捨てるという試行錯誤ができる環境を目指してみました。</p>
<p>今後もサポートするプログラミング言語を増やしたり、Develop &amp; Deploy ツールの充実をしていきたいと思います。</p>
<p>以下、<a href="https://github.com/thingsym/vap">GitHub</a> にある VAP の readme-ja.md です。(updated: version 0.1.2 - 2016.09.12)</p>]]>
<![CDATA[<hr>

<h1 id="vap-vagrant-ansible-programming-languages-">VAP (Vagrant Ansible Programming languages)</h1>
<p><strong>VAP (Vagrant Ansible Programming languages)</strong> is Ansible playbooks for website developer and programmer.</p>
<h2 id="features">Features</h2>
<h3 id="1-build-server-and-database-environment">1. Build Server and Database environment</h3>
<p><strong>VAP</strong> will build server from <strong>Apache</strong> or <strong>nginx</strong>, and build database from <strong>MySQL</strong>, <strong>MariaDB</strong> or <strong>Percona MySQL</strong>.</p>
<p>Server nginx is a FastCGI configuration as a reverse proxy. And building a PHP execution environment from <strong>PHP-FPM</strong> (FastCGI Process Manager).</p>
<p>By default, the server and the databese is installed in the default settings. Also you can edit configuration files.</p>
<h3 id="2-build-programming-environment">2. Build Programming environment</h3>
<p><strong>VAP</strong> will build a Programming languages that specifies the version.</p>
<ul>
<li><a href="https://www.ruby-lang.org/">Ruby</a></li>
<li><a href="https://www.python.org/">Python</a></li>
<li><a href="https://secure.php.net">PHP</a></li>
<li><a href="https://www.perl.org/">Perl</a></li>
<li><a href="http://nodejs.org">Node.js</a></li>
<li><a href="https://golang.org/">Go</a></li>
<li><a href="http://openjdk.java.net/">Java (OpenJDK)</a></li>
<li><a href="http://www.scala-lang.org/">Scala</a></li>
</ul>
<h3 id="3-develop-deploy-tools">3. Develop &amp; Deploy Tools</h3>
<p>You can install the develop tools or the deploy tools by usage. See Specification for list of installed tools.</p>
<h2 id="requirements">Requirements</h2>
<ul>
<li><a href="https://www.virtualbox.org">Virtualbox</a></li>
<li><a href="https://www.vagrantup.com">Vagrant</a> &gt;= 1.8.4</li>
<li><a href="https://www.ansible.com">Ansible</a> &gt;= 2.1.0.0</li>
<li><a href="https://github.com/cogitatio/vagrant-hostsupdater">vagrant-hostsupdater</a> optional (Vagrant plugin)</li>
<li><a href="http://fgrehm.viewdocs.io/vagrant-cachier">vagrant-cachier</a> optional (Vagrant plugin)</li>
<li><a href="https://github.com/dotless-de/vagrant-vbguest">vagrant-vbguest</a> optional (Vagrant plugin)</li>
<li><a href="https://github.com/jvoorhis/vagrant-serverspec">vagrant-serverspec</a> optional (Vagrant plugin)</li>
</ul>
<h2 id="usage">Usage</h2>
<h3 id="1-install-virtualbox">1. Install Virtualbox</h3>
<p>Download the VirtualBox form <a href="https://www.virtualbox.org">www.virtualbox.org</a> and install.</p>
<h3 id="2-install-vagrant">2. Install Vagrant</h3>
<p>Download the Vagrant form <a href="https://www.vagrantup.com">www.vagrantup.com</a> and install.</p>
<h3 id="3-install-vagrant-plugin">3. Install Vagrant plugin</h3>
<p>Install the Vagrant plugin on the terminal as necessary.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-hostsupdater</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-cachier</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-vbguest</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-serverspec</span></span></span></div></pre><h3 id="4-download-ansible-playbooks-of-vap">4. Download Ansible playbooks of VAP</h3>
<p>Download a Vagrantfile and Ansible playbooks from the following link.</p>
<p><a href="https://github.com/thingsym/vap/archive/master.zip">Download Zip format file</a></p>
<h3 id="5-launch-a-virtual-environment">5. Launch a virtual environment</h3>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>cd&nbsp;vap-x.x.x</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;up</span></span></span></div></pre><p>If you don&#39;t have a Box at first, begins from the download of Box. After provisioning, you can launch a Programming environment.</p>
<h3 id="6-access-to-the-website">6. Access to the website</h3>
<p>Access to the website <strong><a href="http://vap.local/">http://vap.local/</a></strong>, if the server is running.</p>
<h2 id="default-configuration-variables">Default configuration Variables</h2>
<p>ID and password for the initial setting is as follows. Can be set in the provisioning configuration file.</p>
<h4 id="database">Database</h4>
<ul>
<li>ROOT PASSWORD <code style="font-family: Source Code Pro;">admin</code></li>
<li>HOST <code style="font-family: Source Code Pro;">localhost</code></li>
</ul>
<h2 id="customize-options">Customize Options</h2>
<p>You can build a variety of environment that edit the configuration file of VAP.</p>
<p>There are two configuration files you can customize.</p>
<p>Run <code style="font-family: Source Code Pro;">vagrant up</code> or <code style="font-family: Source Code Pro;">vagrant provision</code>, after editing the configuration file.</p>
<h3 id="vagrant-configuration-file-ruby-">Vagrant configuration file (Ruby)</h3>
<p>Vagrant configuration file is <strong>Vagrantfile</strong>.</p>
<p>Vagrantfile will set the vagrant Box, private IP address, hostname and the document root.</p>
<p>If you launch multiple environments, change the name of the directory. Should rewrite <code style="font-family: Source Code Pro;">vm_ip</code> and<code style="font-family: Source Code Pro;">vm_hostname</code>. Note not to overlap with other environments.</p>
<p>You can accesse from a terminal in the same LAN to use the public network to Vagrant virtual environment. To use public networks, set IP address for bridged connection to <code style="font-family: Source Code Pro;">public_ip</code>. In that case, recommended that configure the same IP address to <code style="font-family: Source Code Pro;">vm_hostname</code>.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Vagrant&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_box&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;hansode/centos-7.1.1503-x86_64&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_ip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;192.168.59.63&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_box_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;&gt;=&nbsp;0&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_hostname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;vap.local&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_document_root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;/var/www/html&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>public_ip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vbguest_auto_update&nbsp;=&nbsp;false</span></span></span></div></pre><ul>
<li><code style="font-family: Source Code Pro;">vm_box</code> (required) name of Vagrant Box (default: <code style="font-family: Source Code Pro;">hansode/centos-7.1.1503-x86_64</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_box_version</code> (required) version of Vagrant Box (default: <code style="font-family: Source Code Pro;">&gt;= 0</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_ip</code> (required) private IP address (default: <code style="font-family: Source Code Pro;">192.168.59.63</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_hostname</code> (required) hostname (default: <code style="font-family: Source Code Pro;">vap.local</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_document_root</code> (required) document root path (default: <code style="font-family: Source Code Pro;">/var/www/html</code>)<ul>
<li>auto create <code style="font-family: Source Code Pro;">html</code> directory and synchronized</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">public_ip</code> IP address of bridged connection (default: ``)</li>
<li><code style="font-family: Source Code Pro;">vbguest_auto_update</code> update VirtualBox Guest Additions (default: false / value: true | false)</li>
</ul>
<h3 id="provisioning-configuration-file-yaml-">Provisioning configuration file (YAML)</h3>
<p>Provisioning configuration file is <strong>group_vars/all.yml</strong>.</p>
<p>In YAML format, you can set server, database and Programming environment. And can enable the develop and deploy tools.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Server&nbsp;&amp;&nbsp;Database&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;none&#39;&nbsp;&nbsp;&nbsp;#&nbsp;none|apache|nginx</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>fastcgi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;none&#39;&nbsp;&nbsp;&nbsp;#&nbsp;none|php-fpm</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;none&#39;&nbsp;&nbsp;&nbsp;#&nbsp;none|mysql|mariadb|percona</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_root_password&nbsp;&nbsp;&nbsp;:&nbsp;&#39;admin&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Programming&nbsp;languages&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;If&nbsp;the&nbsp;version&nbsp;is&nbsp;set&nbsp;to&nbsp;0,&nbsp;the&nbsp;programming&nbsp;language&nbsp;does&nbsp;not&nbsp;install</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>ruby_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;2.3.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;2.3.1</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>python_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;3.5.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;3.5.1</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>php_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;7.0.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;7.0.7</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>perl_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;5.25.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;5.25.1</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>node_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;4.5.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;4.5.0</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>go_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;1.6.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;1.6.3</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>java_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;1.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;1.8</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>scala_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;2.11.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;2.11.8&nbsp;(require&nbsp;java)</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Develop&nbsp;&amp;&nbsp;Deploy&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>ssl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>phpmyadmin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;That&#39;s&nbsp;all,&nbsp;stop&nbsp;setting.&nbsp;Let&#39;s&nbsp;vagrant&nbsp;up!!&nbsp;##</span></span></span></div></pre><h4 id="server-database-settings">Server &amp; Database Settings</h4>
<ul>
<li><code style="font-family: Source Code Pro;">server</code> (required) name of web server (default: <code style="font-family: Source Code Pro;">none</code> / value: <code style="font-family: Source Code Pro;">none</code> | <code style="font-family: Source Code Pro;">apache</code> | <code style="font-family: Source Code Pro;">nginx</code>)</li>
<li><code style="font-family: Source Code Pro;">fastcgi</code> name of fastCGI (default: <code style="font-family: Source Code Pro;">none</code> / value: <code style="font-family: Source Code Pro;">none</code> | <code style="font-family: Source Code Pro;">php-fpm</code>)<ul>
<li><code style="font-family: Source Code Pro;">fastcgi</code> is possible only <code style="font-family: Source Code Pro;">server &#39;nginx&#39;</code></li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">database</code> (required) name of databese (default: <code style="font-family: Source Code Pro;">none</code> / value: <code style="font-family: Source Code Pro;">none</code> | <code style="font-family: Source Code Pro;">mysql</code> | <code style="font-family: Source Code Pro;">mariadb</code> | <code style="font-family: Source Code Pro;">percona</code>)</li>
</ul>
<h4 id="programming-languages-settings">Programming languages Settings</h4>
<ul>
<li><code style="font-family: Source Code Pro;">ruby_version</code> version of Ruby (default: <code style="font-family: Source Code Pro;">2.3.1</code>)</li>
<li><code style="font-family: Source Code Pro;">python_version</code> version of Python (default: <code style="font-family: Source Code Pro;">3.5.1</code>)</li>
<li><code style="font-family: Source Code Pro;">php_version</code> version of PHP (default: <code style="font-family: Source Code Pro;">7.0.7</code>)</li>
<li><code style="font-family: Source Code Pro;">perl_version</code> version of Perl (default: <code style="font-family: Source Code Pro;">5.25.1</code>)</li>
<li><code style="font-family: Source Code Pro;">node_version</code> version of Node.js (default: <code style="font-family: Source Code Pro;">4.5.0</code>)</li>
<li><code style="font-family: Source Code Pro;">go_version</code> version of Go (default: <code style="font-family: Source Code Pro;">1.6.3</code>)</li>
<li><code style="font-family: Source Code Pro;">java_version</code> version of Java (default: <code style="font-family: Source Code Pro;">1.8</code>)</li>
<li><code style="font-family: Source Code Pro;">scala_version</code> version of Scala (default: <code style="font-family: Source Code Pro;">2.11.8</code>) require Java</li>
</ul>
<p>If the version is set to 0, the programming language does not installation</p>
<h4 id="develop-deploy-settings">Develop &amp; Deploy Settings</h4>
<ul>
<li><code style="font-family: Source Code Pro;">ssl</code> activate ssl (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
<li><code style="font-family: Source Code Pro;">phpmyadmin</code> activate phpMyAdmin (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
</ul>
<h2 id="directory-layout">Directory Layout</h2>
<p>Directory structure of VAP is as follows.</p>
<p>This directory synchronize to the guest OS side <code style="font-family: Source Code Pro;">/vagrant</code>. <code style="font-family: Source Code Pro;">html</code> creates automatically and synchronize to <code style="font-family: Source Code Pro;">vm_document_root</code>.</p>
<h3 id="full-layout">Full Layout</h3>
<ul>
<li>command (stores shell script)</li>
<li>config (stores Custom Config)</li>
<li>config.sample (sample Custom Config)</li>
<li>group_vars (stores the provisioning configuration file of Ansible)<ul>
<li>all.yml (provisioning configuration file)</li>
</ul>
</li>
<li>hosts<ul>
<li>local (inventory file)</li>
</ul>
</li>
<li>html (synchronize to the Document Root. create automatically at <code style="font-family: Source Code Pro;">vagrant up</code>, if it does not exist.)</li>
<li>Rakefile (Rakefile of ServerSpec)</li>
<li>readme-ja.md</li>
<li>readme.md</li>
<li>roles (stores Ansible playbook of each role)</li>
<li>site.yml (Ansible playbook core file)</li>
<li>spec (stores ServerSpec spec file)<ul>
<li>localhost</li>
<li>spec_helper.rb</li>
</ul>
</li>
<li>Vagrantfile (Vagrant configuration file)</li>
</ul>
<h3 id="minimum-layout">Minimum Layout</h3>
<p>VAP will be built in the directory structure of the following minimum unit.</p>
<ul>
<li>group_vars (stores the provisioning configuration file of Ansible)<ul>
<li>all.yml (provisioning configuration file)</li>
</ul>
</li>
<li>html (synchronize to the Document Root. create automatically at <code style="font-family: Source Code Pro;">vagrant up</code>, if it does not exist.)</li>
<li>roles (stores Ansible playbook of each role)</li>
<li>site.yml (Ansible playbook core file)</li>
<li>Vagrantfile (Vagrant configuration file)</li>
</ul>
<h2 id="vagrant-box">Vagrant Box</h2>
<p>Vagrant Box is probably compatible with centos-7.x x86_64 and centos-6.x x86_64.</p>
<h2 id="specification">Specification</h2>
<h3 id="server-selectable-">Server (Selectable)</h3>
<ul>
<li><a href="http://httpd.apache.org">Apache</a></li>
<li><a href="http://nginx.org">nginx</a></li>
</ul>
<h3 id="fastcgi-selectable-only-nginx-">FastCGI (Selectable, Only nginx)</h3>
<ul>
<li><a href="http://php-fpm.org">PHP-FPM</a> (FastCGI Process Manager)</li>
</ul>
<h3 id="database-selectable-">Database (Selectable)</h3>
<ul>
<li><a href="http://www.mysql.com">MySQL</a></li>
<li><a href="https://mariadb.org">MariaDB</a></li>
<li><a href="http://www.percona.com/software/percona-server">Percona MySQL</a></li>
</ul>
<h3 id="programming-languages">Programming languages</h3>
<ul>
<li><a href="https://www.ruby-lang.org/">Ruby</a> via <a href="https://github.com/rbenv/rbenv">rbenv</a></li>
<li><a href="https://www.python.org/">Python</a> via <a href="https://github.com/yyuu/pyenv">pyenv</a></li>
<li><a href="https://secure.php.net">PHP</a> via <a href="https://github.com/madumlao/phpenv">phpenv</a></li>
<li><a href="https://www.perl.org/">Perl</a> via <a href="https://github.com/tokuhirom/plenv">plenv</a></li>
<li><a href="http://nodejs.org">Node.js</a> via <a href="https://github.com/nodenv/nodenv">nodenv</a></li>
<li><a href="https://golang.org/">Go</a> via <a href="https://github.com/wfarr/goenv">goenv</a></li>
<li><a href="http://openjdk.java.net/">Java (OpenJDK)</a> via <a href="http://www.jenv.be/">jenv</a></li>
<li><a href="http://www.scala-lang.org/">Scala</a>  via <a href="https://github.com/mazgi/scalaenv">scalaenv</a></li>
</ul>
<h3 id="develop-deploy-tools-activatable-">Develop &amp; Deploy Tools (Activatable)</h3>
<ul>
<li><a href="https://www.openssl.org">OpenSSL</a></li>
<li><a href="https://www.phpmyadmin.net">phpMyAdmin</a></li>
</ul>
<h3 id="pre-installing">Pre-installing</h3>
<ul>
<li><a href="http://git-scm.com">Git</a></li>
<li><a href="https://github.com/simonwhitaker/gibo">gibo</a></li>
</ul>
<h3 id="helper-command">Helper command</h3>
<ul>
<li>after_provision.sh</li>
<li>before_provision.sh</li>
<li>rbenv.sh</li>
<li>pyenv.sh</li>
<li>phpenv.sh</li>
<li>plenv.sh</li>
</ul>
<h2 id="helper-command">Helper command</h2>
<p><strong>VAP</strong> offers a useful scripts. Just run the script on a terminal. Multiple versions installation of Python, Ruby, PHP and Perl, you can switch the execution environment.</p>
<h3 id="pyenv-sh">pyenv.sh</h3>
<p><code style="font-family: Source Code Pro;">pyenv.sh</code> will prepare the specified version of Python execution environment.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/pyenv.sh&nbsp;3.5.1</span></span></span></div></pre><h3 id="rbenv-sh">rbenv.sh</h3>
<p><code style="font-family: Source Code Pro;">rbenv.sh</code> will prepare the specified version of Ruby execution environment.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/rbenv.sh&nbsp;2.2.0</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/rbenv.sh&nbsp;mruby-1.1.0</span></span></span></div></pre><h3 id="phpenv-sh">phpenv.sh</h3>
<p><code style="font-family: Source Code Pro;">phpenv.sh</code> will prepare the specified version of PHP execution environment. You can install the specified version of PHP. Switching the PHP version. And then restart Apache or PHP-FPM by switching the server configuration environment.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/phpenv.sh&nbsp;5.6.21</span></span></span></div></pre><h3 id="plenv-sh">plenv.sh</h3>
<p><code style="font-family: Source Code Pro;">plenv.sh</code> will prepare the specified version of Perl execution environment.</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/plenv.sh&nbsp;5.19.11</span></span></span></div></pre><h2 id="custom-config">Custom Config</h2>
<p>When you add a tuning configuration file that you edited in the directory <code style="font-family: Source Code Pro;">config</code>, place it at the time of provisioning.
As follows editable configuration files.</p>
<ul>
<li>default-node-packages.j2</li>
<li>default-ruby-gems.j2</li>
<li>httpd.conf.centos6.j2</li>
<li>httpd.conf.centos7.j2</li>
<li>httpd.www.conf.centos7.j2</li>
<li>my.cnf.j2</li>
<li>nginx.conf.j2</li>
<li>nginx.www.conf.j2</li>
<li>php-build.default_configure_options.j2</li>
<li>php.conf.j2</li>
</ul>
<h2 id="contribute">Contribute</h2>
<p>Small patches and bug reports can be submitted a issue tracker in Github. Forking on Github is another good way. You can send a pull request.</p>
<p>If you would like to contribute, here are some notes and guidlines.</p>
<ul>
<li>All development happens on the <strong>develop</strong> branch, so it is always the most up-to-date</li>
<li>The <strong>master</strong> branch only contains tagged releases</li>
<li>If you are going to be submitting a pull request, please submit your pull request to the <strong>develop</strong> branch</li>
<li>See about <a href="https://help.github.com/articles/fork-a-repo/">forking</a> and <a href="https://help.github.com/articles/using-pull-requests/">pull requests</a></li>
</ul>
<h2 id="changelog">Changelog</h2>
<ul>
<li>version 0.1.2 - 2016.09.10<ul>
<li>fix node version</li>
<li>add jenv and scalaenv</li>
<li>add Java (OpenJDK)</li>
<li>add prestissimo</li>
<li>add custom php.conf.j2 and php-build.default_configure_options.j2</li>
<li>fix file name</li>
</ul>
</li>
<li>version 0.1.1 - 2016.08.09<ul>
<li>rename to default-node-packages.j2 from default_node_packages.j2</li>
<li>add synced_folder /vagrant</li>
<li>add vagrant-vbguest plugin</li>
<li>fix mariadb yum repository</li>
<li>fix rbenv, plenv, pyenv and phpenv</li>
<li>add nodenv and goenv</li>
<li>remove RepoForge repository</li>
<li>change to package module from yum module</li>
</ul>
</li>
<li>version 0.1.0 - 2016.06.22<ul>
<li>initial release</li>
</ul>
</li>
</ul>
<h2 id="license">License</h2>
<p>VAP is distributed under GPLv3.</p>
<p>Copyright (c) 2016 thingsym</p>]]>
</content>
</entry>

<entry>
<title>CSS Flexbox のグリッドレイアウトがつくれる Sass Mixin ライブラリ「Flexbox Grid Mixins」をつくりました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000419.html" />
<modified>2016-05-10T08:16:19Z</modified>
<issued>2016-05-10T07:49:06Z</issued>
<id>tag:blog.thingslabo.com,2016://1.419</id>
<created>2016-05-10T07:49:06Z</created>
<summary type="text/plain">スタイルシートの Flexbox を使ってグリッドレイアウトが生成できる Sass Mixin「Flexbox Grid Mixins」をリリースしました。 グリッドを自由自在につくりたい どういうものかというと、以下のサンプルのような H...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>スタイルシートの Flexbox を使ってグリッドレイアウトが生成できる Sass Mixin「<a href="http://thingsym.github.io/flexbox-grid-mixins/" target="_blank">Flexbox Grid Mixins</a>」をリリースしました。</p>

<h2 id="-">グリッドを自由自在につくりたい</h2>
<p>どういうものかというと、以下のサンプルのような HTML と Sass があると、サクッとグリッドの CSS をつくってくれます。</p>
<h3 id="html">HTML</h3>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-3&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>3</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-9&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>9</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div></pre><h3 id="sass">Sass</h3>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>@import&nbsp;&#39;node_modules/flexbox-grid-mixins/sass/flexbox-grid-mixins&#39;;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>$default-grid-gutter:&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>@include&nbsp;grid($gutter:&nbsp;$default-grid-gutter);</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>&gt;&nbsp;.grid__col-3&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>@include&nbsp;grid-col($col:&nbsp;3,&nbsp;$gutter:&nbsp;$default-grid-gutter);</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&gt;&nbsp;.grid__col-9&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>@include&nbsp;grid-col($col:&nbsp;9,&nbsp;$gutter:&nbsp;$default-grid-gutter);</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div></pre><h3 id="css">CSS</h3>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;display:&nbsp;-webkit-flex;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;display:&nbsp;-ms-flexbox;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;display:&nbsp;flex;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex-flow:&nbsp;row&nbsp;nowrap;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex-flow:&nbsp;row&nbsp;nowrap;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex-flow:&nbsp;row&nbsp;nowrap;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;-1%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-3&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;23%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;23%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;23%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-9&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;73%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;73%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;73%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div></pre><h2 id="-">グリッドシステムも作れます</h2>
<p>ほんの数行の Sass コードでグリッドシステムがつくれます。</p>
<p>よく使われる 12 カラムのグリッドシステムはデフォルトでつくれることはもちろん。カラム数のオプションを指定すれば、いくつのカラム数のグリッドシステムも自由自在につくれます。</p>

<h3 id="html">HTML</h3>
<pre class="scrollable editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-12&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>12</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-1&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>1</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-11&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>11</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-2&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>2</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-10&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>10</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-3&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>3</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-9&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>9</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-4&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>4</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-8&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>8</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-5&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>5</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-7&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>7</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-6&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>6</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;div&nbsp;class=&quot;grid__col-6&quot;&gt;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>6</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&lt;/div&gt;</span></span></span></div></pre><h3 id="sass">Sass</h3>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>@import&nbsp;&#39;node_modules/flexbox-grid-mixins/sass/flexbox-grid-mixins&#39;;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>$default-grid-columns:&nbsp;12;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>$default-grid-gutter:&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>@include&nbsp;grid($gutter:&nbsp;$default-grid-gutter);</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>@for&nbsp;$i&nbsp;from&nbsp;1&nbsp;through&nbsp;$default-grid-columns&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>&gt;&nbsp;.grid__col-#{$i}&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>@include&nbsp;grid-col($col:&nbsp;$i,&nbsp;$grid-columns:&nbsp;$default-grid-columns,&nbsp;$gutter:&nbsp;$default-grid-gutter);</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div></pre><h3 id="css">CSS</h3>
<pre class="scrollable editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;display:&nbsp;-webkit-flex;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;display:&nbsp;-ms-flexbox;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;display:&nbsp;flex;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex-flow:&nbsp;row&nbsp;nowrap;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex-flow:&nbsp;row&nbsp;nowrap;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex-flow:&nbsp;row&nbsp;nowrap;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;-1%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-1&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;6.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;6.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;6.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-2&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;14.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;14.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;14.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-3&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;23%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;23%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;23%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-4&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;31.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;31.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;31.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-5&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;39.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;39.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;39.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-6&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;48%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;48%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;48%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-7&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;56.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;56.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;56.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-8&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;64.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;64.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;64.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-9&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;73%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;73%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;73%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-10&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;81.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;81.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;81.33333%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-11&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;89.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;89.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;89.66667%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>.grid&nbsp;&gt;&nbsp;.grid__col-12&nbsp;{</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;</span><span class="meta paragraph text"><span>box-sizing:&nbsp;border-box;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-webkit-flex:&nbsp;0&nbsp;0&nbsp;98%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;-ms-flex:&nbsp;0&nbsp;0&nbsp;98%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;flex:&nbsp;0&nbsp;0&nbsp;98%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;margin:&nbsp;0&nbsp;1%&nbsp;2%;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>}</span></span></span></div></pre><h2 id="-">オプションでさらに自由自在なグリッドに</h2>
<p>Sass Mixin「Flexbox Grid Mixins」には、たくさんのオプション (引数) が用意されています。くわしくは、<a href="http://thingsym.github.io/flexbox-grid-mixins/#Mixins-Reference" target="_blank">Mixins リファレンス</a>を読んでもらえればと思いますが。グリッドのカラム数やカラム周りのマージン指定の他、flexbox のプロパティ、事前に用意したカラム (プリセットカラム) が生成できたり。<a href="http://thingsym.github.io/flexbox-grid-mixins/example/example.html" target="_blank">サンプルページ</a>もありますので、参考に一度ご覧ください。いろんなレイアウトが組めると思います。</p>

<h2 id="-">作った理由。なぜフレームワークではなくライブラリなのか</h2>
<p>Sass Mixin ライブラリ「Flexbox Grid Mixins」を作った理由は、3つあります。</p>
<p>まず自由自在なグリッドレイアウトを作りたいと思ったこと。CSSフレームワークでは、12 カラムのグリッドシステムが定番でそれを元に作っていくのですが。もっとシンプルに、作りたいグリッドを作りたいカラム数でその場で柔軟に作っていきたい。</p>
<p>次にフロントエンド開発環境。昨今ウェブアプリの開発環境で起こっていることがフロントエンド開発環境に波及していること。一例を挙げると、Node.js とそのパッケージ管理 npm のもと、package.json で依存関係を解決することで、プロジェクトのポータビリティが向上したことが挙げられます。また gulp や grunt などのタスクライナーで自動化、効率化が図られています。スタイルシートも Sass などプリプロセッサを通じて生成することが多くなりました。</p>
<p>最後にCSSフレームワーク。はじめ開発者向けに作られた Bootstrap はバージョンを繰り返し、フルスタックで様々なプロジェクトに導入されるようになりました。さらに多種多様なCSSフレームワークがたくさん作られています。フレームワークを導入すると、便利に効率的な開発ができます。しかし、フレームワークを導入することは融通さを犠牲にすることもあり、バランスを取るのが難しくなります。とくにスタイルシートは最終的に静的ファイルに生成するため、事前に様々なことを想定していろいろなものを詰め込んでしまいます。次第に複雑さが増し柔軟性がなくなっていきます。それは同時にプロジェクトにも柔軟性がなくなることを意味します。フレームワークの次が求められています。</p>

<h2 id="-">そしてフレームワークの先へ...</h2>
<p>これからのフロントエンド開発を考えるに、いかに柔軟性をもちつつ、開発ができる環境を整えるかが重要になってきます。プロジェクトの中でパッケージ管理を行い、必要な機能や部品だけをライブラリという形で取り込み、Sass などプリプロセッサで組み合わせて使っていくコンポーメントベースに向かっていくのではないか。と仮説を立ててみました。これも昨今のウェブアプリの開発環境と同じ方向に向かうのでは。フレームワークとは言えないほど薄っぺらいフレームワークを利用してウェブサイトを開発していく未来に。</p>
<p>という未来を見据え、実現に一歩近づきつつ、Sass Mixin ライブラリ「Flexbox Grid Mixins」が産まれました。</p>

<h3 id="-class-">個人的にはこれをなんとかしたい。class属性の嵐</h3>
<p><blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">グリッドのスタイルシートを適用するとき、いつも迷う。グリッド用の class を追加して HTML をいじるか、すでにある class に適用するか。両方できるグリッドシステムを作って mixin でよろしくできるようにしたらさらに迷った。</p>&mdash; Yousuke Mizuno (@thingsym) <a href="https://twitter.com/thingsym/status/715107998016757761">2016年3月30日</a></blockquote></p>

<p>フレームワークを使ったり、OOCSS をもとに実装すると、HTML の class属性 にいっぱい値を記述しがちです。ボクもよくやりがち。</p>
<p>CSS の設計で構造と見た目の分離をした分、HTMLの方にしわ寄せがいって、気づいたら構造と見た目の class属性、状態の class属性でいっぱいになってしまいます。</p>
<p>必要最小限の記述でシンプルな解決を目指しつつ、Sass Mixin「Flexbox Grid Mixins」を作ったところもあります。</p>

<h3 id="-">サンプルを作ってみた感想</h3>
<p>flexbox ベースのグリッドは、ブラウザのサポート状況から float ベースのグリッドから次第に採用が増えたり、移行されたりすると思います。現状は flexbox のだいたいは使えるが、ブラウザの実装によっては細かいところでまだまだ不十分なところがありますね。これからもいろいろ改良をしていきたいと思います。</p>

<h2 id="-">ということで</h2>
<p>是非 Sass Mixin「Flexbox Grid Mixins」を使ってウェブサイトを設計したり、グリッドシステムを作ったりしてみてくださいね。</p>

<h2 id="flexbox-grid-mixins">Flexbox Grid Mixins</h2>
<p><strong>Flexbox Grid Mixins</strong> is Sass Mixins library to help you write well-structured, readable, maintainable, component-based grid using Flexbox (CSS Flexible Box Layout Module).</p>
<p>Flexbox Grid Mixins documentation: <a href="http://thingsym.github.io/flexbox-grid-mixins/" target="_blank">http://thingsym.github.io/flexbox-grid-mixins/</a></p>
<h3 id="mixins-reference-and-example">Mixins Reference and Example</h3>
<ul>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/#Mixins-Reference">Mixins Reference</a></li>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/#Basic-Example">Basic Example</a></li>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/#Grid-System-Example">Grid System Example</a></li>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/example/example.html">Flexbox Grid Mixins Example</a></li>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/example/holy-grail-layout.html">Holy Grail Layout - Using Flexbox Grid Mixins</a></li>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/example/responsive.html">Responsive web design - Using Flexbox Grid Mixins</a></li>
<li><a href="http://thingsym.github.io/flexbox-grid-mixins/example/grid-type.html">Grid Type</a></li>
</ul>
<p>GitHub: <a href="https://github.com/thingsym/flexbox-grid-mixins" target="_blank">https://github.com/thingsym/flexbox-grid-mixins</a></p>
<h3 id="license">License</h3>
<p>The MIT License (MIT)</p>]]>

</content>
</entry>

<entry>
<title>WordPressプラグイン「Custom Post Type Widgets」に Search Widget を追加しました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000418.html" />
<modified>2016-04-18T08:02:56Z</modified>
<issued>2016-04-18T07:39:22Z</issued>
<id>tag:blog.thingslabo.com,2016://1.418</id>
<created>2016-04-18T07:39:22Z</created>
<summary type="text/plain">カスタム投稿タイプで活用できるデフォルトウィジェット WordPressプラグイン「Custom Post Type Widgets」をアップデートしました。 今回のアップデートでは、新たに Search Widget を追加しました。 投...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>カスタム投稿タイプで活用できるデフォルトウィジェット WordPressプラグイン「Custom Post Type Widgets」をアップデートしました。</p>
<p>今回のアップデートでは、新たに Search Widget を追加しました。</p>

<img alt="screenshot-7.png" src="http://blog.thingslabo.com/images/screenshot-7.png" width="440" height="235" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

<p>投稿、固定ページ、カスタム投稿タイプで絞り込み検索ができます。</p>
<p>また、Search Widget と Comments Widget には Custom Post Type すべてを対象にできるようにしてみました。</p>
<h2>開発裏話</h2>
<p>今回いろいろ手を入れて、ウィジェット独自にキャッシュ機能があったのを削除したり、全面的にリファクタリングをして、コード数もざっくり減らすことが出来ました。</p>
<p>一番悩んだことは、Search Widget は GitHub でプルリクをいただいたのですが、うまく機能しなかったこと。
書いたプラグインがダメではなく WordPress 本体の方。個別ページだけの検索絞り込みができない。</p>
<p>ググってもあまり分からず、WordPressで検索の絞り込みノウハウが書いてあるブログ記事を見てもなぜか投稿ページだけの絞り込みに関してはたくさんあるが、ページに関してはほとんどなかったり。</p>
<p>ということでソースコード (wp-includes/post.php) を読むと、個別ページを作成する register_post_type には、publicly_queryable に false が設定されており、フロントエンドで post_type クエリが実行できないようになっています。(なぜそうなっているのか開発フォーラムを見ても経緯がよく分からなかったのですが...)</p>
<p>実際、?post_type=page でアクセスしても post_type が破棄されて (unset)、裏で revision以外すべてのタイプ (any) が検索対象になったりします。</p>
<p>個別ページだけの検索絞り込みをするために対処したことは、検索ページが表示される時に、pre_get_posts にフックして破棄された post_type を再度追加してみました。</p>
<p>他のアプローチとしては、register_post_type で登録されたものを変更してもいいのではと思ったのですが、そもそも register_post_type を実行途中で変えていいのか、検索時だけなので影響範囲を考えるとこれでいいのではないかと。
また、register_post_type の変更方法がわからないというのもあります... 誰かどういうアプローチがあるのか教えてください。</p>
<h2>おかげさまで</h2>
<p>WordPressプラグイン「Custom Post Type Widgets」は2015年1月にリリースして一年あまり。海外の開発者に反応が良く、プルリクをいただいたり、段々使われるプラグインに育ちつつあります。カスタム投稿タイプを使ったテーマ開発に是非使ってみてくださいね。</p>

<h3>ダウンロード &amp; インストール</h3>

<p><a href="https://wordpress.org/plugins/custom-post-type-widgets/">WordPress の公式プラグインページ</a></p>

<h3>ライセンス</h3>

<p>GNU General Public License v2.0 (GPLv2) licenses</p>

<h3>開発</h3>

<p><a href="https://github.com/thingsym/custom-post-type-widgets">GitHub</a></p>

]]>

</content>
</entry>

<entry>
<title>投稿コンテンツがデバイス毎に切り替えられる新機能「Display Switcher」がWordPressプラグイン「Multi Device Switcher」に加わりました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000412.html" />
<modified>2015-05-25T08:50:40Z</modified>
<issued>2015-05-25T08:00:39Z</issued>
<id>tag:blog.thingslabo.com,2015://1.412</id>
<created>2015-05-25T08:00:39Z</created>
<summary type="text/plain">デバイス毎にテーマを切り替える WordPressプラグイン「Multi Device Switcher」をアップデートしました。 アップデート内容は2つあります。 デフォルトのユーザーエージェント更新 デフォルトのユーザーエージェントを更...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>デバイス毎にテーマを切り替える WordPressプラグイン「Multi Device Switcher」をアップデートしました。</p>

<p>アップデート内容は2つあります。</p>

<h2>デフォルトのユーザーエージェント更新</h2>

<p>デフォルトのユーザーエージェントを更新しました。いままで アンドロイド端末は、Android OS が搭載されているスマホとタブレット端末の両方がスマートフォン用テーマに切り替えられていました。</p>

<p>そのため、<a href="http://blog.thingslabo.com/archives/000308.html">WordPressプラグイン「Multi Device Switcher」でAndroidスマホとタブレット端末のWordPressテーマ切り替え方法</a> を参考に手動でユーザーエージェントを設定してもらっていましたが、今回の更新でデフォルトでスマホとタブレット端末別々にテーマが切り替わるように見直しました。</p>

<h2>コンテンツがデバイス毎に切り替えられるショートコード「Display Switcher」</h2>

<p>「Multi Device Switcher」のデバイス判定を用いたショートコードでコンテンツの切り替えができるようになりました。</p>

<p>設定は、WordPressの投稿画面のエディター上でショートコード <code>[multi]</code>を使うだけ。<code>device</code>属性にデバイスの名前を付けるとそのデバイスで見たときだけショートコードで設定したコンテンツが表示されます。<code>device</code>属性になにも付けない場合は PC の時だけコンテンツが表示されます。Custom Switcherにも対応。<code>device</code>属性に Custom Switcher の名前を付けるとちょうどよい具合にコンテンツが切り替わってくれます。</p>

<pre class="prettyprint wrap"><code>[multi]PCで見ている時に表示します[/multi]
[multi device="smart"]スマホで見ている時に表示します[/multi]
[multi device="tablet"]タブレット端末で見ている時に表示します[/multi]
[multi device="test"]Custom Switcherでもコンテンツが切り替わります[/multi]</code></pre>

<p>CSSだけでコンテンツの表示非表示をすると検索エンジンからテキスト非表示でスパム的になる可能性をはらんでしまうことを避けるために切り替えたり、コンテンツや画像をスマホ用などデバイス毎に最適化したり、投稿やコンテンツ制作に是非活用してみてください。</p>


<hr />

<h3>Download:</h3>

<p><a href="http://wordpress.org/extend/plugins/multi-device-switcher/" target="_blank">WordPress のプラグインページからどうぞ。</a></p>

<h3>Installation:</h3>

<p><a href="http://blog.thingslabo.com/archives/000251.html">WordPress プラグイン「Multi Device Switcher」のインストール詳細はこちらからどうぞ。</a></p>

<h3>Code Repository:</h3>

<p><a href="https://github.com/thingsym/multi-device-switcher" target="_blank">thingsym / multi-device-switcher (GitHub)</a></p>

<h3>Licenses:</h3>

<p>Licensed under GPL version 2.0</p>

<h3>Donationware:</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="9L53NELFMHTWW"></p>

<table class="no-border">
<tr><td><input type="hidden" name="on0" value="Donationware">Donationware</td></tr><tr><td><select name="os0">
    <option value="1. Donate">1. Donate $3.00 USD</option>
    <option value="2. Donate">2. Donate $5.00 USD</option>
    <option value="3. Donate">3. Donate $7.00 USD</option>
    <option value="4. Donate" selected="selected">4. Donate $10.00 USD</option>
    <option value="5. Donate">5. Donate $20.00 USD</option>
    <option value="6. Donate">6. Donate $30.00 USD</option>
    <option value="7. Donate">7. Donate $40.00 USD</option>
    <option value="8. Donate">8. Donate $50.00 USD</option>
    <option value="9. Donate">9. Donate $60.00 USD</option>
    <option value="10. Donate">10. Donate $70.00 USD</option>
</select> </td></tr>
</table>

<p><input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/ja_JP/i/scr/pixel.gif" width="1" height="1">
</form></p>]]>

</content>
</entry>

<entry>
<title>ページの先頭へスムーズに戻る WordPressプラグイン「Back to the Top」をリリースしました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000411.html" />
<modified>2015-05-14T07:23:00Z</modified>
<issued>2015-05-14T07:08:57Z</issued>
<id>tag:blog.thingslabo.com,2015://1.411</id>
<created>2015-05-14T07:08:57Z</created>
<summary type="text/plain">去年 2014年10月に jQuery プラグイン「Back to the Top」 をリリースしました。今回、そのWordPressプラグイン版をちょこちょこ作ってリリースしてみました。 jQueryプラグイン版は、jQueryを読み込ん...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>去年 2014年10月に <a href="http://blog.thingslabo.com/archives/000401.html">jQuery プラグイン「Back to the Top」</a> をリリースしました。今回、そのWordPressプラグイン版をちょこちょこ作ってリリースしてみました。</p>
<p>jQueryプラグイン版は、jQueryを読み込んだり、HTMLを用意したりと、いろいろ設定が必要になります。オプションがたくさんあるのでカスタマイズが自在にできます。反面、設定が煩わしかったりします。</p>
<p>WordPressプラグイン版は、WordPressにインストールして有効化すると、もろもろデフォルトで設定してくれてそのまま使えます。カスタマイズもオプションページでプレビューを見ながらかんたんに設定できるように作ってみました。</p>

<img alt="screenshot-backtothetop.png" src="http://blog.thingslabo.com/images/screenshot-backtothetop.png" width="600" class="screenshot aligncenter">

<p>カスタマイズは、ラベルに Webフォントを採用したアイコンが選べたり、スクロールの動き (easing) も。また、上級者向けにスタイルシートがカスタマイズできます。</p>
<p>インストールは、<a href="https://wordpress.org/plugins/back-to-the-top/">WordPressプラグインページ</a>から。または、管理画面のプラグインの新規追加から「Back to the Top」で検索してインストールできます。</p>
<p>WordPressプラグインのインストール方法は「<a href="http://cms.thingslabo.com/manual/wordpress/plugin/plugin-install">プラグインをインストールする - WordPressマニュアル</a>」を参考にどうぞ。</p>
<ul>
<li><a href="https://wordpress.org/plugins/back-to-the-top/">WordPressプラグインページ</a></li>
<li><a href="https://wordpress.org/plugins/back-to-the-top/">Github Repository</a></li>
<li><a href="https://github.com/thingsym/back-to-the-top">jquery.backtothetop Github Repository </a></li>
<li><a href="http://project.thingslabo.com/jquery.backtothetop/docs-ja.html"> jQuery プラグイン「Back to the Top」 プロジェクトページ 日本語 (Japanese)</a></li>
<li><a href="http://project.thingslabo.com/jquery.backtothetop/docs.html">jquery.backtothetop Project Page</a></li>
</ul>]]>

</content>
</entry>

<entry>
<title>WordPressプラグイン「Jetpack」のCDN「Photon」をWordPressテーマ・プラグインに実装するスニペット</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000410.html" />
<modified>2015-05-20T08:24:25Z</modified>
<issued>2015-04-13T07:01:08Z</issued>
<id>tag:blog.thingslabo.com,2015://1.410</id>
<created>2015-04-13T07:01:08Z</created>
<summary type="text/plain">WordPress プラグイン「Jetpack」にCDN (Contents Delivery Network) で画像を配信する「Photon」があります。「Photon」を使うと、画像配信の分散ができ、サーバの負荷分散やサイトの表示パフ...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>WordPress プラグイン「Jetpack」にCDN (Contents Delivery Network) で画像を配信する「Photon」があります。「Photon」を使うと、画像配信の分散ができ、サーバの負荷分散やサイトの表示パフォーマンスの向上に繋がります。</p>

<p>「Photon」 は、WordPress.com で使われていたり、自分でホストしている WordPress サイトにプラグイン「Jetpack」をインストールすることで導入できます。</p>

<p>「Photon」の導入は、プラグイン「Jetpack」の「Photon」を有効化するだけで CDN で画像配信されます。</p>

<p>画像配信されるのは、サムネイル画像やアイキャッチ画像だけで、「Photon」で配信されない画像もあります。たとえば、ご自身でテーマやプラグインをカスタマイズしたり、開発した場合。img タグで埋め込んだりすると、画像が「Photon」に対応した形にならないのでうまく配信されません。こういう場合も Photon API が用意されているので、対応ができます。</p>
<p>以下のスニペットで 「Photon」を有効化していると、画像URLを元に Photon用URL を生成して画像配信してくれます。</p>

<pre class="prettyprint wrap"><code>$image_url = class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'get_active_modules' ) && in_array( 'photon', Jetpack::get_active_modules() ) ? 'http://i' . mt_rand( 0, 2 ) . '.wp.com/' . str_replace( array( 'http://', 'https://' ), '', esc_attr( $image_url ) ) : esc_attr( $image_url );</code></pre>
<p>「Photon」を利用する場合、WordPress.com を使っているか、WordPress サイトにプラグイン「Jetpack」をインストールしている場合に限りますと、利用規約にあるのでご注意を。</p>

<ul>
<li><a href="http://jetpack.me/support/photon/">Photon - Jetpack for WordPress</a></li>
<li><a href="https://developer.wordpress.com/docs/photon/">Photon | Developer Resources</a></li>
<li><a href="https://developer.wordpress.com/docs/photon/api/">Photon API</a></li>
</ul>]]>

</content>
</entry>

<entry>
<title>WordPressプラグイン「Multi Device Switcher」をアップデートしました。</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000408.html" />
<modified>2016-05-12T01:18:20Z</modified>
<issued>2015-03-03T07:00:22Z</issued>
<id>tag:blog.thingslabo.com,2015://1.408</id>
<created>2015-03-03T07:00:22Z</created>
<summary type="text/plain">今回の WordPressプラグイン「Multi Device Switcher」アップデートは、is_disable_switcher(), is_pc_switcher() の2つの関数を追加しました。 これまでのアップデートでデバイス...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>今回の WordPressプラグイン「Multi Device Switcher」アップデートは、<code>is_disable_switcher()</code>, <code>is_pc_switcher()</code> の2つの関数を追加しました。</p>

<p>これまでのアップデートでデバイスの判定に is_multi_device関数を使ってコンテンツを出し分けたり、JavaScript でのデバイス判定を使った WordPressテーマのカスタマイズが可能です。</p>

<p>今回も is_disable_switcher(), is_pc_switcher() の2つの関数の追加でさらに詳細な状態のデバイス判定ができるようになりました。テーマを編集してコンテンツを出し分けたり、function.php で WordPressのオプション設定を切り替えたりできます。</p>

<p>is_multi_device(), is_disable_switcher(), is_pc_switcher() の3つ関数でテーマのカスタマイズができる環境を整えてみました。</p>

<h2>サンプルコード</h2>

<p>たとえばスマートフォンでアーカイブの投稿表示件数を 10 件にする場合、スマートフォンで表示するテーマの function.php にこんな感じで書いて。ってことができます。</p>

<pre class="prettyprint linenums"><code>if ( function_exists( 'is_multi_device' ) &amp;&amp; function_exists( 'is_pc_switcher' ) ) :

function custom_posts_per_page_count( $query ) {
    if ( is_multi_device('smart') &amp;&amp; ! is_pc_switcher() ) {
        if ( $query-&gt;is_main_query() ) {
            set_query_var( 'posts_per_page', 10 );
        }
    }
}
add_action( 'pre_get_posts', 'custom_posts_per_page_count' );

endif;
</code></pre>

<p>以上、テーマのカスタマイズで是非活用してみてください。</p>

<hr>

<h2>is_pc_switcher() function</h2>

<p><strong>is_pc_switcher()</strong> function is a boolean function, meaning it returns either TRUE or FALSE. Return the the state of PC Switcher by the Multi_Device_Switcher class. Return true if the theme has switched by the PC Switcher.</p>

<h3>Usage</h3>

<pre class="prettyprint"><code>&lt;?php is_pc_switcher(); ?&gt;
</code></pre>

<h3>Example</h3>

<pre class="prettyprint linenums"><code>&lt;?php
if ( function_exists( 'is_pc_switcher' ) ) {
    if ( is_pc_switcher() ) {
        /* Theme switched by the PC Switcher. Display and echo specific stuff here */
    } else {
        /* Display and echo specific stuff here */
    }
}
?&gt;
</code></pre>

<h3>Parameters</h3>

<p>None</p>

<h3>Return Values</h3>

<p>(boolean) Return the state of PC Switcher.</p>

<h2>is_disable_switcher() function</h2>

<p><strong>is_disable_switcher()</strong> function is a boolean function, meaning it returns either TRUE or FALSE. Return the state of disabled by the Multi_Device_Switcher class.</p>

<h3>Usage</h3>

<pre class="prettyprint"><code>&lt;?php is_disable_switcher(); ?&gt;
</code></pre>

<h3>Example</h3>

<pre class="prettyprint linenums"><code>&lt;?php
if ( function_exists( 'is_disable_switcher' ) ) {
    if ( is_disable_switcher() ) {
        /* Disabled. Display and echo specific stuff here */
    } else {
        /* Display and echo specific stuff here */
    }
}
?&gt;
</code></pre>

<h3>Parameters</h3>

<p>None</p>

<h3>Return Values</h3>

<p>(boolean) Return the state of disabled.</p>

<hr>

<h3>Download:</h3>

<p><a href="http://wordpress.org/extend/plugins/multi-device-switcher/" target="_blank">WordPress のプラグインページからどうぞ。</a></p>

<h3>Installation:</h3>

<p><a href="http://blog.thingslabo.com/archives/000251.html">WordPress プラグイン「Multi Device Switcher」のインストール詳細はこちらからどうぞ。</a></p>

<h3>Code Repository:</h3>

<p><a href="https://github.com/thingsym/multi-device-switcher" target="_blank">thingsym / multi-device-switcher (GitHub)</a></p>

<h3>Licenses:</h3>

<p>Licensed under GPL version 2.0</p>

<h3>Donationware:</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="9L53NELFMHTWW"></p>

<table class="no-border">
<tr><td><input type="hidden" name="on0" value="Donationware">Donationware</td></tr><tr><td><select name="os0">
    <option value="1. Donate">1. Donate $3.00 USD</option>
    <option value="2. Donate">2. Donate $5.00 USD</option>
    <option value="3. Donate">3. Donate $7.00 USD</option>
    <option value="4. Donate" selected="selected">4. Donate $10.00 USD</option>
    <option value="5. Donate">5. Donate $20.00 USD</option>
    <option value="6. Donate">6. Donate $30.00 USD</option>
    <option value="7. Donate">7. Donate $40.00 USD</option>
    <option value="8. Donate">8. Donate $50.00 USD</option>
    <option value="9. Donate">9. Donate $60.00 USD</option>
    <option value="10. Donate">10. Donate $70.00 USD</option>
</select> </td></tr>
</table>

<p><input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/ja_JP/i/scr/pixel.gif" width="1" height="1">
</form></p>]]>

</content>
</entry>

<entry>
<title>Perl6のプログラミング環境「Rapid Perl6」を作りました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000407.html" />
<modified>2015-03-02T10:53:13Z</modified>
<issued>2015-02-19T06:00:46Z</issued>
<id>tag:blog.thingslabo.com,2015://1.407</id>
<created>2015-02-19T06:00:46Z</created>
<summary type="text/plain">バージョン1.0 を今年 2015年 のクリスマスにリリースすると発表があった Perl 6.0。かれこれ 10 年以上開発していてなかなかリリースされなかったがようやく形になりそう。 Fosdem 2015: It&apos;s Christmas...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>バージョン1.0 を今年 2015年 のクリスマスにリリースすると発表があった Perl 6.0。かれこれ 10 年以上開発していてなかなかリリースされなかったがようやく形になりそう。</p>

<ul>
<li><a href="http://blogs.perl.org/users/shadowcat_mdk/2015/02/fosdem-2015-its-christmas.html">Fosdem 2015: It's Christmas!</a></li>
<li><a href="http://codezine.jp/article/detail/8457">Perl開発者Larry Wall氏が、Perl 6.0の正式バージョンを2015年のクリスマスにリリースすると発言、Perl開発者の中には懐疑的な見方も</a></li>
</ul>


<p>一足早くその Perl 6 のプログラミング環境をサクッと立ち上げられる Vagrant 環境をつくりました。</p>

<ul>
<li><a href="https://github.com/thingsym/rapid-perl6">Rapid Perl6</a></li>
</ul>


<p>Perl 6 は言語仕様も変わり、Perl 5 など前バージョンの後方互換性もないので、新しい言語と見ていろいろいじってみたい方はどうぞ。</p>

<p>以下、<a href="https://github.com/thingsym/rapid-perl6">GitHub</a> にある Rapid Perl6 の readme-ja.md です。</p>


<hr />

<h1>Rapid Perl6</h1>

<p>Rapid Perl6 is Vagrant environment for the Perl 6 programming language.</p>

<h2>Provisioning</h2>

<pre class="prettyprint"><code># install Vagrant plugin
vagrant plugin install vagrant-hostsupdater

cd rapid-perl6
vagrant up

...

vagrant ssh
</code></pre>

<h2>Version</h2>

<pre class="prettyprint"><code>cd /home/vagrant/perl6/bin
./perl6 -v
This is perl6 version 2015.01-194-g5bb1942 built on MoarVM version 2015.01-72-g9106bee
</code></pre>

<p>OR</p>

<pre class="prettyprint"><code>cd /home/vagrant/perl6/bin
./perl6 -V
...
</code></pre>

<h2>Help</h2>

<pre class="prettyprint"><code>cd /home/vagrant/perl6/bin
./perl6 -h
</code></pre>

<h2>hello world!</h2>

<pre class="prettyprint"><code>cd /home/vagrant/perl6/bin
./perl6
&gt; say 'hello world!';
hello world!
&gt; exit;
</code></pre>

<h2>hello world! (helloworld.pl)</h2>

<pre class="prettyprint linenums"><code>#!/usr/bin/env perl6
say q/hello world!/;
1;
</code></pre>

<h2>Run helloworld.pl</h2>

<pre class="prettyprint"><code>cd /home/vagrant/perl6/bin
./perl6 /vagrant/helloworld.pl
hello world!
</code></pre>

<h2>Reference</h2>

<ul>
<li><a href="http://blog.64p.org/entry/2015/02/02/202811">Perl6 の開発先端を味わう方法 - tokuhirom's blog</a></li>
<li><a href="http://perl6.org">Perl 6</a></li>
<li><a href="http://doc.perl6.org">Perl 6 Documentation</a></li>
<li><a href="http://rakudo.org">Rakudo Perl 6</a></li>
</ul>]]>

</content>
</entry>

<entry>
<title>カスタム投稿タイプのリンクを追加するWordPressプラグイン「Custom Post Type Rewrite」をリリースしました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000405.html" />
<modified>2015-01-29T07:01:52Z</modified>
<issued>2015-01-29T06:56:09Z</issued>
<id>tag:blog.thingslabo.com,2015://1.405</id>
<created>2015-01-29T06:56:09Z</created>
<summary type="text/plain">カスタム投稿タイプのパーマリンクを追加するWordPressプラグイン「Custom Post Type Rewrite」をリリースしました。 カスタム投稿タイプを使ってテーマを開発するとき、ブログとして機能しなかったりします。カスタム投稿...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>カスタム投稿タイプのパーマリンクを追加するWordPressプラグイン「Custom Post Type Rewrite」をリリースしました。</p>

<p>カスタム投稿タイプを使ってテーマを開発するとき、ブログとして機能しなかったりします。カスタム投稿タイプでは日付ベースと投稿者ベースのパーマリンクが対応していないのが原因。</p>

<p>プラグイン「Custom Post Type Rewrite」は、カスタム投稿タイプを使ったとき、WordPressがデフォルトで用意されていない一部のパーマリンクを追加してくれるユーティリティプラグインです。</p>

<p>WordPress管理画面のパーマリンク設定に対応して以下のパーマリンクを追加します。</p>

<ul>
<li>日付ベース</li>
<li>投稿者ベース</li>
<li>フロント</li>
</ul>


<p>カスタム投稿タイプを使ったテーマ開発に是非使ってみてください。</p>

<h3>ダウンロード &amp; インストール</h3>

<p><a href="https://wordpress.org/plugins/custom-post-type-rewrite/">WordPress の公式プラグインページ</a></p>

<h3>ライセンス</h3>

<p>GNU General Public License v2.0 (GPLv2) licenses</p>

<h3>開発</h3>

<p><a href="https://github.com/thingsym/custom-post-type-rewrite">GitHub</a></p>

<h3>Donationware</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p>If you like this plugin, please donate to support development and maintenance.</p>

<p><a href="http://www.amazon.co.jp/registry/wishlist/3TTHFHIYJLJV9">thingsymのほしい物リスト</a></p>

]]>

</content>
</entry>

<entry>
<title>カスタム投稿タイプのデフォルトウィジェット一式が詰まったWordPressプラグイン「Custom Post Type Widgets」をリリースしました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000404.html" />
<modified>2016-06-26T10:02:26Z</modified>
<issued>2015-01-29T06:55:16Z</issued>
<id>tag:blog.thingslabo.com,2015://1.404</id>
<created>2015-01-29T06:55:16Z</created>
<summary type="text/plain">カスタム投稿タイプで活用できるデフォルトウィジェット 6 点が詰まった WordPressプラグイン「Custom Post Type Widgets」を作りました。 作ったのはおよそ 3 年前になりますが。最近ソースコードを整理して、とい...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>カスタム投稿タイプで活用できるデフォルトウィジェット 6 点が詰まった WordPressプラグイン「Custom Post Type Widgets」を作りました。</p>

<p>作ったのはおよそ 3 年前になりますが。最近ソースコードを整理して、というかほぼ標準ウィジェットのソースをベースに機能拡張とリファクタリングしたのをリリースしました。</p>

<h3>デフォルトウィジェット 6 点</h3>

<p>機能は、Custom Post Type や Taxonomy で絞り込みができる以外は、WordPressの標準ウィジェットとほぼ同じです。</p>

<img src="http://blog.thingslabo.com/images/screenshot-custom-post-type-widgets-1.png" width="441" height="288" class="screenshot aligncenter">
<img src="http://blog.thingslabo.com/images/screenshot-custom-post-type-widgets-2.png" width="439" height="268" class="screenshot aligncenter">
<img src="http://blog.thingslabo.com/images/screenshot-custom-post-type-widgets-3.png" width="438" height="286" class="screenshot aligncenter">
<img src="http://blog.thingslabo.com/images/screenshot-custom-post-type-widgets-4.png" width="441" height="215" class="screenshot aligncenter">
<img src="http://blog.thingslabo.com/images/screenshot-custom-post-type-widgets-5.png" width="440" height="258" class="screenshot aligncenter">
<img src="http://blog.thingslabo.com/images/screenshot-custom-post-type-widgets-6.png" width="438" height="216" class="screenshot aligncenter">


<h3>ユーティリティプラグイン「Custom Post Type Rewrite」で日付ベースのパーマリンクを追加</h3>

<p>デフォルトでは、カスタム投稿タイプでカレンダーやアーカイブなど日付ベースのリンクが機能しません。WordPressは、カスタム投稿タイプを使ったパーマリンク設定が一部用意されていないようです。なのでカスタム投稿タイプでブログと同じように機能しません。そのためには、カスタム投稿タイプのパーマリンク設定が編集できたり、パーマリンクを追加してくれるプラグインを導入する必要があります。</p>

<p>今回パーマリンクを追加してくれるユーティリティプラグイン「<a href="https://wordpress.org/plugins/custom-post-type-rewrite/">Custom Post Type Rewrite</a>」も作ったのであわせて使ってみてください。ほかにパーマリンク構造が編集できるプラグイン「<a href="https://wordpress.org/plugins/custom-post-type-permalinks/">Custom Post Type Permalinks</a>」などいろいろあるので検討してみてください。</p>

<p>以上でカスタム投稿タイプでブログとほぼ同じように機能します。個人的にコレを実現したかった。是非活用してみてください。</p>

<h2>標準ウィジェットと置き換える方法</h2>

<p>WordPressプラグイン「Custom Post Type Widgets」を有効化すると、WordPress管理画面のウィジェットにある「利用できるウィジェット」に標準のウィジェットといっしょに追加されます。</p>

<p>標準ウィジェットと機能的に同じで重複して並ぶのはあれだなぁと。標準ウィジェットと置き換えたい場合の Tips です。以下のソースを functions.php にコピペするだけ。</p>

<pre class="prettyprint linenums"><code>function remove_default_widget() {
    unregister_widget( 'WP_Widget_Recent_Posts' );
    unregister_widget( 'WP_Widget_Archives' );
    unregister_widget( 'WP_Widget_Categories' );
    unregister_widget( 'WP_Widget_Calendar' );
    unregister_widget( 'WP_Widget_Recent_Comments' );
    unregister_widget( 'WP_Widget_Tag_Cloud' );
}
add_action( 'widgets_init', 'remove_default_widget' );
</code></pre>

<p>管理画面をスッキリとさせたい場合はどうぞ。</p>

<p>参考: <a href="http://codex.wordpress.org/Function_Reference/unregister_widget">Function Reference/unregister widget</a></p>

<h3>ダウンロード &amp; インストール</h3>

<p><a href="https://wordpress.org/plugins/custom-post-type-widgets/">WordPress の公式プラグインページ</a></p>

<h3>ライセンス</h3>

<p>GNU General Public License v2.0 (GPLv2) licenses</p>

<h3>開発</h3>

<p><a href="https://github.com/thingsym/custom-post-type-widgets">GitHub</a></p>

<h3>Donationware</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p>If you like this plugin, please donate to support development and maintenance.</p>

<p><a href="http://www.amazon.co.jp/registry/wishlist/3TTHFHIYJLJV9">thingsymのほしい物リスト</a></p>]]>

</content>
</entry>

<entry>
<title>テーマの切り替えを無効にする新機能「Disable Switcher」がWordPressプラグイン「Multi Device Switcher」に加わりました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000403.html" />
<modified>2015-05-25T08:50:30Z</modified>
<issued>2015-01-21T06:48:24Z</issued>
<id>tag:blog.thingslabo.com,2015://1.403</id>
<created>2015-01-21T06:48:24Z</created>
<summary type="text/plain">デバイス毎にテーマを切り替える WordPressプラグイン「Multi Device Switcher」を大幅に新機能を追加してアップデートしました。 アップデート内容は4つあります。テーマの切り替えを無効にする新機能「Disable S...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>デバイス毎にテーマを切り替える WordPressプラグイン「Multi Device Switcher」を大幅に新機能を追加してアップデートしました。</p>

<p>アップデート内容は4つあります。テーマの切り替えを無効にする新機能「Disable Switcher」はじめ、WordPressのコマンドラインツール WP-CLI に対応した「Multi Device Switcher Command」、WordPressの管理画面にあるテーマカスタマイザー対応、Cookieを実装して JavaScript でのデバイス判定も可能になりました。</p>
]]>
<![CDATA[<h2>テーマの切り替えを無効にする「Disable Switcher」</h2>

<p>「Disable Switcher」は、アクセスしたURLアドレスと設定画面で設定したパスとが一致した場合、そのページのテーマの切り替えが無効になります。また上級者向けに正規表現モードをオンにすると、通常文字列で判定されるところを、正規表現を使ったテーマの切り替えの無効ができます。</p>

<img src="http://blog.thingslabo.com/images/screenshot-multi-device-switcher-disable-switcher.png" width="558" height="650" class="screenshot aligncenter">

<p>たとえば、以下のようにパスを設定すると。</p>

<pre class="prettyprint linenums"><code>/sample-page
/2015/01/hello-world
</code></pre>

<p>http://DOMAIN<code>/sample-page</code> と http://DOMAIN<code>/2015/01/hello-world</code>にスマホ等でアクセスした場合、通常はスマホ用のテーマに切り替わって表示されるところ、PC用のテーマで表示されます。</p>

<p>「正規表現を有効化」をチェックして正規表現モードで以下のように設定すると。</p>

<pre class="prettyprint linenums"><code>\/sample\-
\/2015\/01
</code></pre>

<p>http://DOMAIN<code>/sample-</code> と http://DOMAIN<code>/2015/01</code> の正規表現に一致するアドレスの場合、PC用のテーマが表示されます。</p>

<h2>コマンドラインツール「Multi Device Switcher Command」</h2>

<p>「Multi Device Switcher Command」は、WordPress の管理画面で設定していたことを、ターミナルを使ってコマンドで操作ができるコマンドラインツールです。</p>

<p>WordPressのコマンドラインツール「WP-CLI」がインストール済みの場合、WordPressプラグイン「Multi Device Switcher」を有効化すると、コマンドラインツール「Multi Device Switcher Command」がアドオンされます。ターミナルから Multi Device Switcher の設定ができるコマンドが使えます。</p>

<p>ターミナルから以下を入力すると、</p>

<pre class="prettyprint"><code>wp multi-device status
</code></pre>

<p> Multi Device Switcher の設定一覧が確認できます。</p>

<pre class="prettyprint"><code>Active Theme: Twenty Fifteen | twentyfifteen
+--------------------------+-----------------+----------------+-------------------------------------------------------------------------+
| Device                   | Theme           | Slug           | UserAgent                                                               |
+--------------------------+-----------------+----------------+-------------------------------------------------------------------------+
| smartphone (Smart Phone) | Twenty Fourteen | twentyfourteen | iPhone, iPod, Android, dream, CUPCAKE, Windows Phone, webOS, BB10, Blac |
|                          |                 |                | kBerry8707, BlackBerry9000, BlackBerry9300, BlackBerry9500, BlackBerry9 |
|                          |                 |                | 530, BlackBerry9520, BlackBerry9550, BlackBerry9700, BlackBerry 93, Bla |
|                          |                 |                | ckBerry 97, BlackBerry 99, BlackBerry 98                                |
| tablet (Tablet PC)       | Twenty Thirteen | twentythirteen | iPad, Kindle, Sony Tablet, Nexus 7                                      |
| mobile (Mobile Phone)    | Twenty Twelve   | twentytwelve   | DoCoMo, SoftBank, J-PHONE, Vodafone, KDDI, UP.Browser, WILLCOM, emobile |
|                          |                 |                | , DDIPOCKET, Windows CE, BlackBerry, Symbian, PalmOS, Huawei, IAC, Noki |
|                          |                 |                | a                                                                       |
| game (Game Platforms)    | Twenty Eleven   | twentyeleven   | PlayStation Portable, PlayStation Vita, PSP, PS2, PLAYSTATION 3, PlaySt |
|                          |                 |                | ation 4, Nitro, Nintendo 3DS, Nintendo Wii, Nintendo WiiU, Xbox         |
+--------------------------+-----------------+----------------+-------------------------------------------------------------------------+
PC Switcher: on
default CSS: on
</code></pre>

<p>スマートフォン用のテーマを設定するには、</p>

<pre class="prettyprint"><code>wp multi-device theme smartphone twentyfifteen
</code></pre>

<p>モバイル用のテーマを確認するには、</p>

<pre class="prettyprint"><code>wp multi-device mobile
</code></pre>

<p>タブレットのユーザーエージェントを設定するには、</p>

<pre class="prettyprint"><code>wp multi-device useragent tablet 'iPad, Kindle, Sony Tablet, Nexus 7'
</code></pre>

<p>Custom Switcher を追加するには、</p>

<pre class="prettyprint"><code>wp multi-device add example
</code></pre>

<p>切り替えるテーマとユーザーエージェントと一緒に Custom Switcher を追加するには、</p>

<pre class="prettyprint"><code>wp multi-device add example twentyfifteen 'iPad, Kindle, Sony Tablet, Nexus 7'
</code></pre>

<p>Custom Switcher を削除するには、</p>

<pre class="prettyprint"><code>wp multi-device delete example
</code></pre>

<p>デフォルトCSSをオンにするには、</p>

<pre class="prettyprint"><code>wp multi-device css on
</code></pre>

<p>オフは、</p>

<pre class="prettyprint"><code>wp multi-device css off
</code></pre>

<p>という感じでコマンドだけでできるようになりました。</p>

<p>ヘルプは以下の通り。</p>

<h3>NAME</h3>

<pre class="prettyprint"><code>wp multi-device
</code></pre>

<h3>DESCRIPTION</h3>

<pre class="prettyprint"><code>Multi Device Switcher Command
</code></pre>

<h3>SYNOPSIS</h3>

<pre class="prettyprint"><code>wp multi-device &lt;command&gt;
</code></pre>

<h3>SUBCOMMANDS</h3>

<pre class="prettyprint"><code>add              add Custom Switcher
css              turn on/off default CSS
delete           delete Custom Switcher
pc-switcher      turn on/off PC Switcher
reset            reset Settings to Default UserAgent
status           get status of settings
theme            get or switch a theme
useragent        get or set UserAgent
</code></pre>

<p>使い方やサブコマンドの詳細は、<code>wp help multi-device &lt;SUBCOMMANDS&gt;</code> で確認できます。</p>

<h2>テーマカスタマイザー対応</h2>

<p>WordPressの管理画面にあるテーマカスタマイザーで切り替えるテーマが選べるようになりました。</p>

<p>こんな感じで切り替えるテーマが選べます。</p>

<img src="http://blog.thingslabo.com/images/screenshot-multi-device-switcher-theme-customizer.png" width="1058" height="606" class="screenshot aligncenter">

<h2>JavaScript と Cookie でデバイス判定をして表示切り替えも可能に</h2>

<p>以前にデバイスを判定する is_multi_device関数を実装してテーマ開発で活用できるようになりましたが、今回新たに切り替えの状態を保持した Cookie を実装しました。JavaScript で Cookie を取得してデバイスの判定ができます。広告など表示の切り替えも可能になりました。</p>

<h3>サンプルコード</h3>

<pre class="prettyprint linenums"><code> &lt;script src="http://DOMEIN/PATH/TO/jquery.cookie.js"&gt;&lt;/script&gt;
 &lt;script&gt;
 (function($) {
    $(function() {
        if ( $.cookie( 'multi-device-switcher' ) == 'smart' ) {
            /* smartphone specific stuff here */
        } else if ( $.cookie( 'multi-device-switcher' ) == 'tablet' ) {
            /* tablet specific stuff here */
        } else {
            /* pc or other stuff here */
        }
    });
 })(jQuery);
 &lt;/script&gt;
</code></pre>

<p>Cookieは、<code>multi-device-switcher</code> <code>disable-switcher</code> <code>pc-switcher</code> と3つあります。それぞれの状態を組み合わせた判定も可能です。</p>

<h3>Cookie</h3>

<ul>
<li><code>multi-device-switcher</code> 切り替えているデバイス名 (value: null | device name)</li>
<li><code>disable-switcher</code> 切り替え無効の状態 (value: null | 1)</li>
<li><code>pc-switcher</code> スマホ等でのPC表示切り替え中の状態 (value: null | 1)</li>
</ul>


<p>以上、テーマのカスタマイズで是非活用してみてください。</p>

<hr />

<h3>Download:</h3>

<p><a href="http://wordpress.org/extend/plugins/multi-device-switcher/" target="_blank">WordPress のプラグインページからどうぞ。</a></p>

<h3>Installation:</h3>

<p><a href="http://blog.thingslabo.com/archives/000251.html">WordPress プラグイン「Multi Device Switcher」のインストール詳細はこちらからどうぞ。</a></p>

<h3>Code Repository:</h3>

<p><a href="https://github.com/thingsym/multi-device-switcher" target="_blank">thingsym / multi-device-switcher (GitHub)</a></p>

<h3>Licenses:</h3>

<p>Licensed under GPL version 2.0</p>

<h3>Donationware:</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="9L53NELFMHTWW"></p>

<table class="no-border">
<tr><td><input type="hidden" name="on0" value="Donationware">Donationware</td></tr><tr><td><select name="os0">
    <option value="1. Donate">1. Donate $3.00 USD</option>
    <option value="2. Donate">2. Donate $5.00 USD</option>
    <option value="3. Donate">3. Donate $7.00 USD</option>
    <option value="4. Donate" selected="selected">4. Donate $10.00 USD</option>
    <option value="5. Donate">5. Donate $20.00 USD</option>
    <option value="6. Donate">6. Donate $30.00 USD</option>
    <option value="7. Donate">7. Donate $40.00 USD</option>
    <option value="8. Donate">8. Donate $50.00 USD</option>
    <option value="9. Donate">9. Donate $60.00 USD</option>
    <option value="10. Donate">10. Donate $70.00 USD</option>
</select> </td></tr>
</table>


<p><input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/ja_JP/i/scr/pixel.gif" width="1" height="1">
</form></p>]]>
</content>
</entry>

<entry>
<title>WordPressのウェブサイト開発環境 VAW (Vagrant Ansible WordPress) を作りました。</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000402.html" />
<modified>2016-09-12T06:34:17Z</modified>
<issued>2014-12-23T04:45:00Z</issued>
<id>tag:blog.thingslabo.com,2014://1.402</id>
<created>2014-12-23T04:45:00Z</created>
<summary type="text/plain">WordPressのウェブサイト開発環境 VAW (Vagrant Ansible WordPress) を作りました。 WordPress のウェブサイト開発環境 VAW (Vagrant Ansible WordPress) を作りまし...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<h1>WordPressのウェブサイト開発環境 VAW (Vagrant Ansible WordPress) を作りました。</h1>

<p>WordPress のウェブサイト開発環境 <strong>VAW (Vagrant Ansible WordPress)</strong> を作りました。</p>

<div class="textcenter">
<img alt="vargrant_log.png" src="http://blog.thingslabo.com/images/vargrant_log.png" width="160">
<img alt="ansible_logo_black_square_small.png" src="http://blog.thingslabo.com/images/ansible_logo_black_square_small.png" width="160">
<img alt="wordpress-logo-stacked-rgb.png" src="http://blog.thingslabo.com/images/wordpress-logo-stacked-rgb.png" width="160">
</div>

<p>VAW は、WordPress でウェブサイトを構築する開発者、サイト運営者、WordPress のテーマ・プラグイン開発者のための Ansible playbooks です。Vagrant で開発環境やテスト環境を素早く立ち上げて、ウェブサイトの構築や動作検証ができます。もちろん、WordPress テーマやプラグインの開発も。</p>

<p>また、VAW は、開発パートナーやデザイナー、クライアントとポータブルに環境を共有してコラボレーションツールとして活用できます。</p>

<p>VAW の特長は、3つ。</p>

<ol>
<li>様々な組み合わせのサーバとデータベース構成で構築</li>
<li>様々な設定やデータに処理を施した WordPress を構築</li>
<li>Develop &amp; Deploy ツールのインストール</li>
</ol>


<h2>1. サーバ、データベース環境の構築</h2>

<p>サーバは、<strong>Apache</strong>、<strong>nginx</strong> から、データベースは、<strong>MySQL</strong>、<strong>MariaDB</strong>、<strong>Percona MySQL</strong> から構成してサーバとデータベースが構築できます。また、サーバ nginx は、リバースプロキシとして FastCGI 構成で <strong>PHP-FPM</strong> と <strong>HHVM</strong> から、PHP実行環境を構築します。</p>

<p>WordPress の動作確認やウェブサイトのパフォーマンスチューニングなど作った環境でサーバやインフラの検証ができます。</p>

<h2>2. WordPress 環境の構築</h2>

<p>素の設定の WordPress から本番環境のデータやファイルと同期した WordPress までさまさまな環境を想定した WordPress の構築が実現します。</p>

<p>VAW では、WordPress の様々な設定ができます。たとえば、本番環境の WordPress から XML形式でエクスポートしたファイルやデータベースからダンプした SQL ファイルをインポート。画像も本番環境から uploads ディレクトリをコピーして持ってくるだけで VAW で構築した WordPress に自動的に配置して、必要があればサムネイル画像の再生成もしてくれます。本番環境の URL からテスト環境の URL の置換処理もやってくれます。</p>

<p>以上のようにあらかじめデータを用意しておくだけで本番環境と同じ環境が作れます。その設定済みの VAW をデザイナーさんやクライアントと共有するだけでコラボレーションツールにもなります。</p>

<h2>3. Develop &amp; Deploy ツール</h2>

<p>ウェブサイトの構築やテーマやプラグインの開発など用途によって Develop ツールと Deploy ツールがインストールできます。</p>

<p>新しいバージョンの WordPress がリリースされた。とりあえず動作確認だけという場合は、Develop ツールと Deploy ツールを入れないでサクッと WordPress 環境を作ってみたり。ガッツリ開発したい場合は、Develop ツールを入れてウェブサイトを構築したり、WordPress のテーマやプラグインを開発。ウェブサイトの運営保守をしたい場合は、Develop ツールを入れて本番環境とのファイルの更新など。有効化するだけで用途にあったツールがインストールできます。</p>

<p>以下、<a href="https://github.com/thingsym/vaw">GitHub</a> にある VAW の readme-ja.md です。(updated: version 0.4.1 - 2016.09.12)</p>]]>
<![CDATA[<hr>

<h1 id="vaw-vagrant-ansible-wordpress-">VAW (Vagrant Ansible WordPress)</h1>
<p><strong>VAW (Vagrant Ansible WordPress)</strong> は、WordPress でウェブサイトを構築する開発者、サイト運営者、WordPress のテーマ・プラグイン開発者のための Ansible playbooks です。</p>
<p>Vagrant で開発環境やテスト環境を素早く立ち上げて、ウェブサイトの構築や動作検証ができます。もちろん、WordPress テーマやプラグインの開発も。</p>
<p>また、<strong>VAW</strong> は、開発パートナーやデザイナー、クライアントとポータブルに環境を共有してコラボレーションツールとして活用できます。</p>
<h2 id="features">Features</h2>
<h3 id="1-">1. サーバ、データベース環境の構築</h3>
<p>サーバは、<strong>Apache</strong>、<strong>nginx</strong> から、データベースは、<strong>MySQL</strong>、<strong>MariaDB</strong>、<strong>Percona MySQL</strong> から構成してサーバとデータベース環境の構築ができます。</p>
<p>サーバ nginx は、リバースプロキシとして FastCGI 構成で <strong>PHP-FPM</strong> (FastCGI Process Manager) と <strong>HHVM</strong> (HipHop Virtual Machine) から、PHP実行環境を構築します。</p>
<p>サーバ、データベースは基本、素の設定でインストールされますが、設定ファイルの編集でチューニングも可能。</p>
<p>様々な組み合わせのサーバとデータベース構成で検証が可能です。</p>
<h3 id="2-wordpress-">2. WordPress 環境の構築</h3>
<p>様々な設定やデータに処理を施した WordPress を構築します。テストデータや実データでの検証、本番環境のデータやファイルと同期した WordPress の構築が実現します。</p>
<ul>
<li>WordPress 本体のインストールバージョン指定</li>
<li>WordPress 本体の言語指定</li>
<li>インストールディレクトリ指定、サブディレクトリインストール</li>
<li>マルチサイト対応</li>
<li>管理画面の SSL 化</li>
<li>テーマのインストール<ul>
<li>テーマの自動有効化</li>
<li>複数のテーマを一括インストール</li>
<li>ローカルにあるテーマをインストール (開発中テーマや公式ディレクトリ未登録テーマに対応)</li>
</ul>
</li>
<li>プラグインのインストール<ul>
<li>プラグインの自動有効化</li>
<li>複数のプラグインを一括インストール</li>
<li>ローカルにあるプラグインをインストール (開発中プラグインや公式ディレクトリ未登録プラグインに対応)</li>
</ul>
</li>
<li>theme_mod (theme modification value) と Options の設定</li>
<li>パーマリンク構造の設定</li>
<li>データのインポートは 3 つのいずれかからインポートできます<ul>
<li>XML (WXR) 形式</li>
<li>SQLデータ (データベースダンプデータ)</li>
<li>テストデータ (Theme Unit Test)</li>
</ul>
</li>
<li>uploads ディレクトリの wp-content へ自動配置</li>
<li>本番環境の URL からテスト環境の URL に置換処理</li>
<li>サムネイル画像の再生成</li>
</ul>
<h3 id="3-develop-deploy-">3. Develop &amp; Deploy ツール</h3>
<p>プリインストールとしてプログラム言語 PHP のバージョン管理 「phpenv」、PHPパッケージ管理ツール「Composer」、WordPressのコマンドラインツール「WP-CLI」、ソースコードのバージョン管理ツール 「Git」が標準でインストール。</p>
<p>ウェブサイトの構築やテーマやプラグインの開発など用途によって Develop ツールと Deploy ツールがインストールできます。有効化によってインストールされるツールの一覧は Specification を参照。</p>
<h2 id="requirements">Requirements</h2>
<ul>
<li><a href="https://www.virtualbox.org">Virtualbox</a></li>
<li><a href="https://www.vagrantup.com">Vagrant</a> &gt;= 1.8.4</li>
<li><a href="https://www.ansible.com">Ansible</a> &gt;= 2.1.0.0</li>
<li><a href="https://github.com/cogitatio/vagrant-hostsupdater">vagrant-hostsupdater</a> optional (Vagrant plugin)</li>
<li><a href="http://fgrehm.viewdocs.io/vagrant-cachier">vagrant-cachier</a> optional (Vagrant plugin)</li>
<li><a href="https://github.com/dotless-de/vagrant-vbguest">vagrant-vbguest</a> optional (Vagrant plugin)</li>
<li><a href="https://github.com/jvoorhis/vagrant-serverspec">vagrant-serverspec</a> optional (Vagrant plugin)</li>
</ul>
<h2 id="usage">Usage</h2>
<h3 id="1-virtualbox-">1. Virtualbox をインストール</h3>
<p><a href="https://www.virtualbox.org">www.virtualbox.org</a> から環境にあった VirtualBox をダウンロードしてインストールします。</p>
<h3 id="2-vagrant-">2. Vagrant をインストール</h3>
<p><a href="https://www.vagrantup.com">www.vagrantup.com</a> から環境にあった Vagrant をダウンロードしてインストールします。</p>
<h3 id="3-vagrant-plugin-">3. Vagrant plugin をインストール</h3>
<p>必要に応じてターミナル上で Vagrant plugin をインストールします。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-hostsupdater</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-cachier</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-vbguest</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;plugin&nbsp;install&nbsp;vagrant-serverspec</span></span></span></div></pre><h3 id="4-vaw-ansible-playbooks-">4. VAW の Ansible playbooks をダウンロード</h3>
<p>以下のリンクから Vagrantfile と Ansible playbooks 一式をダウンロードします。</p>
<p><a href="https://github.com/thingsym/vaw/archive/master.zip">Zip 形式で VAW をダウンロード</a></p>
<h3 id="5-">5. 仮想環境を立ち上げます</h3>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>cd&nbsp;vaw-x.x.x</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vagrant&nbsp;up</span></span></span></div></pre><p>初回で Box がない場合、Box のダウンロードから始まり、プロビジョニング後、WordPress 環境が立ち上がります。</p>
<h3 id="6-wordpress-">6. ウェブサイトと WordPress 管理画面にアクセス</h3>
<p>初期設定でのウェブサイトへのアクセスは <strong><a href="http://vaw.local/">http://vaw.local/</a></strong> から、WordPress 管理画面は <strong><a href="http://vaw.local/wp-admin/">http://vaw.local/wp-admin/</a></strong> にブラウザでアクセスします。</p>
<h2 id="default-configuration-variables">Default configuration Variables</h2>
<p>初期設定のデータベースと WordPress Admin の ID とパスワードは以下の通りです。プロビジョニング設定ファイルで設定が可能です。</p>
<h4 id="database">Database</h4>
<ul>
<li>ROOT PASSWORD <code style="font-family: Source Code Pro;">admin</code></li>
<li>HOST <code style="font-family: Source Code Pro;">localhost</code></li>
<li>DATABASE NAME <code style="font-family: Source Code Pro;">wordpress</code></li>
<li>USER <code style="font-family: Source Code Pro;">admin</code></li>
<li>PASSWORD <code style="font-family: Source Code Pro;">admin</code></li>
</ul>
<h4 id="wordpress-admin">WordPress Admin</h4>
<ul>
<li>USER <code style="font-family: Source Code Pro;">admin</code></li>
<li>PASSWORD <code style="font-family: Source Code Pro;">admin</code></li>
</ul>
<h2 id="customize-options">Customize Options</h2>
<p>VAW は、設定ファイルを編集することで様々な環境が立ち上がります。カスタマイズできる設定ファイルは 2 種類あります。設定ファイルの編集後、<code style="font-family: Source Code Pro;">vagrant up</code> または、<code style="font-family: Source Code Pro;">vagrant provision</code> するだけ。</p>
<h3 id="vagrant-ruby-">Vagrant 設定ファイル (Ruby)</h3>
<p>Vagrant 設定ファイルは、<strong>Vagrantfile</strong> です。
Vagrant で使う Box の指定 や プライベート IP アドレス、ホストネーム、ドキュメントルートの設定をします。</p>
<p>複数の環境を立ち上げる場合、ディレクトリ名を変更の上、他の環境と重ならないように <code style="font-family: Source Code Pro;">vm_ip</code> と <code style="font-family: Source Code Pro;">vm_hostname</code> を書き換えてください。</p>
<p>パブリックネットワークを使うと同じ LAN 内の端末から Vagrant 仮想環境にアクセスすることができます。パブリックネットワークを使うには、bridge 接続するための IP アドレスを設定します。その場合、<code style="font-family: Source Code Pro;">vm_hostname</code> に同じIP アドレスを設定することをお薦めします。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Vagrant&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_box&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;vaw/centos7-default&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_box_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;&gt;=&nbsp;0&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_ip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;192.168.46.49&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_hostname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;vaw.local&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vm_document_root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;/var/www/html&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>public_ip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#39;&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>vbguest_auto_update&nbsp;=&nbsp;false</span></span></span></div></pre><ul>
<li><code style="font-family: Source Code Pro;">vm_box</code> (required) Vagrant Box 名 (default: <code style="font-family: Source Code Pro;">vaw/centos7-default</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_box_version</code> (required) version of Vagrant Box (default: <code style="font-family: Source Code Pro;">&gt;= 0</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_ip</code> (required) プライベート IP アドレス (default: <code style="font-family: Source Code Pro;">192.168.46.49</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_hostname</code> (required) ホストネーム (default: <code style="font-family: Source Code Pro;">vaw.local</code>)</li>
<li><code style="font-family: Source Code Pro;">vm_document_root</code> (required) ドキュメントルート (default: <code style="font-family: Source Code Pro;">/var/www/html</code>)<ul>
<li><code style="font-family: Source Code Pro;">wordpress</code> ディレクトリを自動的に作成して同期します</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">public_ip</code> bridge 接続する IP アドレス (default: ``)</li>
<li><code style="font-family: Source Code Pro;">vbguest_auto_update</code> update VirtualBox Guest Additions (default: false / value: true | false)</li>
</ul>
<h3 id="-yaml-">プロビジョニング設定ファイル (YAML)</h3>
<p>プロビジョニング設定ファイルは、<strong>group_vars/all.yml</strong> です。
YAML 形式でサーバ、データベース、WordPress 環境の設定や Develop &amp; Deploy ツールの有効化ができます。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Server&nbsp;&amp;&nbsp;Database&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;apache&#39;&nbsp;&nbsp;&nbsp;#&nbsp;apache|nginx</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;fastcgi&nbsp;is&nbsp;possible&nbsp;only&nbsp;server&nbsp;&#39;nginx&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>fastcgi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;php-fpm&#39;&nbsp;&nbsp;#&nbsp;php-fpm|hhvm</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;mysql&#39;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;mysql|mariadb|percona</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_root_password&nbsp;&nbsp;&nbsp;:&nbsp;&#39;admin&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;localhost&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;wordpress&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;admin&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;admin&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>db_prefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;wp_&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;WordPress&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;VAW&nbsp;(Vagrant&nbsp;Ansible&nbsp;WordPress)&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>admin_user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;admin&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>admin_password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;admin&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>admin_email&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;hoge@example.com&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;e.g.&nbsp;latest,&nbsp;4.1,&nbsp;4.1-beta1</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;see&nbsp;Release&nbsp;Archive&nbsp;-&nbsp;</span><span class="markup underline link https hyperlink"><span>https://wordpress.org/download/release-archive/</span></span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;3.5.2&nbsp;or&nbsp;later&nbsp;to&nbsp;work&nbsp;properly</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;latest&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;e.g.&nbsp;en_US,&nbsp;ja</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;see&nbsp;wordpress-i18n&nbsp;list&nbsp;-&nbsp;</span><span class="markup underline link http hyperlink"><span>http://svn.automattic.com/wordpress-i18n/</span></span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>lang&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;en_US&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;in&nbsp;own&nbsp;directory&nbsp;or&nbsp;subdirectory&nbsp;install.</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;see&nbsp;</span><span class="markup underline link http hyperlink"><span>http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory</span></span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>wp_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;&nbsp;&nbsp;&nbsp;#e.g.&nbsp;/wordpress</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>wp_site_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;&nbsp;&nbsp;&nbsp;#e.g.&nbsp;/wordpress</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>multisite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>ssl_admin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;theme&nbsp;slug|url|zip&nbsp;(local&nbsp;path,&nbsp;/vagrant/themes/~.zip)&nbsp;|empty&nbsp;(&#39;&#39;)</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>activate_theme&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;themes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;yoko</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Responsive</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;plugin&nbsp;slug|url|zip&nbsp;(local&nbsp;path,&nbsp;/vagrant/plugins/~.zip)&nbsp;|empty&nbsp;(&#39;&#39;)</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>activate_plugins&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>-&nbsp;theme-check</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;plugin-check</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;log-deprecated-notices</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;debug-bar</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;query-monitor</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;broken-link-checker</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>plugins&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>-&nbsp;developer</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;monster-widget</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;wordpress-beta-tester</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;theme_mod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background_color:&nbsp;&#39;cccccc&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;see&nbsp;Option&nbsp;Reference&nbsp;-&nbsp;</span><span class="markup underline link http hyperlink"><span>http://codex.wordpress.org/Option_Reference</span></span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blogname:&nbsp;&#39;blog&nbsp;title&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blogdescription:&nbsp;&#39;blog&nbsp;description&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;e.g.&nbsp;/%year%/%monthnum%/%postname%</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;see&nbsp;</span><span class="markup underline link http hyperlink"><span>http://codex.wordpress.org/Using_Permalinks</span></span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>permalink_structure&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>structure&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;category&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;Any&nbsp;one&nbsp;of&nbsp;three&nbsp;ways&nbsp;to&nbsp;import</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>import_xml_data&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;&nbsp;&nbsp;&nbsp;#&nbsp;local&nbsp;path,&nbsp;/vagrant/import/~.xml</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>import_db_data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;&nbsp;&nbsp;&nbsp;#&nbsp;local&nbsp;path,&nbsp;/vagrant/import/~.sql</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>theme_unit_test&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>replace_old_url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;&#39;&nbsp;&nbsp;&nbsp;#&nbsp;to&nbsp;vm_hostname&nbsp;from&nbsp;old&nbsp;url</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>regenerate_thumbnails&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;Develop&nbsp;&amp;&nbsp;Deploy&nbsp;Settings&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>WP_DEBUG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;true&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>SAVEQUERIES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;true&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>php_version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;7.0.7</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>develop_tools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>deploy_tools&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;false&nbsp;&nbsp;&nbsp;#&nbsp;true|false</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>##&nbsp;That&#39;s&nbsp;all,&nbsp;stop&nbsp;setting.&nbsp;Let&#39;s&nbsp;vagrant&nbsp;up!!&nbsp;##</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;</span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>WP_URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;{{&nbsp;HOSTNAME&nbsp;}}{{&nbsp;wp_site_path&nbsp;}}&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>WP_PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&#39;{{&nbsp;DOCUMENT_ROOT&nbsp;}}{{&nbsp;wp_dir&nbsp;}}&#39;</span></span></span></div></pre><h4 id="server-database-settings">Server &amp; Database Settings</h4>
<ul>
<li><code style="font-family: Source Code Pro;">server</code> (required) ウェブサーバ名 (default: <code style="font-family: Source Code Pro;">apache</code> / value: <code style="font-family: Source Code Pro;">apache</code> | <code style="font-family: Source Code Pro;">nginx</code>)</li>
<li><code style="font-family: Source Code Pro;">fastcgi</code> fastCGI 名 (default: <code style="font-family: Source Code Pro;">php-fpm</code> / value: <code style="font-family: Source Code Pro;">php-fpm</code> | <code style="font-family: Source Code Pro;">hhvm</code>)<ul>
<li><code style="font-family: Source Code Pro;">fastcgi</code> は <code style="font-family: Source Code Pro;">server &#39;nginx&#39;</code> のみ可能</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">database</code> (required) データベース名 (default: <code style="font-family: Source Code Pro;">mysql</code> / value: <code style="font-family: Source Code Pro;">mysql</code> | <code style="font-family: Source Code Pro;">mariadb</code> | <code style="font-family: Source Code Pro;">percona</code>)</li>
<li><code style="font-family: Source Code Pro;">db_root_password</code> (required) データベースの root パスワード (default: <code style="font-family: Source Code Pro;">admin</code>)</li>
<li><code style="font-family: Source Code Pro;">db_host</code> (required) データベースホスト名 (default: <code style="font-family: Source Code Pro;">localhost</code>)</li>
<li><code style="font-family: Source Code Pro;">db_name</code> (required) データベース名 (default: <code style="font-family: Source Code Pro;">wordpress</code>)</li>
<li><code style="font-family: Source Code Pro;">db_user</code> (required) データベースユーザ名 (default: <code style="font-family: Source Code Pro;">admin</code>)</li>
<li><code style="font-family: Source Code Pro;">db_password</code> (required) データベースパスワード (default: <code style="font-family: Source Code Pro;">admin</code>)</li>
<li><code style="font-family: Source Code Pro;">db_prefix</code> データベースプレフィックス名 (default: <code style="font-family: Source Code Pro;">wp_</code>)</li>
</ul>
<h4 id="wordpress-settings">WordPress Settings</h4>
<ul>
<li><code style="font-family: Source Code Pro;">title</code> サイトタイトル (default: <code style="font-family: Source Code Pro;">VAW (Vagrant Ansible WordPress)</code>)</li>
<li><code style="font-family: Source Code Pro;">admin_user</code> (required) WordPress 管理者ユーザー名 (default: <code style="font-family: Source Code Pro;">admin</code>)</li>
<li><code style="font-family: Source Code Pro;">admin_password</code> (required) WordPress 管理者パスワード (default: <code style="font-family: Source Code Pro;">admin</code>)</li>
<li><code style="font-family: Source Code Pro;">admin_email</code> (required) WordPress 管理者メールアドレス (default: <code style="font-family: Source Code Pro;">hoge@example.com</code>)</li>
<li><p><code style="font-family: Source Code Pro;">version</code> (required) WordPress 本体のバージョン (default: <code style="font-family: Source Code Pro;">latest</code>)</p>
<ul>
<li>e.g. <code style="font-family: Source Code Pro;">latest</code>, <code style="font-family: Source Code Pro;">4.1</code>, <code style="font-family: Source Code Pro;">4.1-beta1</code></li>
<li><a href="https://wordpress.org/download/release-archive/">Release Archive</a> を参照</li>
<li>バージョン 3.5.2 以降で正常に動作します</li>
</ul>
</li>
<li><p><code style="font-family: Source Code Pro;">lang</code> (required) WordPress 本体の言語 (default: <code style="font-family: Source Code Pro;">en_US</code>)</p>
<ul>
<li>e.g. <code style="font-family: Source Code Pro;">en_US</code>, <code style="font-family: Source Code Pro;">ja</code>, ...</li>
<li><a href="http://svn.automattic.com/wordpress-i18n/">wordpress-i18n list</a> を参照</li>
</ul>
</li>
<li><p><code style="font-family: Source Code Pro;">wp_dir</code> サブディレクトリにインストールするディレクトリパス (default: ドキュメントルートにインストール)</p>
</li>
<li><p><code style="font-family: Source Code Pro;">wp_site_path</code> サイトパス (default: ドキュメントルート)</p>
<ul>
<li><code style="font-family: Source Code Pro;">wp_dir</code> と <code style="font-family: Source Code Pro;">wp_site_path</code> が同じパスの場合、ディレクトリにインストールされます。</li>
<li><code style="font-family: Source Code Pro;">wp_dir</code> と <code style="font-family: Source Code Pro;">wp_site_path</code> のパスが違う場合、サブディレクトリインストールになります。必ず <code style="font-family: Source Code Pro;">wp_site_path</code> は <code style="font-family: Source Code Pro;">wp_dir</code> より一つ上のディレクトリに置いてください。</li>
<li><a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">Giving WordPress Its Own Directory</a> を参照</li>
</ul>
</li>
<li><p><code style="font-family: Source Code Pro;">multisite</code> マルチサイトの有効化 (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</p>
</li>
<li><code style="font-family: Source Code Pro;">ssl_admin</code> 管理画面 SSL 化の有効化 (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
<li><code style="font-family: Source Code Pro;">activate_theme</code> テーマをインストール・有効化 (default: default theme)<ul>
<li>デフォルトテーマ <code style="font-family: Source Code Pro;">&#39;&#39;</code>, <code style="font-family: Source Code Pro;">theme slug</code>, <code style="font-family: Source Code Pro;">zip file URL</code>,  <code style="font-family: Source Code Pro;">local zip file path</code> から設定</li>
<li>ローカルにある zip ファイルパスは <code style="font-family: Source Code Pro;">/vagrant/themes/~.zip</code></li>
<li>自動的に有効化します</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">themes</code> テーマをインストール (複数可)<ul>
<li>YAML 形式のハッシュの配列書式で設定 <code style="font-family: Source Code Pro;">theme slug</code>, <code style="font-family: Source Code Pro;">zip file URL</code>, <code style="font-family: Source Code Pro;">local zip file path</code></li>
<li>ローカルにある zip ファイルパスは <code style="font-family: Source Code Pro;">/vagrant/themes/~.zip</code></li>
<li>設定を無効にする場合は、行頭に <code style="font-family: Source Code Pro;">#</code> を付けてコメントアウトします</li>
</ul>
</li>
</ul>
<p>設定例</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>themes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>-&nbsp;yoko</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Responsive</span></span></span></div></pre><p>設定を無効にする場合</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;themes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;yoko</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Responsive</span></span></span></div></pre><ul>
<li><code style="font-family: Source Code Pro;">activate_plugins</code> プラグインのインストール・有効化 (複数可)<ul>
<li>YAML 形式のハッシュの配列書式で設定 <code style="font-family: Source Code Pro;">plagin slug</code>, <code style="font-family: Source Code Pro;">zip file URL</code>, <code style="font-family: Source Code Pro;">local zip file path</code></li>
<li>ローカルにある zip ファイルパスは <code style="font-family: Source Code Pro;">/vagrant/plagins/~.zip</code></li>
<li>自動的に有効化します</li>
<li>設定を無効にする場合は、行頭に <code style="font-family: Source Code Pro;">#</code> を付けてコメントアウトします</li>
</ul>
</li>
</ul>
<p>設定例</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>activate_plugins&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>-&nbsp;theme-check</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;plugin-check</span></span></span></div></pre><p>設定を無効にする場合</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;activate_plugins&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;theme-check</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;plugin-check</span></span></span></div></pre><ul>
<li><code style="font-family: Source Code Pro;">plugins</code> プラグインのインストール<ul>
<li>YAML 形式のハッシュの配列書式で設定 <code style="font-family: Source Code Pro;">plagin slug</code>, <code style="font-family: Source Code Pro;">zip file URL</code>, <code style="font-family: Source Code Pro;">local zip file path</code></li>
<li>ローカルにある zip ファイルパスは <code style="font-family: Source Code Pro;">/vagrant/plagins/~.zip</code></li>
<li>設定を無効にする場合は、行頭に <code style="font-family: Source Code Pro;">#</code> を付けてコメントアウトします</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">theme_mod</code> theme_mod (theme modification value) の設定<ul>
<li><a href="http://codex.wordpress.org/Function_Reference/set_theme_mod">set_theme_mod()</a> を参照</li>
<li>YAML 形式のハッシュのネスト書式で設定</li>
<li>設定を無効にする場合は、行頭に <code style="font-family: Source Code Pro;">#</code> を付けてコメントアウトします</li>
</ul>
</li>
</ul>
<p>設定例</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>theme_mod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>background_color:&nbsp;&#39;cccccc&#39;</span></span></span></div></pre><p>設定を無効にする場合</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;theme_mod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background_color:&nbsp;&#39;cccccc&#39;</span></span></span></div></pre><ul>
<li><code style="font-family: Source Code Pro;">options</code> オプションの設定<ul>
<li><a href="http://codex.wordpress.org/Function_Reference/update_option">update_option()</a> と <a href="http://codex.wordpress.org/Option_Reference">Option Reference</a> を参照</li>
<li>YAML 形式のハッシュのネスト書式で設定</li>
<li>設定を無効にする場合は、行頭に <code style="font-family: Source Code Pro;">#</code> を付けてコメントアウトします</li>
</ul>
</li>
</ul>
<p>設定例</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="meta paragraph text"><span>blogname:&nbsp;&#39;blog&nbsp;title&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blogdescription:&nbsp;&#39;blog&nbsp;description&#39;</span></span></span></div></pre><p>設定を無効にする場合</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blogname:&nbsp;&#39;blog&nbsp;title&#39;</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blogdescription:&nbsp;&#39;blog&nbsp;description&#39;</span></span></span></div></pre><ul>
<li><p><code style="font-family: Source Code Pro;">permalink_structure</code> パーマリンク構造の設定</p>
<ul>
<li>以下の3つのパーマリンク構造の設定できます</li>
<li><a href="http://codex.wordpress.org/Using_Permalinks">Using Permalinks</a> を参照</li>
<li><code style="font-family: Source Code Pro;">structure</code> Structure Tags で投稿のパーマリンク構造を設定</li>
<li><code style="font-family: Source Code Pro;">category</code> カテゴリーアーカイブのカテゴリープレフィックスを設定</li>
<li><code style="font-family: Source Code Pro;">tag</code> タグアーカイブのタグプレフィックスを設定</li>
</ul>
</li>
<li><p><code style="font-family: Source Code Pro;">import_xml_data</code> WXR 形式のファイルパス <code style="font-family: Source Code Pro;">/vagrant/import/~.xml</code></p>
<ul>
<li>インポートは以下の3つのいずれか (<code style="font-family: Source Code Pro;">import_xml_data</code>, <code style="font-family: Source Code Pro;">import_db_data</code>, <code style="font-family: Source Code Pro;">theme_unit_test</code>)</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">import_db_data</code> SQL ダンプファイルパス <code style="font-family: Source Code Pro;">/vagrant/import/~.sql</code><ul>
<li>インポートは以下の3つのいずれか (<code style="font-family: Source Code Pro;">import_xml_data</code>, <code style="font-family: Source Code Pro;">import_db_data</code>, <code style="font-family: Source Code Pro;">theme_unit_test</code>)</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">theme_unit_test</code> テーマユニットテストデータのインポート有効化 (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)<ul>
<li>インポートは以下の3つのいずれか (<code style="font-family: Source Code Pro;">import_xml_data</code>, <code style="font-family: Source Code Pro;">import_db_data</code>, <code style="font-family: Source Code Pro;">theme_unit_test</code>)</li>
</ul>
</li>
<li><code style="font-family: Source Code Pro;">replace_old_url</code> <code style="font-family: Source Code Pro;">old url</code> から <code style="font-family: Source Code Pro;">vm_hostname</code> に置換</li>
<li><code style="font-family: Source Code Pro;">regenerate_thumbnails</code> サムネイル画像の再生成を有効化 (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
</ul>
<h4 id="develop-deploy-settings">Develop &amp; Deploy Settings</h4>
<ul>
<li><code style="font-family: Source Code Pro;">WP_DEBUG</code> デバックモードを有効化 (default: <code style="font-family: Source Code Pro;">true</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
<li><code style="font-family: Source Code Pro;">SAVEQUERIES</code> データベースクエリを保存 (default: <code style="font-family: Source Code Pro;">true</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
<li><code style="font-family: Source Code Pro;">php_version</code> PHPバージョン (default: 7.0.7)</li>
<li><code style="font-family: Source Code Pro;">develop_tools</code> Develop ツールを有効化 (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
<li><code style="font-family: Source Code Pro;">deploy_tools</code> Deploy ツールを有効化 (default: <code style="font-family: Source Code Pro;">false</code> / value: <code style="font-family: Source Code Pro;">true</code> | <code style="font-family: Source Code Pro;">false</code>)</li>
</ul>
<h2 id="directory-layout">Directory Layout</h2>
<p>VAW のディレクトリ構成は以下の通りです。本ディレクトリは、ゲストOS側で <code style="font-family: Source Code Pro;">/vagrant</code> に同期します。また、<code style="font-family: Source Code Pro;">wordpress</code> は自動で作成されて Vagrant 設定ファイルで設定した Document Root <code style="font-family: Source Code Pro;">vm_document_root</code> に同期します。</p>
<p><code style="font-family: Source Code Pro;">uploads</code> は WordPress の wp-content にある画像を格納したディレクトリです。本番環境から本ディレクトリに <code style="font-family: Source Code Pro;">uploads</code> をコピーして置くとプロビジョニング時に構築した WordPress に自動で配置されます。データベースのダンプデータのインポートと url の置換、サムネイル画像の再生成を活用して構築すると、本番環境と同じ環境が作れます。すべてプロビジョニング設定ファイルから設定できます。</p>
<h3 id="full-layout">Full Layout</h3>
<ul>
<li>backup (バックアップファイルを格納。無い場合、バックアップスクリプト起動時に自動作成)</li>
<li>command (シェルスクリプトを格納)</li>
<li>config (チューニング用設定ファイルを格納)</li>
<li>config.sample (チューニング用設定ファイルサンプル)</li>
<li>group_vars (Ansible のプロビジョニング設定ファイルを格納)<ul>
<li>all.yml (プロビジョニング設定ファイル)</li>
</ul>
</li>
<li>hosts<ul>
<li>local (inventory file)</li>
</ul>
</li>
<li>import (インポートデータを格納)</li>
<li>plugins (zip 形式のプラグインファイルを格納)</li>
<li>Rakefile (ServerSpec の Rakefile)</li>
<li>readme-ja.md</li>
<li>readme.md</li>
<li>roles (role 毎の Ansible playbook を格納)</li>
<li>site.yml (Ansible playbook 本体ファイル)</li>
<li>spec (ServerSpec spec file を格納)<ul>
<li>localhost</li>
<li>spec_helper.rb</li>
</ul>
</li>
<li>themes (zip 形式のテーマファイルを格納)</li>
<li>uploads (wp-content にある uploads ディレクトリ)</li>
<li>Vagrantfile (Vagrant 設定ファイル)</li>
<li>wordpress (Document Root に同期するディレクトリ、無い場合、<code style="font-family: Source Code Pro;">vagrant up</code> 時に自動作成)</li>
</ul>
<h3 id="minimum-layout">Minimum Layout</h3>
<p>VAW は、以下の最小単位のディレクトリ構成でも環境が立ち上がります。</p>
<ul>
<li>group_vars (Ansible のプロビジョニング設定ファイルを格納)<ul>
<li>all.yml (プロビジョニング設定ファイル)</li>
</ul>
</li>
<li>hosts<ul>
<li>local (inventory file)</li>
</ul>
</li>
<li>roles (Ansible playbook を格納)</li>
<li>site.yml (Ansible playbook 本体ファイル)</li>
<li>Vagrantfile (Vagrant 設定ファイル)</li>
<li>wordpress (Document Root に同期するディレクトリ、無い場合、<code style="font-family: Source Code Pro;">vagrant up</code> 時に自動作成)</li>
</ul>
<h2 id="vagrant-box">Vagrant Box</h2>
<p>Box は centos-7.x x86_64 系 と centos-6.x x86_64 系に対応しています。</p>
<p>VAW では、CentOS 7 と CentOS 6 用に 2 つずつ Box を用意しています。デフォルト設定のプロビジョニング済みの Box <code style="font-family: Source Code Pro;">vaw/centos*-default</code> と デフォルト設定に Develop ツールと Deploy ツールを有効化したプロビジョニング済みの Box <code style="font-family: Source Code Pro;">vaw/centos*-full</code>。真っさらな状態からのプロビジョニングと比べて短時間で環境が立ち上がります。</p>
<h3 id="centos-7">CentOS 7</h3>
<ul>
<li><a href="https://atlas.hashicorp.com/vaw/boxes/centos7-default">vaw/centos7-default</a></li>
<li><a href="https://atlas.hashicorp.com/vaw/boxes/centos7-full">vaw/centos7-full</a></li>
</ul>
<h3 id="centos-6">CentOS 6</h3>
<ul>
<li><a href="https://atlas.hashicorp.com/vaw/boxes/centos6-default">vaw/centos6-default</a></li>
<li><a href="https://atlas.hashicorp.com/vaw/boxes/centos6-full">vaw/centos6-full</a></li>
</ul>
<h2 id="specification">Specification</h2>
<h3 id="server-selectable-">Server (Selectable)</h3>
<ul>
<li><a href="http://httpd.apache.org">Apache</a></li>
<li><a href="http://nginx.org">nginx</a></li>
</ul>
<h3 id="fastcgi-selectable-only-nginx-">FastCGI (Selectable, Only nginx)</h3>
<ul>
<li><a href="http://php-fpm.org">PHP-FPM</a> (FastCGI Process Manager)</li>
<li><a href="http://hhvm.com">HHVM</a> (HipHop Virtual Machine)</li>
</ul>
<h3 id="database-selectable-">Database (Selectable)</h3>
<ul>
<li><a href="http://www.mysql.com">MySQL</a></li>
<li><a href="https://mariadb.org">MariaDB</a></li>
<li><a href="http://www.percona.com/software/percona-server">Percona MySQL</a></li>
</ul>
<h3 id="pre-installing">Pre-installing</h3>
<ul>
<li><a href="https://wordpress.org">WordPress</a></li>
<li><a href="https://github.com/madumlao/phpenv">phpenv</a></li>
<li><a href="https://php-build.github.io">php-build</a></li>
<li><a href="https://secure.php.net">PHP</a> (Zend OPcache, APCu) via <a href="https://github.com/madumlao/phpenv">phpenv</a></li>
<li><a href="https://getcomposer.org/">Composer</a> via <a href="https://github.com/madumlao/phpenv">phpenv</a></li>
<li><a href="https://www.openssl.org">OpenSSL</a> (Selectable)</li>
<li><a href="http://wp-cli.org">WP-CLI</a></li>
<li><a href="http://git-scm.com">Git</a></li>
</ul>
<h3 id="develop-tools-activatable-">Develop Tools (Activatable)</h3>
<ul>
<li><a href="https://subversion.apache.org">Subversion</a></li>
<li><a href="https://www.gnu.org/software/gettext/">gettext</a></li>
<li><a href="https://github.com/nodenv/nodenv">nodenv</a></li>
<li><a href="http://nodejs.org">Node.js</a> via <a href="https://github.com/nodenv/nodenv">nodenv</a></li>
<li><a href="https://www.npmjs.com">npm</a></li>
<li><a href="http://gruntjs.com">Grunt</a></li>
<li><a href="http://gulpjs.com">gulp.js</a></li>
<li><a href="Bower">Bower</a></li>
<li><a href="http://codex.wordpress.org/I18n_for_WordPress_Developers">WordPress i18n tools</a></li>
<li><a href="http://xdebug.org">Xdebug</a></li>
<li><a href="https://phpunit.de">PHPUnit</a></li>
<li><a href="https://github.com/giorgiosironi/phpunit-selenium">PHPUnit Selenium</a></li>
<li><a href="https://github.com/squizlabs/PHP_CodeSniffer">PHP_CodeSniffer</a> &amp; <a href="https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards">WordPress Coding Standards</a></li>
<li>Opcache Web Viewer (<a href="https://github.com/rlerdorf/opcache-status">Opcache-Status</a>, <a href="https://github.com/amnuts/opcache-gui">opcache-gui</a>, <a href="https://gist.github.com/ck-on/4959032/">ocp.php</a>)</li>
<li><a href="https://github.com/wg/wrk">wrk - Modern HTTP benchmarking tool</a></li>
<li><a href="https://github.com/es-analysis/plato">plato</a></li>
<li><a href="https://github.com/t32k/stylestats">stylestats</a></li>
<li><a href="https://phpmd.org/">PHPMD</a></li>
<li><a href="https://github.com/jokkedk/webgrind">webgrind</a></li>
</ul>
<h3 id="deploy-tools-activatable-">Deploy Tools (Activatable)</h3>
<ul>
<li><a href="http://capistranorb.com">Capistrano</a></li>
<li><a href="http://www.fabfile.org">Fabric</a></li>
<li><a href="http://scttnlsn.github.io/dandelion/">Dandelion</a></li>
<li><a href="https://github.com/welaika/wordmove">Wordmove</a></li>
</ul>
<h3 id="other">Other</h3>
<ul>
<li><a href="https://github.com/rbenv/rbenv">rbenv</a></li>
<li><a href="https://github.com/sstephenson/ruby-build">ruby-build</a></li>
<li><a href="https://www.ruby-lang.org/">Ruby</a> via <a href="https://github.com/rbenv/rbenv">rbenv</a></li>
</ul>
<h3 id="helper-command">Helper command</h3>
<ul>
<li>after_provision.sh</li>
<li>before_provision.sh</li>
<li>db_backup.sh</li>
<li>phpenv.sh</li>
</ul>
<h2 id="helper-command">Helper command</h2>
<p>VAW には、便利なスクリプトを用意しています。ターミナル上でスクリプトを走らせるだけ。データベースのデータバックアップや PHP の複数バージョンインストール、実行環境の切り替えができます。</p>
<h3 id="db_backup-sh">db_backup.sh</h3>
<p>データベースのデータをバックアップします。<code style="font-family: Source Code Pro;">backup</code> フォルダに <code style="font-family: Source Code Pro;">backup-%Y%m%d%H%M%S.sql</code> 形式で保存します。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>cd&nbsp;/var/www/html</span></span></span></div><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/db_backup.sh</span></span></span></div></pre><h3 id="phpenv-sh">phpenv.sh</h3>
<p>指定したバージョンの PHP 実行環境を整えます。指定バージョンの PHP がインストールできます。PHPバージョン切り替えを行います。Apache や PHP-FPM のサーバ設定環境を切り替えて再起動します。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>/vagrant/command/phpenv.sh&nbsp;7.0.7</span></span></span></div></pre><h2 id="custom-config">Custom Config</h2>
<p>ディレクトリ <code style="font-family: Source Code Pro;">config</code> に編集したチューニング用設定ファイルを追加すると、プロビジョニング時に配置します。
チューニング用設定ファイルは以下の通り。</p>
<ul>
<li>default-ruby-gems.j2</li>
<li>default-node-packages.j2</li>
<li>httpd.conf.centos6.j2</li>
<li>httpd.conf.centos7.j2</li>
<li>httpd.www.conf.centos7.j2</li>
<li>my.cnf.j2</li>
<li>nginx.conf.j2</li>
<li>nginx.multisite.conf.j2</li>
<li>nginx.wordpress.conf.j2</li>
<li>nginx.wordpress.multisite.conf.j2</li>
<li>php-build.default_configure_options.j2</li>
<li>php.conf.j2</li>
</ul>
<h2 id="vagrant-vagrant-cachier-">Vagrantプラグイン vagrant-cachier でプロビジョニング時間の短縮</h2>
<p>Vagrantプラグイン <strong>vagrant-cachier</strong> をインストールするとプロビジョニング時間の短縮ができます。</p>
<p>キャッシュは Box 単位で必要なパッケージがキャッシュされて、同一の Box を利用して複数の環境を立ち上げるとそのキャッシュを利用したプロビジョニングを始めるので、時間の短縮が試せます。</p>
<h4 id="-">キャッシュの削除方法</h4>
<p>キャッシュの場所は、ホスト側の以下にあります。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>ls&nbsp;-al&nbsp;$HOME/.vagrant.d/cache/</span></span></span></div></pre><p>キャッシュの削除は、Box によって以下のコマンドを。</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>rm&nbsp;-rf&nbsp;$HOME/.vagrant.d/cache/vaw/centos7-default</span></span></span></div></pre><p>または、</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>rm&nbsp;-rf&nbsp;$HOME/.vagrant.d/cache/vaw/centos7-full</span></span></span></div></pre><p>ほかの Box を使っている場合の記法は、</p>
<pre class="editor-colors lang-text"><div class="line"><span class="text plain"><span class="meta paragraph text"><span>rm&nbsp;-rf&nbsp;$HOME/.vagrant.d/cache/&lt;box-name&gt;/&lt;optional-bucket-name&gt;</span></span></span></div></pre><p>詳しくは、<a href="http://fgrehm.viewdocs.io/vagrant-cachier/usage">vagrant-cachier Usage</a> を参考に。</p>
<h2 id="-vagrant-maneger-">黒い画面が苦手な人も Vagrant Maneger で簡単に環境が立ち上がります</h2>
<p>デザイナーやウェブサイト運営者など普段ターミナルに馴染みがない方や黒い画面が苦手だなぁと思っている方は Vagrant Maneger の導入をお薦めします。インストールすると、メニューバーにアイコンのメニューが追加されます。後はダウンロードした VAW をブックマークに登録して、メニューから <code style="font-family: Source Code Pro;">UP</code> を選ぶだけで環境が立ち上ります。Vagrant で操作する基本コマンドもほとんど用意されていて、コマンドを打つことから解放されたい方はどうぞ。</p>
<p><a href="http://vagrantmanager.com">Vagrant Maneger のインストールはこちらから</a></p>
<h2 id="how-to-contribute">How to contribute</h2>
<p>Small patches and bug reports can be submitted a issue tracker in Github. Forking on Github is another good way. You can send a pull request.</p>
<p>If you would like to contribute, here are some notes and guidlines.</p>
<ul>
<li>All development happens on the <strong>develop</strong> branch, so it is always the most up-to-date</li>
<li>The <strong>master</strong> branch only contains tagged releases</li>
<li>If you are going to be submitting a pull request, please submit your pull request to the <strong>develop</strong> branch</li>
<li>See about <a href="https://help.github.com/articles/fork-a-repo/">forking</a> and <a href="https://help.github.com/articles/using-pull-requests/">pull requests</a></li>
</ul>
<h2 id="changelog">Changelog</h2>
<ul>
<li>version 0.4.1 - 2016.09.10<ul>
<li>fix inline shell in Vagrantfile</li>
<li>fix nodejs version</li>
</ul>
</li>
<li>version 0.4.0 - 2016.08.22<ul>
<li>bump up php 7.0.7</li>
<li>change to package module from yum module</li>
<li>change default box to CentOS 7 from CentOS 6</li>
<li>add synced_folder /vagrant</li>
<li>add vagrant-vbguest</li>
<li>change to yum_repository module from template module</li>
<li>fix home_dir path into playbooks</li>
<li>add phpenv-composer, remove composer role</li>
<li>fix phpenv role</li>
<li>add nodenv, remove nodejs, npm</li>
<li>change provision to ansible_local from inline shell</li>
<li>remove RepoForge repository</li>
<li>add webgrind</li>
<li>add phpmd</li>
<li>add prestissimo</li>
<li>fix re2c via yum</li>
<li>fix tests</li>
<li>add gulp-cli and npm-check-updates, remove gulp</li>
<li>change to become, since sudo has been deprecated</li>
<li>fix phpenv.sh</li>
</ul>
</li>
<li>version 0.3.3 - 2016.05.31<ul>
<li>fix playbooks</li>
<li>remove compass gem</li>
<li>refactoring phpenv.sh</li>
<li>disable OPcache</li>
</ul>
</li>
<li>version 0.3.2 - 2016.02.09<ul>
<li>add custom config</li>
<li>remove server tuning</li>
</ul>
</li>
<li>version 0.3.1 - 2016.01.18<ul>
<li>fix yum releasever version</li>
</ul>
</li>
<li>version 0.3.0 - 2015.12.21<ul>
<li>fix Vagrantfile</li>
<li>fix wp-cli role, compatible with WordPress 4.4</li>
<li>improve hhvm role</li>
<li>improve command phpenv.sh</li>
<li>support CentOS 7 x86-64</li>
</ul>
</li>
<li>version 0.2.1 - 2015.10.09<ul>
<li>add stylestats</li>
<li>add plato</li>
</ul>
</li>
<li>version 0.2.0 - 2015.08.31<ul>
<li>fix Fabric</li>
<li>fix WordPress plugins</li>
<li>fix rbenv and hhvm, MariaDB</li>
<li>fix memory 1.5GB</li>
<li>remove php55 and php-fpm roles</li>
<li>add command phpenv.sh</li>
<li>add phpenv, replaced from php</li>
</ul>
</li>
<li>version 0.1.8 - 2015.08.04<ul>
<li>fix WordPress plugins</li>
<li>add PHPUnit Selenium</li>
</ul>
</li>
<li>version 0.1.7 - 2015.07.06<ul>
<li>add public_network</li>
</ul>
</li>
<li>version 0.1.6 - 2015.06.15<ul>
<li>add vm_box_version</li>
</ul>
</li>
<li>version 0.1.5 - 2015.06.04<ul>
<li>add Fabric</li>
<li>add wrk</li>
<li>add command db_backup.sh</li>
<li>nginx tuning</li>
</ul>
</li>
<li>version 0.1.4 - 2015.04.29<ul>
<li>fix Ansible 1.9.x</li>
</ul>
</li>
<li>version 0.1.3 - 2015.02.17<ul>
<li>fix fastcgi_spec.rb</li>
</ul>
</li>
<li>version 0.1.2 - 2015.01.31<ul>
<li>change how to set the environment variables to .bash_profile</li>
<li>fix Vagrantfile</li>
</ul>
</li>
<li>version 0.1.1 - 2015.01.14<ul>
<li>change setting format</li>
<li>fix yum repository metadata</li>
<li>add WordPress options</li>
<li>add sass and compass gems</li>
<li>fix wp-cli role</li>
</ul>
</li>
<li>version 0.1.0 - 2014.12.22<ul>
<li>initial release</li>
</ul>
</li>
</ul>
<h2 id="license">License</h2>
<p>VAW is distributed under GPLv3.</p>
<p>Copyright (c) 2014-2016 thingsym</p>]]>
</content>
</entry>

<entry>
<title>ページの先頭へスムーズに戻る jQuery プラグイン「Back to the Top」</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000401.html" />
<modified>2014-10-28T06:02:28Z</modified>
<issued>2014-10-28T06:00:55Z</issued>
<id>tag:blog.thingslabo.com,2014://1.401</id>
<created>2014-10-28T06:00:55Z</created>
<summary type="text/plain">ページの先頭 (トップ) へスムーズにスクロールして戻る jQueryプラグイン「Back to the Top」をリリースしました。 といっても作ったのが 3 年ほど前。作ったモノが貯まっているので、暇を見つけて公開できるモノはプロジェク...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>ページの先頭 (トップ) へスムーズにスクロールして戻る jQueryプラグイン「Back to the Top」をリリースしました。</p>

<p>といっても作ったのが 3 年ほど前。作ったモノが貯まっているので、暇を見つけて公開できるモノはプロジェクトページを整備して公開してみました。</p>

<p>プロジェクトページは<a href="http://project.thingslabo.com/jquery.backtothetop/docs-ja.html">こちらから</a>。<a href="http://project.thingslabo.com/jquery.backtothetop/docs.html">英語版</a>もあります。</p>

<p>詳しい設定方法は、プロジェクトページに譲るとして、ページの先頭へのリンクは id 属性 backtothetop-fixed を加えるだけでスクロールしても位置が固定されるページの先頭へリンクが実装できます。ページ内リンクはリンク設定するだけ。</p>

<p>カスタマイズも data-* 属性を使ってできます。スクロールの停止位置を px で指定したり、スクロールの動き (イージング) を変えたり、ページの先頭へリンクの表示などいろいろオプションがあります。</p>

<h3>サンプル</h3>

<pre class="prettyprint">
&lt;a href="#top" id="backtothetop-fixed"
 data-backtothetop-duration="600"
 data-backtothetop-easing="easeOutQuart"
 data-backtothetop-offset="100"
 data-backtothetop-fixed-scroll-offset="500"
 data-backtothetop-fixed-fadeIn="1000"
 data-backtothetop-fixed-fadeOut="1000"
 data-backtothetop-fixed-display="bottom-right"
 data-backtothetop-fixed-bottom="10"
 data-backtothetop-fixed-right="10"
&gt;Back to the Top&lt;/a&gt;
</pre>


<h2>Project Page</h2>

<ul>
<li><a href="http://project.thingslabo.com/jquery.backtothetop/docs-ja.html">日本語 (Japanese)</a></li>
<li><a href="http://project.thingslabo.com/jquery.backtothetop/docs.html">英語 (English)</a></li>
</ul>


<h2>Repository</h2>

<ul>
<li><a href="https://github.com/thingsym/jquery.backtothetop">GitHub</a></li>
</ul>


<p>パッチやバグ報告、プルリクは、GitHub からどうぞ。</p>]]>

</content>
</entry>

<entry>
<title>デバイスを判定するis_multi_device関数がWordPressプラグイン「Multi Device Switcher」に加わりました</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000400.html" />
<modified>2015-01-20T07:38:20Z</modified>
<issued>2014-09-18T06:46:31Z</issued>
<id>tag:blog.thingslabo.com,2014://1.400</id>
<created>2014-09-18T06:46:31Z</created>
<summary type="text/plain">WordPressプラグイン「Multi Device Switcher」にデバイスを判定する is_multi_device関数が加わりました。 テーマのカスタマイズでデバイスの判定に is_multi_device関数を使ってコンテンツ...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>WordPressプラグイン「Multi Device Switcher」にデバイスを判定する is_multi_device関数が加わりました。</p>

<p>テーマのカスタマイズでデバイスの判定に is_multi_device関数を使ってコンテンツを出し分けたり、WordPress 3.4 から実装された wp_is_mobile関数では物足りない部分をユーザーエージェントを追加修正することで補ってくれます。</p>
]]>
<![CDATA[<p>使い方は、以下のようにデバイスの名前の引数を渡すだけ。スマートフォンの場合、TRUEを返してデバイスを判定してくれます。それ以外はFALSE。</p>

<pre class="prettyprint linenums">&lt;?php is_multi_device('smart'); ?&gt;
</pre>

<p>デバイスの名前の引数は、必須で、組み込み済みの名前のほか、Custom Switcher で設定した名前での判定もできます。</p>

<ul>
<li>smart (スマートフォン)</li>
<li>tablet (タブレット)</li>
<li>mobile (モバイル)</li>
<li>game (ゲームプラットフォーム)</li>
<li>Custom Switcher で設定した名前</li>
</ul>


<h2>サンプルコード</h2>

<pre class="prettyprint linenums">&lt;?php
if ( function_exists( 'is_multi_device' ) ) {
    if ( is_multi_device('smart') ) {
        /* スマートフォンでの表示 */
    } elseif ( is_multi_device('tablet') ) {
        /* タブレットでの表示 */
    } else {
        /* PC、それ以外の表示 */
    }
}
?&gt;
</pre>

<p>以上、テーマのカスタマイズで是非活用してみてください。</p>

<hr />

<h2>is_multi_device() function</h2>

<p>is_multi_device() function is a boolean function, meaning it returns either TRUE or FALSE. Works through the detection of the device by the Multi_Device_Switcher class.</p>

<h3>Usage</h3>

<pre class="prettyprint linenums">&lt;?php is_multi_device('smart'); ?&gt;
</pre>

<h3>Examples</h3>

<pre class="prettyprint linenums">&lt;?php
if ( function_exists( 'is_multi_device' ) ) {
    if ( is_multi_device('smart') ) {
        /* Display and echo smartphone specific stuff here */
    } elseif ( is_multi_device('tablet') ) {
        /* Display and echo tablet specific stuff here */
    } else {
        /* Display and echo pc or other stuff here */
    }
}
?&gt;
</pre>

<h3>Parameters</h3>

<p><strong>device name</strong> (required)</p>

<p>(string) The name of the device</p>

<ul>
<li>smart</li>
<li>tablet</li>
<li>mobile</li>
<li>game</li>
<li>the name of the Custom Switcher</li>
</ul>

<h3>Return Values</h3>

<p>(boolean) Return boolean whether a particular device.</p>

<hr />

<h3>Download:</h3>

<p><a href="http://wordpress.org/extend/plugins/multi-device-switcher/" target="_blank">WordPress のプラグインページからどうぞ。</a></p>

<h3>Installation:</h3>

<p><a href="http://blog.thingslabo.com/archives/000251.html">WordPress プラグイン「Multi Device Switcher」のインストール詳細はこちらからどうぞ。</a></p>

<h3>Code Repository:</h3>

<p><a href="https://github.com/thingsym/multi-device-switcher" target="_blank">thingsym / multi-device-switcher (GitHub)</a></p>

<h3>Licenses:</h3>

<p>Licensed under GPL version 2.0</p>

<h3>Donationware:</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="9L53NELFMHTWW"></p>

<table class="no-border">
<tr><td><input type="hidden" name="on0" value="Donationware">Donationware</td></tr><tr><td><select name="os0">
    <option value="1. Donate">1. Donate $3.00 USD</option>
    <option value="2. Donate">2. Donate $5.00 USD</option>
    <option value="3. Donate">3. Donate $7.00 USD</option>
    <option value="4. Donate" selected="selected">4. Donate $10.00 USD</option>
    <option value="5. Donate">5. Donate $20.00 USD</option>
    <option value="6. Donate">6. Donate $30.00 USD</option>
    <option value="7. Donate">7. Donate $40.00 USD</option>
    <option value="8. Donate">8. Donate $50.00 USD</option>
    <option value="9. Donate">9. Donate $60.00 USD</option>
    <option value="10. Donate">10. Donate $70.00 USD</option>
</select> </td></tr>
</table>


<p><input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/ja_JP/i/scr/pixel.gif" width="1" height="1">
</form></p>]]>
</content>
</entry>

<entry>
<title>PCとモバイルのコンテンツを出し分けるWordPressプラグイン「WP Is Mobile Text Widget」</title>
<link rel="alternate" type="text/html" href="http://blog.thingslabo.com/archives/000397.html" />
<modified>2015-01-28T10:41:31Z</modified>
<issued>2014-08-27T05:56:23Z</issued>
<id>tag:blog.thingslabo.com,2014://1.397</id>
<created>2014-08-27T05:56:23Z</created>
<summary type="text/plain">PCとモバイルのコンテンツを出し分けて表示するWordPress プラグイン「WP Is Mobile Text Widget」をリリースしました。 WordPress プラグイン「WP Is Mobile Text Widget」は、ウェ...</summary>
<author>
<name></name>

<email>info@thingslabo.com</email>
</author>
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.thingslabo.com/">
<![CDATA[<p>PCとモバイルのコンテンツを出し分けて表示するWordPress プラグイン「WP Is Mobile Text Widget」をリリースしました。</p>

<p>WordPress プラグイン「WP Is Mobile Text Widget」は、ウェブサイトが閲覧されると、スマートフォンなどモバイルかどうかを WordPress3.4 から実装された関数 wp_is_mobile() で判断してコンテンツを切り替えて表示するシンプルなテキストウィジェットです。</p>

<img alt="screenshot-wp-is-mobile-text-widget.png" src="http://blog.thingslabo.com/images/screenshot-wp-is-mobile-text-widget.png" width="441" height="675" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

<p>WordPress プラグイン「WP Is Mobile Text Widget」を有効化すると、ウィジェットにテキストウィジェットが追加されます。ウィジェットエリアに追加すると、通常のPC用とモバイル用のコンテンツが保存できます。</p>

<h2>インストール</h2>

<ol>
<li>WordPress メニュー「プラグイン > 新規追加」から「WP Is Mobile Text Widget」を検索してインストール (この場合ステップ3へ)、または <a href="http://wordpress.org/plugins/wp-is-mobile-text-widget/">WordPress のプラグインページ</a>から zip ファイルをダウンロードして解凍。</li>
<li>解凍した "wp-is-mobile-text-widget" をプラグインディレクトリ "/wp-content/plugins/" にアップロード</li>
<li>WordPress メニュー「プラグイン」で「WP Is Mobile Text Widget」を有効化</li>
<li>WordPress メニュー「外観 > ウィジェット」で「WP Is Mobile Text」をウィジェットエリアにドラッグ&amp;ドロップで追加して設定。</li>
<li>完了</li>
</ol>

<h3>ダウンロード</h3>

<p><a href="http://wordpress.org/plugins/wp-is-mobile-text-widget/">WordPress の公式プラグインページ</a></p>

<h3>ライセンス</h3>

<p>GNU General Public License v2.0 (GPLv2) licenses</p>

<h3>開発</h3>

<p><a href="https://github.com/thingsym/wp-is-mobile-text-widget">GitHub (https://github.com/thingsym/wp-is-mobile-text-widget)</a></p>

<h3>Donationware</h3>

<p>よろしければ、開発とメンテナンスのために寄付していただければうれしいです。</p>

<p>If you like this plugin, please donate to support development and maintenance.</p>

<p><a href="http://www.amazon.co.jp/registry/wishlist/3TTHFHIYJLJV9">thingsymのほしい物リスト</a></p>]]>

</content>
</entry>

</feed>