<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>プログラミング  |  ぼちぼちブログ</title>
	<atom:link href="https://horumont.info/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://horumont.info</link>
	<description>教育／労働組合／プログラミング</description>
	<lastBuildDate>Sat, 12 Aug 2023 01:21:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.8</generator>

<image>
	<url>https://horumont.info/wp-content/uploads/2020/11/39cab8f0a1adc1a8ac2842b4a25f1e52-100x100.png</url>
	<title>プログラミング  |  ぼちぼちブログ</title>
	<link>https://horumont.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>初めてのコーディング案件納品、ふりかえり</title>
		<link>https://horumont.info/programming/%e5%88%9d%e3%82%81%e3%81%a6%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e6%a1%88%e4%bb%b6%e7%b4%8d%e5%93%81%e3%80%81%e3%81%b5%e3%82%8a%e3%81%8b%e3%81%88%e3%82%8a/</link>
					<comments>https://horumont.info/programming/%e5%88%9d%e3%82%81%e3%81%a6%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e6%a1%88%e4%bb%b6%e7%b4%8d%e5%93%81%e3%80%81%e3%81%b5%e3%82%8a%e3%81%8b%e3%81%88%e3%82%8a/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Mon, 07 Feb 2022 21:43:29 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=602</guid>

					<description><![CDATA[Over40WebClub内の先輩フリーランスからまわしてもらった案件にとりくみました。お金の発生する案件にとりくんだのはこれが初めて。少し長くかかりましたが、なんとか、サイトの公開までいきました。独学や模写だけではわか [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Over40WebClub内の先輩フリーランスからまわしてもらった案件にとりくみました。お金の発生する案件にとりくんだのはこれが初めて。少し長くかかりましたが、なんとか、サイトの公開までいきました。独学や模写だけではわからないことをたくさん身につけることができましたので、ここで、どんなことを学べたのか、ふりかえりをしておきたいと思います。</p>




  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">今回の案件の概要</a></li><li><a href="#toc2" tabindex="0">「やるぞ」と決断するまで</a></li><li><a href="#toc3" tabindex="0">仕事の基本的な流れ</a></li><li><a href="#toc4" tabindex="0">オリジナルデザインでのWordPress</a></li><li><a href="#toc5" tabindex="0">デザインを忠実に再現することとよしなにすること</a></li><li><a href="#toc6" tabindex="0">WordPress案件ではマニュアル作成も</a></li><li><a href="#toc7" tabindex="0">IE対応</a></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading" id="今回の案件の概要"><span id="toc1">今回の案件の概要</span></h2>



<h3 class="wp-block-heading" id="ページ構成">ページ構成</h3>



<p>基本的に、HTML、CSSコーディングでデザインを再現して、WordPress化までを担当。プラグインを使用しての会員システム構築は先輩フリーランスが担当してくれました。そして、コーディング、構築ともに、先輩フリーランスが間でチェックをしてくれる感じです。</p>



<ul>
<li>TOPページ</li>



<li>カスタム投稿３種類、それぞれにアーカイブ、詳細テンプレート</li>



<li>お問い合わせページ</li>



<li>アバウトページ</li>



<li>利用規約ページ</li>
</ul>



<h3 class="wp-block-heading" id="機能">機能</h3>



<p>２つのカスタム投稿では、カスタムフィールド使用。１つはブログ風の投稿でオリジナルデザイン＋カスタムブロックでめあてのデザインを再現できるようにしました。CSS部分は基本的に私が担当したので、会員システムによって付随する会員ページと非会員ページの出し分けなどもありました。会員用コンテンツの上にオーバーレイ＋誘導のナビゲーションつけるという感じです。</p>



<h2 class="wp-block-heading" id="やるぞ-と決断するまで"><span id="toc2">「やるぞ」と決断するまで</span></h2>



<p>コミュニティ内でにゆさんから提案があって、ちょうど案件をやってみたいと思っていた私は手を上げました。それまで、WordPressはテーマでの構築しかやっていなかったので、本を見たり、ネットの記事を調べたりして、「できそう」と確認をしました。<br>これまで、GatsbyJSにHTMLのテンプレートを入れて、構築するというのをやっていたので、基本的にはこれと同じ感じだったのが、決断の決め手でした。JavaScriptとPHP（WPテンプレートタグ）のちがいだったので、ググりつつ、そして何より先輩フリーランスのサポートを受けながらできるので、踏み出すことができました。</p>



<p>やってみると、いろいろなところで、先輩フリーランスにご迷惑をおかけいたしました。自分で「迷惑をかけるだろうな」と思っていた以上にです。しかし、踏み出した以上は、自分の恥がどうとかではなく、やりきるしかないと思い定めて突き進んでなんとか今があるという感じです。</p>



<h2 class="wp-block-heading" id="仕事の基本的な流れ"><span id="toc3">仕事の基本的な流れ</span></h2>



<p>プロダクトを誰かに提供するという仕事をしたことがない？と思っています。最初の方の仕事の仕上がりはかなりずさんだったと思います。（今もぜんぜんかも😅）</p>



<p>コーディング → デベロッパーツールでの各デバイス幅での表示確認 → 間の幅での表示確認 → 実機での表示確認 → 本番（今回はにゆさんに見てもらう）サーバーへのアップロードして表示確認。</p>



<p>最低限のフローとしてこんな感じでやっているということを知りました。</p>



<p>何をするにも、いろいろとっちらかってしまう私にとっては、段取りを組んで、それを忠実に守りつつ（もちろん臨機応変も必要）、やっていくのはかなり骨が折れました。今でも、そんなにきちんとできていませんし、「明日までに」ってなったりすると、雑に、いつの間にか工程飛ばしていたりもします。</p>



<p>そもそも、コーディング自体の進め方も、結構ぐちゃぐちゃなので、ここも意識したいです。Gitは使っていたものの、コミットの粒度とか、ブランチ切るルールとかとてもぐちゃぐちゃです。個人で練習したり、趣味でやる分にはいいのだろうけど、このあたりもいい感じでできるようになりたいな。</p>



<p>案件やるごとに、少しずつ積み上げて、自分にしみこませないといけないなと思います。次の案件では、もう少しいい感じで、１人だけど、チームでやっているようなつもりでやろうと思います。</p>



<h2 class="wp-block-heading" id="オリジナルデザインでのwordpress"><span id="toc4">オリジナルデザインでのWordPress</span></h2>



<p>それまで、テーマを使ってこのブログを書いたりはしていたものの、フルスクラッチで構築するのは初めてでした。</p>



<p>「やります」と決めてからデザインの到着まで時間があったので、その間に、クライアントさんの別サイトを参考に、ローカルにサンプルサイトを作って、使いそうな機能をいろいろ実装して見ました。ネットの情報だけでは、やはり不安だったので、書籍を購入しました。</p>



<figure class="wp-block-embed is-type-rich is-provider-amazon wp-block-embed-amazon"><div class="wp-block-embed__wrapper">
<iframe title="一歩先にいくWordPressのカスタマイズがわかる本" type="text/html" width="1256" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=kpd&#038;ref_=k4w_oembed_ukx9q1J1zQgD0y&#038;asin=B01DZXAHV0&#038;tag=kpembed-20"></iframe>
</div></figure>



<p>これはあとからかなり役に立ちました。ここで組んだコードをそのまま使うことも多かったです。その際には、先輩フリーランスが「次はこれやってみて」など、必要な機能をいろいろ教えてくれたことも大きかったです。</p>



<p>今は、あるところで教えてもらったプラグイン「Paste」にWordPress関連のフォルダを作成し、ループのコードやヘッダー・フッターの呼び出しのコードを保存しています。WordPressやっていくなら、こういうパターンを理解して、どれだけサクッと呼び出せる環境をつくっておくかで、仕事の質とスピードが変わってきそうです。</p>



<h2 class="wp-block-heading" id="デザインを忠実に再現することとよしなにすること"><span id="toc5">デザインを忠実に再現することとよしなにすること</span></h2>



<p>「よしなに」ってこんなに難しいんだ！というのが、実感です。デザインには１２８０px幅と３７５px幅のがあって、間のデザインはよしなにってしようとするのですが、ここにも本当にいろいろな知見がつまっていると感じました。</p>



<p>こういうことって、学習段階ではややこしいので省かれているのだろうか。学習できるようなリソースもあるんだろうなとおもいますが、やはり、案件＝プレッシャーの中でやることで大きく成長できる感じがしました。</p>



<p>あとはデザインで余白の規則性がないところや並びがちょっとずれているところなどもあったりします。これは意図的なのか、それとも、作業の過程でちょっとずれてしまったのか、判断がつかないことがあります。こういうときは、きちんとデザイナーさんとコミュニケーションをとることが大事なのだということを学びました。今回は、間に先輩フリーランスが入ってくれていたので、「それはミスでしょう」とか「それは意図的」など先輩の経験でわかること＝業界では当たり前なことはそこでストップしてくれたのもありがたいことでした。</p>



<h2 class="wp-block-heading" id="wordpress案件ではマニュアル作成も"><span id="toc6">WordPress案件ではマニュアル作成も</span></h2>



<p>私自身、初めてWordPressに触れたときは、けっこう複雑だなあと思っていました。それまでもライブドアとかFC2とかブログサービスは使ったことがあったのですが、それに比べるとできることが格段に多くて、操作も複雑でした。特にカスタムフィールドを実装すると、実装者にしかわかりにくいところがでてきます。</p>



<p>管理画面での編集と出来上がりのイメージを対比して、作業しやすいよう、また、全体的の中でのどういう作業かを確認できるように、意識して作成しました。</p>



<p>とても丁寧につくっているとほめていただきました！自己評価としては雑なところもあったのですが、素直に喜ぼうと思います。２０年くらい前、子ども用にパワーポイントで社会のスライドを作るマニュアルを作ったことがあったので、そういうことが活きているのかなと思いました。</p>



<h2 class="wp-block-heading" id="ie対応"><span id="toc7">IE対応</span></h2>



<p>すでに多くのところで必要はないし、これからどんどん必要なくなるかもしれませんが、今回の案件では対応することになったそうです。ここでも、ネットの知見がとても役立ちました。例えば、</p>



<p>height:autolにはみmin-width:1px;をセットにしないと、autoが発動しない。</p>



<p>とか。はじめに、発見した人は、IEがCSSをどう解析しているのかを調べて、その上で、この対応を見つけているのだろうなと想像しました。それとも、IEの公式からでているのだろうか？いずれにしても、ググればわかるという環境はほんとにありがたいです。</p>



<h2 class="wp-block-heading" id="まとめ"><span id="toc8">まとめ</span></h2>



<p>表示については、先輩フリーランスの指摘、ディレクターさんの指摘のおかげで、なんとかできているという感じです。自分ひとりで品質を保つというところまでは正直まだまだです。また、ぼくの提供できる品質ももっともっとレベルを上げていかないといかんなと思っています。</p>



<p>今はまだ副業ですが、いずれ本業にします。それまでにしっかりとレベルを上げていきます。とても楽しみです。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/%e5%88%9d%e3%82%81%e3%81%a6%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e6%a1%88%e4%bb%b6%e7%b4%8d%e5%93%81%e3%80%81%e3%81%b5%e3%82%8a%e3%81%8b%e3%81%88%e3%82%8a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>php warning: Trying to access array offset on value of type null in というエラーに対応できないかという相談を受けて解決した話</title>
		<link>https://horumont.info/programming/php-warning/</link>
					<comments>https://horumont.info/programming/php-warning/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sun, 17 Oct 2021 01:11:47 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[エラー解決]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=570</guid>

					<description><![CDATA[先日、ツイッターでつながっているWordPressブログを運営している人から DMをいただきました。 「このエラーに対応できますか？」ということでした。 とっちらかっていろいろ学習していて、 現在は、WordPressの [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日、ツイッターでつながっているWordPressブログを運営している人から DMをいただきました。 「このエラーに対応できますか？」ということでした。</p>



<p>とっちらかっていろいろ学習していて、 現在は、WordPressのオリジナルテーマ開発をしているので そのあたりで連絡頂いたということでした。</p>



<p>正直なところ、解決できる自信はありませんでしたが、 エラー解決は嫌いではないのでzoomでコードを見せてもらいつつ対応。</p>



<p>コメントの日付表示の後ろに、このエラーメッセージが出てきていました。 nullの変数に配列型でアクセスしているよ！ということはわかりました。 ぐぐると、すぐにいろいろ記事が出てきました。 このエラーメッセージがレンダリングされているってのも気になったのですが、 とりあえず、この変数にアクセスする前に、 それがnullでなくて、値がセットされているかどうかを判定する <code>isset()</code>で解決できそうでした。</p>



<p>市販の有料テーマのコードだったので、 とても複雑だったのですが、エラー時の表示や吐き出されたHTMLを見たりして、 「ここか！」というところを発見したので、 そこに <code>isset()</code>をかませるととりあえずエラー表示が消えました！</p>



<p>エラーが解決できるとやはり嬉しいです。</p>



<p>参考： <a rel="noopener" target="_blank" href="https://www.php.net/manual/ja/function.isset.php">PHPドキュメント</a> <a rel="noopener" target="_blank" href="https://office-obata.com/report/memorandum/post-5200/">OFFICE OBATA様</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/php-warning/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CSSアニメーションまとめ @key-frameとanimationプロパティ</title>
		<link>https://horumont.info/programming/css-animation/</link>
					<comments>https://horumont.info/programming/css-animation/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sun, 11 Jul 2021 06:21:36 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=516</guid>

					<description><![CDATA[最近、初めての案件をいただくことになり、 その１回目のデザイン案をいただきました。そのときに、トップページにアニメーション指定があったので、あらかじめ、実装してみたので、CSSアニメーションについてまとめます。 目次 基 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>最近、初めての案件をいただくことになり、</p>



<p>その１回目のデザイン案をいただきました。そのときに、トップページにアニメーション指定があったので、あらかじめ、実装してみたので、CSSアニメーションについてまとめます。</p>




  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">基本：@keyframesでアニメーションの流れを、animationプロパティで動き方を指定する方法</a></li><li><a href="#toc2" tabindex="0">やってみて</a></li><li><a href="#toc3" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">基本：@keyframesでアニメーションの流れを、animationプロパティで動き方を指定する方法</span></h2>



<h3 class="wp-block-heading">@keyframes</h3>



<p>まずは、アニメーションの動きの設定。要素の状態を記述していきます。たとえば、文字サイズをだんだん大きくするものであれば、font-sizeプロパティの値を変化させます。</p>



<p>下の例では、h1要素に対してアニメーションを指定しています。</p>



<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="OJmRwJo" data-user="sonho463" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/sonho463/pen/OJmRwJo">
  </a> by Son Hiroki Hong-su (<a href="https://codepen.io/sonho463">@sonho463</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async="" src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>HTML



<p>@keyframesでは<br>・アニメーションの名前を設定<br>・0%から１００％の間でプロパティの値変化を記述<br>フォントサイズ36px　→　最後に64pxを指定しました。<br>0%のときの値は省略できます。</p>



<p>ここにいろいろまとめて記述もできます。<br>例えば、ここで、opacityなども合わせて記述すると、文字が大きくなりながら、透明度も変化させるといったことがかんたんにできます。</p>



<h3 class="wp-block-heading">animationプロパティ</h3>



<p>次に、アニメーションを付与する要素に、animationプロパティを追加していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-css" data-lang="CSS"><code>h1{
animation-name: bigger;
animetion-duration: 3s;
animation-fill-mode: forwards
}</code></pre></div>



<p>animation関連のプロパティは全部で８個ありました。</p>



<p>animation-name / animation-duration / animation-timing-function / animation-delay / animation-iteration-count / animation-direction / animation-fill-mode / animation-play-state</p>



<p>今回はそのうち３つを指定しています。</p>



<h4 class="wp-block-heading">animation-name</h4>



<p>@keyframesで設定した名前。どのアニメーションを付与するか。これだけでは、まだ動きません。</p>



<h4 class="wp-block-heading">animation-duration </h4>



<p>アニメーションの経過時間を設定。sまたはmsで指定します。</p>



<h4 class="wp-block-heading">animation-fill-mode</h4>



<p>アニメーションが終わったときの挙動を設定します。<br>none（デフォルト） アニメーションが終わったら最初の状態　<br>forwards  アニメーションの最後の状態を保持<br>backwards　アニメーションの最初の状態にもどる<br>both　両方・やってみるとforwardsと同じ挙動でした。</p>



<p>アニメーションが終わって最初の状態か、最後の状態かというところしか必要ないようにしか思えていません。だけど、これからいろいろ複雑なアニメーションになってくると、４つの値を使い分けないと行けないときがくるのだろうと思っています。</p>



<h2 class="wp-block-heading"><span id="toc2">やってみて</span></h2>



<p>１．対応していないプロパティ</p>



<p>例えば今回はbackground-clip:text;が当てられた要素にアニメーションを付与して、アニメーションが終わったら、background-clip: unset;にしようとしたかったので、１００％のところにunsetを設定しました。すると、unsetが先に実行されてしまいました。</p>



<p>いろいろ考えて、最終的には、animationではなく、JavaScriptとtransitionを組み合わせて、そこに、さらに、setTimeoutを使ってゴリゴリに思い通りの挙動に持っていきました。</p>



<p>なにかもっとスマートな方法がありそうな気がしています。ご指摘ください。</p>



<p>２．複数のアニメーションのタイミング</p>



<p>複数のアニメーションを同時に付与できるのですが、このタイミングの制御がとてもむずかしいです。animation-delayプロパティを使って、タイミング制御しようとしたのですが、あまりうまく行きませんでした。今後の研究課題です。</p>



<h2 class="wp-block-heading"><span id="toc3">まとめ</span></h2>



<p>もっともっと、animationをたくさん使っていきたいなと思います。</p>



<p>アニメーションのもりすぎは良くないですが、自分の事業用サイトなど作るときには、１つのアピールになると思うので、いろいろかっこいいアニメーションを眺めて、自分で再現するなど、今後は練習を重ねていきたいと思います。</p>



<p>参考URL</p>



<p><a href="https://developer.mozilla.org/ja/docs/Web/CSS/animation">MDN &#8211; animation</a><br><a href="https://qiita.com/7968/items/1d999354e00db53bcbd8">【CSS3】@keyframes と animation 関連のまとめ</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/css-animation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gatsby-microCMSでブログサイトを構築してConnpass勉強会をしたので振り返り</title>
		<link>https://horumont.info/programming/make-blog-gatsby-microcms/</link>
					<comments>https://horumont.info/programming/make-blog-gatsby-microcms/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sat, 05 Jun 2021 22:56:13 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Connpass勉強会]]></category>
		<category><![CDATA[GatsbyJS]]></category>
		<category><![CDATA[microCMS]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=489</guid>

					<description><![CDATA[目次 Over40WebClub　Connpass勉強会何かを世に出すということの大変さGatsbyのサイト構築について前よりも深く理解 Over40WebClub　Connpass勉強会 ４回目の勉強会を終えました。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Over40WebClub　Connpass勉強会</a></li><li><a href="#toc2" tabindex="0">何かを世に出すということの大変さ</a></li><li><a href="#toc3" tabindex="0">Gatsbyのサイト構築について前よりも深く理解</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">Over40WebClub　Connpass勉強会</span></h2>
<p>４回目の勉強会を終えました。<br />
今回のテーマは次です。</p>
<p><a class="wp-editor-md-post-content-link" href="http://https://over40webclub.connpass.com/event/212129/" title="ヘッドレスCMSで爆速ブログ構築">ヘッドレスCMSで爆速ブログ構築</a></p>
<p>今回は、microCMSというヘッドレスCMSをデータベースにして、Gatsbyでブログサイトを構築しました。勉強会では、あらかじめ、そんが作成したサイトをGatsbyのスターターにして、ブログサイトを構築する様子を見てもらいました。</p>
<p><a class="wp-editor-md-post-content-link" href="http://https://github.com/sonho463/starter-microcms" title="スターターはこちら　＞＞＞">スターターはこちら　＞＞＞</a></p>
<p>しかし、今回、最後GitHubへのプッシュのときにトラブルが発生し、結局、そこを解決できずデプロイまでのようすを見てもらうことができませんでした😣</p>
<p>振り返りも兼ねて、このブログで上記ブログサイトを作る過程を記事にしていこうと思います。</p>
<p>まずは、今回の勉強会でぼくが学んだことについてここに記しておこうと思います。</p>
<h2><span id="toc2">何かを世に出すということの大変さ</span></h2>
<p>今回は作成したブログサイトをGatsyのスターターとしてお知らせするというつもりだったので、細かいところまでしっかり作り込まないといかん！と思っていました。<br />
そう思うと、今まで自分がプログラミングしたり、サイト構築するときに、いかにアバウトな感じでやっていたのかを思い知らされました。</p>
<ul>
<li>見やすいコードの書き方</li>
<li>コメントをどう入れるか</li>
<li>READMEファイルに各説明</li>
</ul>
<p>サイトの機能面でも、作り込めば作り込むほど、もうちょっとこうしたほうがいいかも、とか思って、次々と改善点が見えてきました。どこかで、切らないとおわらない感じ。ちゃんとだれが使うのかをイメージして、取捨選択が必要になるのかなと思いました。<br />
今後も少しずつ改善していきたいです。</p>
<h2><span id="toc3">Gatsbyのサイト構築について前よりも深く理解</span></h2>
<p>GatsbyはReactベースのフレームワークですので、実は、個々でやっていることのウラで、React、JavaScriptがいろいろとよしなにやってくれているのですが、それでも、難しくて、なんでこうすればこうなるのかということが理解できないことも多かったです。<br />
しかし、今回、一からブログサイトを調べながら作ってみて、いろいろなことを理解できました。</p>
<ul>
<li>Gatsbyが各記事ページを生成するCreatePageというAPIのこと</li>
<li>GraphQLからデータをとるときに、Nullだといろいろ大変で、その対応の仕方</li>
</ul>
<p>などなど。<br />
このあたりはこれから、切り分けつつ記事にアウトプットしていこうと思います。と、同時に、ベースになってるReactやJavaScriptについてももっと勉強したいなあと思いました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/make-blog-gatsby-microcms/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gatsby microCMSのブログ　Imgixで画像の処理をする</title>
		<link>https://horumont.info/programming/microcms-gatsby-imgix/</link>
					<comments>https://horumont.info/programming/microcms-gatsby-imgix/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sun, 09 May 2021 00:44:10 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[GatsbyJS]]></category>
		<category><![CDATA[Imgix]]></category>
		<category><![CDATA[microCMS]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=472</guid>

					<description><![CDATA[目次 こまったことmicroCMS運営さんにチャットで問い合わせImgixを使って画像を最適化Imgixではもっといろいろできます。 こまったこと microCMSでは、gatsby-plugin-imageに対応してい [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">こまったこと</a></li><li><a href="#toc2" tabindex="0">microCMS運営さんにチャットで問い合わせ</a></li><li><a href="#toc3" tabindex="0">Imgixを使って画像を最適化</a></li><li><a href="#toc4" tabindex="0">Imgixではもっといろいろできます。</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">こまったこと</span></h2>
<p>microCMSでは、gatsby-plugin-imageに対応していないため<br />
graphqlで画像データが渡ってこず、URLだけ渡ってくる仕様。<br />
どうやって画像の最適化をしようかな</p>
<h2><span id="toc2">microCMS運営さんにチャットで問い合わせ</span></h2>
<p>チャットで問い合わせをしました。</p>
<blockquote><p>
  いつもお世話になります。 GatsbyとmicroCMSでブログを作ろうとしています。 gatsby-plugin-imageで>microCMSの画像を扱いたいのですが、graphqlのデータを見ると、urlとwidthとheightしかわたってきてい>ないので、扱うことができません。 なにかやり方があるかご教示お願いしたいです
</p></blockquote>
<p>ご丁寧に対応いただき、次のことがわかりました。<br />
・ImgixというCDNを通して、APIを利用するとよい</p>
<p>あとから考えれば、ドキュメントなどをしっかり読めばわかりそうなことでした😅</p>
<h2><span id="toc3">Imgixを使って画像を最適化</span></h2>
<h3><a class="wp-editor-md-post-content-link" href="https://www.imgix.com/">Imgix</a>とは</h3>
<p>公式サイトより</p>
<blockquote><p>
  Powerful image processing, simple API<br />
  imgix transforms, optimizes, and intelligently caches your entire image library for fast websites and apps using simple and robust URL parameters.</p>
<p>  強力な画像処理、シンプルなAPI<br />
  imgixは、シンプルで堅牢なURLパラメーターを使用して、高速なWebサイトやアプリ用に画像ライブラリ全体を変換、最適化、およびインテリジェントにキャッシュします。
</p></blockquote>
<p>microCMSの画像タイプのコンテンツは基本的にこのCDNを通ってくるということなので<br />
ここのAPIでできることが基本的にできるということです。</p>
<h3>やりたいこと</h3>
<ol>
<li>レンダリングのときに、画像のサイズ、容量を節約</li>
<li>サイズの調整やトリミング</li>
</ol>
<h3>Imgixでは</h3>
<p><a class="wp-editor-md-post-content-link" href="https://docs.imgix.com/apis/rendering">Rendering API</a>を使うとできそう。</p>
<p>画像URLの最後に<code>?</code>をつけて、その後にいろいろなパラメータを付けることで、画像に対していろいろな処理ができます。<br />
例えば</p>
<pre><code class="line-numbers">https://&lt;graphqlで渡ってきた画像のurl&gt;?w=200
</code></pre>
<p>とすると、画像の幅を２００（ｐｘ？）に設定できます。<br />
その後ろに<code>&amp;</code>でつなげれば、複数のパラメータを付けることができます。</p>
<p>いろいろオートの設定もありました。<br />
例えば<br />
1. 画像の圧縮　<code>auto=compress</code><br />
基本的には７５％。<code>q=</code>で圧縮率を指定することもできます。<br />
2. フォーマット選択　<code>auto=format</code><br />
対応しているブラウザなら、自動でwebp形式に変換してくれる。<br />
3. 画像のトリミング　<code>ar=2:1&amp;fit=crop&amp;fp-y=0.5"</code><br />
アスペクト比と中心を決めてトリミングできます。切り抜いた部分以外はデータとしても削除。（残す設定もできる）</p>
<p>とりあえず、今回のプロジェクトでは、<br />
この３つを設定することにしました。</p>
<p>ブログの記事ごとのアイキャッチ画像に対して<br />
これらの加工をして、<br />
各記事ページタイトルのバックにおくことにしました。</p>
<h3>実装したコード</h3>
<ul>
<li>各記事のテンプレートファイル post-template.js</li>
</ul>
<pre><code class="language-javascript line-numbers">&lt;MicroCmsImage                                   
  url={data.microcmsPosts.eye_catch.url}                                     
  compress="auto=compress"                                   
  format="auto=format"                                   
  ar="ar=2:1&amp;fit=crop&amp;fp-y=0.5"
/&gt;                              /&gt;
</code></pre>
<ul>
<li>画像をレンダリングするコンポーネント　microcmsimage.js</li>
</ul>
<pre><code class="language-javascript line-numbers">import React from "react"
import styled from "styled-components"

export default function MicroCmsImg(props) {
  // imgタグを親要素に対して幅いっぱいに表示する
  const ImgWrapper = styled.img`
    width: 100%;
  `
  const { url } = props // 画像のURL
  // url以外のパラメータを１つの文字列型変数にセット
  let array = Object.values(props)
  let param = ""
  array.map(function (elem) {
  // propsの最初はurlなのでそれは入れない
    if (array.indexOf(elem) !== 0) {
      //最初の要素は?をつける
      if (array.indexOf(elem) == 1) {
        param = `?${elem}`
      } else {
        param = `${param}&amp;${a}`
      }
    }
  })

  return (
    &lt;&gt;
　　　// imgのsrcにurlとparamをつなげたものをセット
     &lt;ImgWrapper src={url + param} alt="" /&gt;
    &lt;/&gt;
  )
}

</code></pre>
<h2><span id="toc4">Imgixではもっといろいろできます。</span></h2>
<p>例えば、画像にフィルターをかけることもできます。<br />
モザイク加工したり、blur効果つけたり。<br />
顔認識でそこにクローズアップとか。<br />
文字入れたり、ノイズリダクションに回転。</p>
<p>gatsbyプロジェクトでは、<br />
対応していればgatsby-plugin-imageが使えますが、<br />
そうでないプロジェクトなら、<br />
これを使うのもいいかもしれません。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/microcms-gatsby-imgix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ヘッドレスCMSで爆速ブログ構築~Gatsby-StartBootstrap-microCMS</title>
		<link>https://horumont.info/programming/study-meeting-gatsby-microcms/</link>
					<comments>https://horumont.info/programming/study-meeting-gatsby-microcms/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sun, 02 May 2021 08:46:44 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[GatsbyJS]]></category>
		<category><![CDATA[JAMstack]]></category>
		<category><![CDATA[勉強会ドリブン勉強法]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=463</guid>

					<description><![CDATA[というタイトルの勉強会を開きます。Over40WebClub主催です。 勉強会ドリブン勉強法の考え方でとりくんでいます。 勉強会をやると決めて、それに向けて、学習をすすめていくというものです。 今までに３回ほど講師をさせ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>というタイトルの勉強会を開きます。Over40WebClub主催です。<br />
勉強会ドリブン勉強法の考え方でとりくんでいます。<br />
勉強会をやると決めて、それに向けて、学習をすすめていくというものです。<br />
今までに３回ほど講師をさせてもらっています。<a href="https://over40webclub.connpass.com/">＞＞＞こちら</a></p>
<p>２回めを終えたときの感想もまとめました。</p>
<p class="o-noteContentText__title"><strong><a href="https://note.com/horumont/n/n506175ad0a35">勉強会ドリブン学習法</a></strong></p>
<div data-v-07d3b562="" class="o-noteContentText__status">
<div data-v-07d3b562="" class="o-noteContentText__like">たくさんたくさん助けてもらってなんとかできましたが、今回は今までよりも自分の力でやっている割合高め😁だんだん、いろいろわかるようになってきています。</div>
</div>
<div data-v-07d3b562=""></div>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">今回の勉強会では</a></li><li><a href="#toc2" tabindex="0">なぜ、StartBootstrap?</a></li><li><a href="#toc3" tabindex="0">たくさんのご参加おねがいいたします</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">今回の勉強会では</span></h2>
<p>わたしがずっと学習しているGatsbyでヘッドレスCMSを使ったブログを作ります。<br />
ヘッドレスCMSの中でも、唯一（なのかな？）の日本製、microCMSを使うことにしました。</p>
<p>ヘッドレスCMSサービスはいろいろあるんですが、英語が多くて・・・という人もいるのではないでしょうか。<br />
もちろん、勉強会でやった「ヘッドレスWordPress」も１つの選択肢なのですが、せっかくなら、勉強がてらつくってみようと思いたちました。</p>
<p>勉強会では私がつくったブログをスターターにして、サクッとブログを構築します。<br />
その後、Gatsbyでブログ記事が自動的にできていく仕組みやちょっとカスタマイズする方法などを<br />
解説していこうと思っています。</p>
<p>今回の勉強会は<a href="https://over40webclub.connpass.com/event/212129/">こちら</a></p>
<h2><span id="toc2">なぜ、StartBootstrap?</span></h2>
<p>使うテンプレートはStartbootstrapで配布されているClean Blogというテンプレートです。</p>
<p>これでピンと来た人がいるかも知れませんが、UdemyのWordPress開発講座（たにぐちまことさん）で使用されているテンプレートなのです。</p>
<p>私自身が、その講座をやっていて、そのときに、<br />
なるほど、こうやってHTMLサイトをWordPressに変身させられるのか・・・！！<br />
と気づいて、これをGatsbyでやってみたい！と思ったのです。</p>
<p>この講座で学んだことがとてもやくだっていますし、<br />
でも、PHPとJavaScriptはちがうなあと思いながらコードを組んでいくのが<br />
今、とても楽しいのです。</p>
<h2><span id="toc3">たくさんのご参加おねがいいたします</span></h2>
<p>今、ウェブ制作学習中でも、ブログ構築まではサクッとできるようになると思います！</p>
<p>デプロイまで無料でできます！</p>
<p>まずは、練習で体験に来てみてください！</p>
<p><a href="https://over40webclub.connpass.com/event/212129/">ヘッドレスCMSで爆速ブログ構築~Gatsby-StartBootstrap-microCMS</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/study-meeting-gatsby-microcms/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>xcrun: error: invalid active developer pathが出たときの対応</title>
		<link>https://horumont.info/programming/xcrun-error/</link>
					<comments>https://horumont.info/programming/xcrun-error/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Fri, 26 Feb 2021 21:44:46 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=392</guid>

					<description><![CDATA[目次 Gitを使おうとした時にxcrun:error起きる現象対応疑問参考にした記事 Gitを使おうとした時にxcrun:error おそらく正確にはXcodeのコマンドラインツールを使用する時ということと思っています（ [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Gitを使おうとした時にxcrun:error</a></li><li><a href="#toc2" tabindex="0">起きる現象</a></li><li><a href="#toc3" tabindex="0">対応</a></li><li><a href="#toc4" tabindex="0">疑問</a></li><li><a href="#toc5" tabindex="0">参考にした記事</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">Gitを使おうとした時にxcrun:error</span></h2>
<p>おそらく正確にはXcodeのコマンドラインツールを使用する時ということと思っています（まちがいならご指摘お願いします）</p>
<p>そして、これが起きるのはMacOSをアップデートしxた後です。エラーメッセージをみると、「パスが見つからない」ということのようです。</p>
<p>以下の対応で解決します。</p>
<h2><span id="toc2">起きる現象</span></h2>
<pre><code class="language-bash">% git --version

-&gt;
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
</code></pre>
<p>&nbsp;</p>
<h2><span id="toc3">対応</span></h2>
<pre><code class="language-bash">% xcode-select --install
</code></pre>
<p>ダイアログにしたがってインストールします。</p>
<p><img fetchpriority="high" decoding="async" src="https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4-500x135.png" alt="xcrun:error画面" width="548" height="148" class="wp-image-393 aligncenter" srcset="https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4-500x135.png 500w, https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4-800x216.png 800w, https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4-300x81.png 300w, https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4-768x207.png 768w, https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4-1536x414.png 1536w, https://horumont.info/wp-content/uploads/2021/02/d2d703f3595425df59ec3c3ec968aff4.png 1906w" sizes="(max-width: 548px) 100vw, 548px" /></p>
<h2><span id="toc4">疑問</span></h2>
<p>MacでGitをインストールするのにいくつか方法があります。</p>
<ol>
<li>Xcodeコマンドライツールを使う</li>
<li>公式からダウンロードしてインストール</li>
<li>Homebrewでインストール</li>
</ol>
<p>Homebrew使うパターンやインストーラーでのインストールだとアップデートのときに、いちいちこの減少は起きないのだろうか？</p>
<p>&nbsp;</p>
<h2><span id="toc5">参考にした記事</span></h2>
<p class="entry-title"><a href="https://tracpath.com/bootcamp/git-install-to-mac.html"><span style="font-size: 18px;">バージョン管理システム入門　Git のインストール 〜Git をMacにインストールしよう〜</span></a></p>
<p class="it-Header_title"><a href="https://qiita.com/nishina555/items/e23d73067a5cac182a63">macOSアップデート後の『xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)&#8230;』の対処法</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/xcrun-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>gatsby-wordpressブログのgatsbyバージョンをアップデートしました</title>
		<link>https://horumont.info/programming/gatsby-updated/</link>
					<comments>https://horumont.info/programming/gatsby-updated/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sun, 11 Apr 2021 10:35:42 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[gatsby]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=438</guid>

					<description><![CDATA[gatsbyがメジャーアップデートしました。 v2からv3です。 Gatsby v3 Incremental Builds in OSS, new Gatsby Image, and more &#124; GatsbyWe ar [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>gatsbyがメジャーアップデートしました。<br />
v2からv3です。</p>
<a rel="noopener" href="https://www.gatsbyjs.com/blog/gatsby-v3/" title="Gatsby v3 Incremental Builds in OSS, new Gatsby Image, and more | Gatsby" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://horumont.info/wp-content/uploads/cocoon-resources/blog-card-cache/3d8a72d87da674fa8fcedd547921ef0c.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Gatsby v3 Incremental Builds in OSS, new Gatsby Image, and more | Gatsby</div><div class="blogcard-snippet external-blogcard-snippet">We are excited to announce Gatsby v3.0! This new version of Gatsby’s core framework introduces massive improvement to the developer and user experience.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.gatsbyjs.com/blog/gatsby-v3/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.gatsbyjs.com</div></div></div></div></a>
<p>意外とサクッとできました。この機会に、gatsbyブログをもう少しいい感じにカスタマイズしていきたいと思います。どんなふうにしたかをメモにして残します。</p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">何はともあれ新しいgatsbyにアップデート</a></li><li><a href="#toc2" tabindex="0">依存関係の更新が必要なものをチェック</a></li><li><a href="#toc3" tabindex="0">まとめて更新</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">何はともあれ新しいgatsbyにアップデート</span></h2>
<p>% npm install gatsby@latest</p>
<p>@latest 最新バージョンを指定しているのです。</p>
<h2><span id="toc2">依存関係の更新が必要なものをチェック</span></h2>
<p>% npm outdated</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>~/environment/bochibochi-blog npm outdated +[main]
Package Current Wanted Latest Location
@wordpress/block-library 2.28.2 2.29.1 2.29.1 gatsby-starter-wordpress-blog
gatsby-image 2.11.0 2.11.0 3.2.0 gatsby-starter-wordpress-blog
gatsby-plugin-manifest 2.12.0 2.12.1 3.2.0 gatsby-starter-wordpress-blog
gatsby-plugin-offline 3.10.0 3.10.2 4.2.0 gatsby-starter-wordpress-blog
gatsby-plugin-react-helmet 3.10.0 3.10.0 4.2.0 gatsby-starter-wordpress-blog
gatsby-plugin-sharp 2.14.1 2.14.3 3.2.1 gatsby-starter-wordpress-blog
gatsby-source-filesystem 2.11.0 2.11.1 3.2.0 gatsby-starter-wordpress-blog
gatsby-source-wordpress 4.0.0 4.0.6 5.2.3 gatsby-starter-wordpress-blog
gatsby-transformer-sharp 2.12.0 2.12.1 3.2.0 gatsby-starter-wordpress-blog
lodash 4.17.20 4.17.21 4.17.21 gatsby-starter-wordpress-blog
react 17.0.1 17.0.2 17.0.2 gatsby-starter-wordpress-blog
react-dom 17.0.1 17.0.2 17.0.2 gatsby-starter-wordpress-blog
react-helmet 5.2.1 5.2.1 6.1.0 gatsby-starter-wordpress-blog</code></pre>
</div>
<h2><span id="toc3">まとめて更新</span></h2>
<p>updateをチェックしてまとめてアップデートしてくれる&#8217;npm-check-updates&#8217;というツールを使います。そのツールをインストールします。</p>
<p>% npm install -g npm-check-updates</p>
<p>これで、ncuコマンドを使えるようになりました。</p>
<p>% ncu -u</p>
<p>ちょっと乱暴ですが、まとめてアップデートのコマンド。これで、package.jsonの中身が最新版になります。</p>
<p>% npm install</p>
<p>で、パッケージを最新版にインストールしなおします。</p>
<p>% npm outdated</p>
<p>で確認すると、何も出てこなかったので、続けて</p>
<p>% gatsby develop</p>
<p>すると無事サーバーが起動して、ブログが表示できました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/gatsby-updated/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GatsbyでヘッドレスWordPress</title>
		<link>https://horumont.info/programming/headless-wordpress-blog/</link>
					<comments>https://horumont.info/programming/headless-wordpress-blog/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Tue, 23 Feb 2021 05:49:09 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=356</guid>

					<description><![CDATA[Over40WebClub主催の勉強会でとりあげたテーマです。 管理者のピータンさんの提案で講師をさせていただいたので、その過程を残そうと思います。その時にできたブログがこれー＞ぼちぼちブログ＠Gatsby。 ここに至る [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Over40WebClub主催の勉強会でとりあげたテーマです。</p>
<p>管理者のピータンさんの提案で講師をさせていただいたので、その過程を残そうと思います。その時にできたブログがこれー＞<a href="https://bochibochi-blog.netlify.app/">ぼちぼちブログ＠Gatsby</a>。</p>
<p>ここに至るまでにはpitangさんにメンターのごとく伴奏していただきました。ありがとうございました！今後、勉強会で作ったブログをカスタマイズして、いずれ、このWordPressをヘッドレスにして、GatsbyJSのブログをメインにしていきたいと思います。</p>
<p>&nbsp;</p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">なぜ、今、WordPress　×　Gatsbyか</a></li><li><a href="#toc2" tabindex="0">ヘッドレスWordPressとは？</a></li><li><a href="#toc3" tabindex="0">Gatsby+WPによるヘッドレスWPサイト構築の概要</a></li><li><a href="#toc4" tabindex="0">１　WPプラグインのインストール</a></li><li><a href="#toc5" tabindex="0">２　公式スターターを使用してGatsbyサイトの生成・設定</a></li><li><a href="#toc6" tabindex="0">Netlifyへデプロイ</a></li><li><a href="#toc7" tabindex="0">ビルドウェブフックの設定</a></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">なぜ、今、WordPress　×　Gatsbyか</span></h2>
<p>新しいプラグインの発表。</p>
<h2><span id="toc2">ヘッドレスWordPressとは？</span></h2>
<p>WordPressは「このページ表示して」という要求に応じて、サーバー側でデータベースから必要なデータをとってきます。これが首から下の部分です。</p>
<p>それを表示できるデータにしてブラウザに渡して表示します。これ頭（ヘッド）</p>
<p>今回は、WordPressから事前にデータだけをもらって（ヘッドレスWordPress）、ヘッドの部分を別の技術を用いて（今回は静的サイトジェネレーターGatsby）つくるということです。</p>
<p>今回はこの「ヘッドレスWordPress」に対して、WordPressだけで運用しているサイトのことを「バニラWordPress」と呼ぶことにします。</p>
<p>WordPressとGatsbyをつなぐのが、REST API　や　GraphQLでデータを取得することができます。</p>
<p>今回は最近注目されているクエリ言語であるGraphQLを使います。</p>
<p>クエリ言語：問い合わせ言語。データに対して問い合わせて必要なデータを抽出したり、並べ替えたりするための言語。SQLとか。</p>
<h2><span id="toc3">Gatsby+WPによるヘッドレスWPサイト構築の概要</span></h2>
<ol>
<li>WPプラグインのインストール</li>
<li>公式スターターを使用してGatsbyサイトの生成・設定</li>
<li>WPサイトへの接続</li>
<li>Netlify にデプロイする</li>
<li>GraphQLを使ってコンポーネントを構築する</li>
</ol>
<h2><span id="toc4">１　WPプラグインのインストール</span></h2>
<p>検索してインストールします。</p>
<h3><a href="https://ja.wordpress.org/plugins/wp-graphql/">WPGraphQL</a></h3>
<p>WordPressサイトにGraphQLのスキーマ及びAPIを提供す<img loading="lazy" decoding="async" src="https://horumont.info/wp-content/uploads/2021/02/fa03390a94dbcb8f6eae25ebdd09be04-500x194.png" alt="WPGraphQLプラグイン画面" width="500" height="194" class="alignnone size-medium wp-image-362" srcset="https://horumont.info/wp-content/uploads/2021/02/fa03390a94dbcb8f6eae25ebdd09be04-500x194.png 500w, https://horumont.info/wp-content/uploads/2021/02/fa03390a94dbcb8f6eae25ebdd09be04-300x116.png 300w, https://horumont.info/wp-content/uploads/2021/02/fa03390a94dbcb8f6eae25ebdd09be04.png 616w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<h3><a href="https://ja.wordpress.org/plugins/wp-gatsby/">WPGatsby</a></h3>
<ul>
<li>WordPressサイトをGatsbyへのデータ源として最適化する。</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://horumont.info/wp-content/uploads/2021/02/739a0bb2e7fbb826d0deff62750d2e26-500x211.png" alt="WPGatsbyプラグイン画面" width="500" height="211" class="alignnone size-medium wp-image-364" srcset="https://horumont.info/wp-content/uploads/2021/02/739a0bb2e7fbb826d0deff62750d2e26-500x211.png 500w, https://horumont.info/wp-content/uploads/2021/02/739a0bb2e7fbb826d0deff62750d2e26-300x127.png 300w, https://horumont.info/wp-content/uploads/2021/02/739a0bb2e7fbb826d0deff62750d2e26.png 610w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<h2><span id="toc5">２　公式スターターを使用してGatsbyサイトの生成・設定</span></h2>
<ol>
<li>gatsby-starter-wordpress-blog を使って、新規gatsbyプロジェクトを生成 → <a href="https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-wordpress/docs/tutorials/creating-a-new-site-from-a-starter.md">gatsby-source-wordpress v4 チュートリアル</a>より
<pre><code class="language-bash">$ gatsby new bochibochi-blog &lt;https://github.com/gatsbyjs/gatsby-starter-wordpress-blog&gt;
</code></pre>
</li>
<li>プロジェクトフォルダへ移動　→ VScodeでプロジェクトを開く
<pre><code class="language-bash">cd bochibochi
code .  
</code></pre>
<ul>
<li><code>code .</code>コマンドはMacの場合、事前の設定が必要な場合があります。
<ol>
<li>command + Shift + P でコマンドパレットを開く</li>
<li>shell で検索</li>
<li>シェルコマンド:PATH内に&#8217;code&#8217;コマンドをインストールします。 Shell command : Install &#8216;code&#8217; commnad in PATH</li>
</ol>
</li>
<li>VSCode内でターミナルを開いておきましょう。<br />
ターミナル → 新しいターミナル　または　control + Shift + ^</li>
</ul>
</li>
<li>環境変数WPGRAPHQL＿URLの設定
<ol>
<li><code>gatsby-config.js</code>を開きます。</li>
<li>環境変数 WPGRAPHQL_URLの初期値を設定する。
<pre><code class="language-jsx">resolve: `gatsby-source-wordpress`,
      options: {
     // the only required plugin option for WordPress is the GraphQL url.
        url:
          process.env.WPGRAPHQL_URL ||
          <span style="color: #ff0000;">`https://wpgatsbydemo.wpengine.com/graphql`,</span>
      },
</code></pre>
<p>以下のように変更</p>
<pre><code class="language-jsx">resolve: `gatsby-source-wordpress`,
      options: {
     // the only required plugin option for WordPress is the GraphQL url.
        url:
	　　　process.env.WPGRAPHQL_URL ||
          <span style="color: #ff0000;">`https://horumont.info/graphql`</span>
      },
</code></pre>
</li>
</ol>
</li>
<li>開発環境で表示してみましょう
<pre><code class="language-bash">gatsby develop
</code></pre>
</li>
<li>Git操作
<ol>
<li><code>git add .</code></li>
<li><code>git commit -m "first initial"</code></li>
</ol>
</li>
<li>GitHubにリポジトリ作成してPush　ー＞　GitHubCLIを使ってみます。
<ol>
<li><code>gh repo create bochibochi</code></li>
<li><code>git branch -M main</code></li>
<li><code>git push -u origin main</code></li>
</ol>
</li>
</ol>
<h2><span id="toc6">Netlifyへデプロイ</span></h2>
<ol>
<li>Netlifyへログイン</li>
<li>New site from Git → サービス選択（ぼくはGitHub）</li>
<li>リポジトリ選択</li>
<li>各種設定<br />
Gatbyサイトならビルドするブランチやディレクトの設定はおおむね自動でやってくれます。</li>
<li>Deploy Site→Site settings→Change site name</li>
<li>なんやかやとしているうちにデプロイ終了します。アドレスをクリックして確認してみましょう！</li>
</ol>
<h2><span id="toc7">ビルドウェブフックの設定</span></h2>
<ol>
<li>Site overviewからSite settingsへ</li>
<li>Build &amp; Deploy → Build hooks
<ol>
<li>Add build hooksをクリック</li>
<li>Build hook name　はどのサイトのフックか分かる名前を設定します。</li>
<li>Branch to build は基本的にmainでOK</li>
<li>Saveをクリック</li>
</ol>
</li>
<li>WordPress管理画面での設定
<ol>
<li>設定→GatsbyJS</li>
<li>Build Webhookのところに、Netlifyで生成されたURLを貼り付けます</li>
<li>更新</li>
</ol>
</li>
<li>設定終了。WordPressでかんたんな記事を投稿するか、更新すれば、ウェブフックがきいて自動でデプロイされます。NetlifyのDeployタブを開いておくと、その様子が見て取れます！</li>
</ol>
<h2><span id="toc8">まとめ</span></h2>
<p>先日参加した勉強会</p>
<p class="event_title"><a href="https://x-hack.connpass.com/event/204196/">【静的サイトジェネレーター】Gatsby.js に一緒に入門しよう vol.2</a></p>
<p>では、アメリカではGatsby人気で、これから日本でも徐々に浸透し始めてる、いや、すでに火が付き始めているといました。</p>
<p>ぼくもそう思います。WordPress一択の今の日本のウェブ業界の課題にこたえるGatsbyJSは、今まさに勉強する価値のあるテーマです。一度、自分のWordPressからGatsbyサイトをつくってみてはいかがでしょうか！</p>
<ul></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/headless-wordpress-blog/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GatsbyでヘッドレスWordPress｜Netlifyへデプロイ＆Webフック設定</title>
		<link>https://horumont.info/programming/headless-wordpress-netlify-buildhooks/</link>
					<comments>https://horumont.info/programming/headless-wordpress-netlify-buildhooks/#respond</comments>
		
		<dc:creator><![CDATA[ほるもんT]]></dc:creator>
		<pubDate>Sat, 20 Feb 2021 00:10:49 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[GatsbyJS]]></category>
		<category><![CDATA[Webhooks]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://horumont.info/?p=273</guid>

					<description><![CDATA[Gatsbyの持っている強みとWordPressの持っている強みをかけ合わせてのブログ構築に挑戦中。 GatsbyCloudでのWebhook設定はとてもかんたんにできたのですが、他のホスティングサービスでもできるのか、 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Gatsbyの持っている強みとWordPressの持っている強みをかけ合わせてのブログ構築に挑戦中。</p>
<p>GatsbyCloudでのWebhook設定はとてもかんたんにできたのですが、他のホスティングサービスでもできるのか、やってみました。まだまだ初学者に毛が生えたくらいなので、本当はもっとちゃんとしたやり方があるかもしれませんが、その経過を残しておきたいと思います。</p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Webフックとは</a></li><li><a href="#toc2" tabindex="0">前提</a></li><li><a href="#toc3" tabindex="0">ウェブフック設定手順</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">Webフックとは</span></h2>
<p><a href="https://qiita.com/soarflat/items/ed970f6dc59b2ab76169">Webhookとは？  </a><a href="https://qiita.com/soarflat" class="it-Header_authorName">@soarflat</a><a href="https://qiita.com/soarflat/items/ed970f6dc59b2ab76169"></a>さんの記事より</p>
<ul>
<li>アプリケーションの更新情報を他のアプリケーションへリアルタイム提供する仕組みや概念のこと。</li>
<li>イベント（リポジトリにプッシュなど）発生時、指定したURLにPOSTリクエストする仕組みのこと。</li>
</ul>
<p>要するにここでは、WordPressの投稿が更新されたことをリアルタイムでホスティングサービスに伝えて、ビルド操作を自動で行うことを言っています。NetlifyではGithubリポジトリと連動してビルドが自動で走るようになっていますが、データベース（ここではWordPress）からの更新はGithubには直接反映されないので、自動で更新されません。</p>
<p>ヘッドレスWordPressブログにおいては、ブログ更新するだけでは、ブログが更新されません。次のいずれかの操作が必要です。</p>
<ol>
<li><code>netlify deploy --prod</code></li>
<li><code></code>なにかファイル更新をして、Githubリポジトリを更新</li>
</ol>
<p>この記事のウェブフックを設定することで、今まで通りのWordPressの更新作業だけで、本番サイトも更新されるようになるのは大きなメリットです。</p>
<h2><span id="toc2">前提</span></h2>
<ol>
<li>Gatsby-WordPressブログの公式スターターを使って、WordPressサイトと連携したブログサイトを構築</li>
<li>Netlifyにおいてデプロイしている</li>
</ol>
<h2><span id="toc3">ウェブフック設定手順</span></h2>
<p>Netlify公式の説明はこちら ー＞ <a href="https://docs.netlify.com/configure-builds/build-hooks/">Build hooks</a></p>
<ol>
<li>ウェブフックURLを取得
<ol>
<li>対象サイトの設定画面において<br />
Site settings &gt; Build &amp; deploy &gt; Continuous deployment &gt; Build hooks.</li>
<li>ビルドフック名設定<br />
なんでもOK。あとで見てなんのフックかわかる用意設定します。</li>
<li>デフォルトでビルドするブランチを設定します<br />
基本的にはmainブランチがおおいのでしょうか。チーム開発していたりすると、確認のために、featureとかdevlopブランチとか。チーム開発経験浅くてわからない😅</li>
<li>Saveボタンをクリック</li>
</ol>
</li>
<li>生成されたURLをWordPressブログのGatsbyJS設定のBuildHookに設定
<ol>
<li>WordPressブログの管理画面から<br />
設定　ー＞　GatsbyJS</li>
<li>BuildsWebhookのところに、取得したURLを貼り付ける</li>
</ol>
</li>
</ol>
<p>以上でおしまいです。<br />
記事をなにか更新して、netlifyのdeploysタブを開いておくと、勝手にビルド処理が走るのを確認できます！</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horumont.info/programming/headless-wordpress-netlify-buildhooks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
