讃岐小僧のEngineering×Techメモ

プログラミングや、趣味の野球、資産運用について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【ブロガー必見】ブログの書き方

ブログの書き方
ブログの書き方

はじめに

今回は、ブロガー(アフィリエイター)を目指していて、初めてWordPressを使ってブログを書くという方に見てほしい内容になります。

ブロガーの方はGoogleにどんな内容かを理解してもらい、Googleのインデックスに登録してもらい、必要がありますそのためには適切なタグを活用しながらブログを書く必要があります。

H1~H2

記載中 ...

無料で優秀なテーマCacoonをWordPressに適用する

無料で優秀なテーマCacoonをWordPressに適用する
無料で優秀なテーマCacoonをWordPressに適用する

そもそもWordPressとは?

WordPressとは一言にすると「ウェブサイトを作るために様々な機能を提供してくれる開発キット」です。

開発キットとしてのWordPressの機能については、また別の記事で紹介いたします。

テーマとは?

WordPressが開発キットで、テーマは開発キットを使って作る制作物(ウェブサイトそのもの)です。

WordPressテーマとは?
WordPressテーマとは?

図にある通り、テーマの中でHTML・CSSJavaScriptなどのプログラムファイルを作成します。

WordPressやプログラムを深く理解しないとサイトが作れない?

HTML・CSSJavaScriptなどプログラミングができないとウェブサイトは作れないのでしょうか?

実はそんなことありません。 WordPressのテーマには既に開発されていて無料で公開されているものが多く存在しています。

これれは簡単にダウンロードができて自分のサイトに活用することが可能です。

この記事では無料のテンプレートでも特に優秀なCacoonを使ってサイトにテーマを適用してみます。

Cacoonをダウンロードする

wp-cocoon.com

Cacoonテーマをダウンロードする
Cacoonテーマをダウンロードする

ダウンロードを完了したら次のステップに進みます。

管理画面へログインする

Cacoonテーマをダウンロードしたら次は、WordPressの管理画面へログインを行います。

今回、WordPressのログインは以前、Localで作成したサイトを使ってみましょう。

もしまだサイトを作っていない方は下記のリンクから手元PCでサイトを準備してから続きに進んでください。

www.sanuki-kozo.com

Wp Adminを押下します
Wp Adminを押下します

WP Adminを押下したら管理画面へのログイン画面に遷移します。

ID・パスワードを入力して管理画面へログインする
ID・パスワードを入力して管理画面へログインする

ログインの認証情報には、サイトを立ち上げた時に入力したユーザ名とパスワードを利用します。

// コピーして使ってください

ユーザ名:test
パスワード:test-taro

ID・パスワード
ID・パスワード

テーマを適用する

テーマを適用する前に、もう一度、現状のサイトを確認しましょう。

http://hellowordpress.local/

確認をしたら次はテーマを適用してサイトがどのように変わるか確認しましょう。

http://hellowordpress.local/

確認したら次はCacoonをサイトに適用します。

外観>>テーマに移動する

管理画面の左側のメニューで、外観>>テーマに移動します。

外観>>テーマに移動する
外観>>テーマに移動する

新規追加を押下する

テーマの一覧が表示されている画面で、「新規追加」を押下します。

新規追加を押下する
新規追加を押下する

テーマをアップロードする

テーマをアップロードする
テーマをアップロードする

ダウンロードしたZipファイルを押下する

ダウンロードしたZipファイルを押下する
ダウンロードしたZipファイルを押下する

今すぐインストール

今すぐインストール
今すぐインストール

テーマを有効化する

テーマを有効化する
テーマを有効化する

LOCALでPCにWordPressサイトを立ち上げる

LOCALでPCにWordPressサイトを構築する
LOCALでPCにWordPressサイトを構築する

はじめに

この記事では、Localを使ってでPC上にWorPressサイトの構築を行う手順を公開します。

Localのインストールがまだお済みで無い方は下記のリンクよりLocalをインストールしてからこの記事を進めてください。

www.sanuki-kozo.com

Localを使ってPCにサイトを構築する手順

それでは順を追って構築する手順を画像つきで説明していきます。

サイト作成ボタンを押下する

左下の+ボタンを押下しています
左下の+ボタンを押下しています

Create a new siteを選択してContinueを押下する

Create a new siteを選択してContinueを押下する

Create a new siteを選択してContinueを押下する

サイト名を作成する

// コピーして使ってください
hello-wordpress

サイト名を記入する
サイト名を記入する

各種オプションを選択する

オプション
Type Custom
PHP Version 7.4.1
Web Server Apache 2.4.43
Database MySQL 5.7.28

各種オプションを選択する
各種オプションを選択する

ユーザ名とパスワーを決める

// コピーして使ってください

ユーザ名:test
パスワード:test-taro

ユーザ名とパスワードを決める
ユーザ名とパスワードを決める

ここまで完了するとしばらくしたらサイトが完成します。

PCのパスワード入力が求められることもあります
PCのパスワード入力が求められることもあります

サイトが完成したか確認する

サイトが完成したか確認する
サイトが完成したか確認する

完成されたサイト例
完成されたサイト例

VUCAワールド

VUCA:複雑で先行きが見えにくい時代
VUCAワールド
はじめに

これから、ビジネスや社会はの先の見通せない時代になる。
激しいIT開発、社会情勢の急変、疫病の流行、消費者トレンドの変化、、
こういう危機感からか今更ながら無理矢理、「DX研修」なるものを受講させられたので気になったというか知らなかったワードをメモしておこうと思います。

VUCAワールド

今後は予測可能性の低い、先が見通せないVUCA(ブーカ)と呼ばれる状況になるとのこと。

それぞれのワードが表す意味は下記の通りだ。

  • V=Volatility(変動性)
  • U=Uncertainity(不確実性)
  • C=Complexity(複雑性)
  • A=Ambiguity(曖昧性)

変動性(Volatility)

技術革新やデジタルディスラプターの出現により業界のパワーバランスやビジネスが変わるなど、あらゆるものが物凄いスピードで変動する時代。

不確実性(Uncertainity)

インバウンド需要などは国の戦略としても重要なポジションを担っていたはずだ。

しかしながらコロナなどの疫病の流行で一瞬にして状況は一変。

何があるかわからない不確実性が高い時代というのは納得。

複雑性(Complexity)

印象的だったのが、SaaS, IaaS, PaaSなどそもそも意味のわからない言葉を並べられて、その違いがさらにわかった前提で「ビジネスで行かせそうなアイデアはありますか?」と言われているシーン。

ヘルプデスクレベルのIT部署の担当者でも答えられないような質問。

確かに複雑だ。

曖昧性(Ambiguity)

将来の急激な変動や、不測の事態、複雑性が増している状態など様々な条件が重なり合って、曖昧な解釈や確信でビジネスを進めないといけない状態というのはある。

ロシアが急に北海道はロシアのものだと言い始めるように、日本はそもそも中国のものだと言い出しかねない。

そんな意味不明で曖昧な世界観が今の現実。

主観的な意見

人口減少、DX人材不足、景気悪化、若者にお金がないことなど、日本はとっても厳しい環境だと感じている今日この頃、とても納得できるワードというか造語でした。

Google にウェブサイトが表示されない??

Googleにサイトが表示されない?そんな時に確認してください。
Googleにサイトが表示されない?そんな時に確認してください。

Googleにサイトが検索されない!?

そんな方もいるのではないでしょうか。

Googleも完璧ではないようで、何十億ものページをクロールしているので、見落とすこともあるそうです。

よくある原因が下記のページに記載されていたので確認していきましょう。

developers.google.com

Googleにサイトが表示されない5つの原因

  1. サイトがウェブ上の他のサイトからリンクされていない。
  2. 新しく立ち上げたばかりのサイトで、Google がまだクロールできていない
  3. サイトのデザイン上の問題により、Google がコンテンツを実質上クロールできない
  4. Google がサイトをクロールしようとした際にエラーが発生した。
  5. Google がサイトを見逃した

サイトがウェブ上の他のサイトからリンクされていない

自分のサイトを他のサイトからリンクしてもらえるかどうかを確認します(ただし、リンクしてもらうためにお金を払わないでください。Googleガイドラインに違反する行為と見なされる可能性があります)。

↑リンクのためにお金を払うというルール違反はあり得ないとして、他のサイトからリンクされているかどうか?という点はとても重要です。

サイト内でも、どこからもリンクのないページを作成してしまった場合は、陸の孤島のようになってしまい、クローラーも巡回できないので、サイトマップを作成したり、Footer等にリンク集を作るなどして孤立したページを作らないように意識しましょう。

↓メルカリのFooterをちょこっと見てみると、ちゃんとリンクされてますね。(そりゃそうだわ。)

メルカリのFooterの例
メルカリのFooterの例

新しく立ち上げたばかりのサイトで、Google がまだクロールできていない

Google が新しいサイトや既存のサイトの変更に気付くまでに数週間かかる場合があります。

これはそもそも見つけてもらえるようになるまで数週間もかかるとちょっと苦しいですよね。

こちらのサイトでも紹介した通り、重要なページについてはインデックス登録依頼を行うなどして対策しましょう。

www.sanuki-kozo.com

サイトのデザイン上の問題により、Google がコンテンツを実質上クロールできない

サイトが HTML ではなく、その他の特殊なテクノロジーを使用して構築されている場合、Google がサイトを正しくクロールできない可能性があります。サイトでは、画像や動画だけでなく、必ずテキストも使用してください。

こちら、例えば画像だけでサイトを描写しているなどしている場合、流石にクローラーも解析できないということでしょうか。

HTMLで描写はしているけど、ほとんどimgばかりで表示しているような特殊なサイトの場合かもしれませんが、imgタグばかりのサイトでもalt属性を追加するなどして画像に意味を持たせるなど工夫して「テキスト情報」をクローラーに渡すようにしましょう。

Google がサイトをクロールしようとした際にエラーが発生した。

このエラーが発生する一般的な原因は、サイトにログインページがあるか、なんらかの理由でサイトが Google をブロックしていることです。シークレット ウィンドウでサイトにアクセスできることを確認してください。

こちらも、そもそも、会員制サイトなどはクロールしてもらうことはできません。クロールしてもらいたいサイトは制限をなくしましょう。

Google がサイトを見逃した

Google は何十億ものページをクロールしていますが、小規模なサイトなどはクロールされない場合もあります。少し時間を置いて、他のサイトからリンクされるようにしてみてください。

こちらの対応策としては、やはり有効なリンクをたくさん持っておきサイトに必ず辿りついてもらえるようにしないといけないでしょう。

【WordPress研修(無料公開)SEO編 #002 ~サイトが検索結果に表示されるまで~】

WordPress研修(無料公開)SEO編 #002
WordPress研修(無料公開)SEO編 #002

WEBサイトの目的は、ビジネスやブログをお客様に見つけてもらって、そこから実際に店舗に来てもらったり、アフィリエイトブログなら何かに申し込んでもらうことが目的になると思います。

では、最初の「お客様に見つけてもらう」ためには何から始めるべきなのか。

この記事では、その内容について重要な簡単に紹介していきます。

お客様に見つけてもらうためにすること

このページでは、検索エンジンの簡単な説明をした後に、Google Search Consoleを利用してGoogleへインデックス登録を依頼する手法について説明をしています。もしこのあたりの内容を既に知っているよという方はスキップしていただけると幸いです。

検索エンジンに表示されるようになりましょう

そう、お客様にビジネスを見つけてもらうためにはまずは検索エンジンに表示されるようにならなければなりません

Googleの検索に表示されるまでには下記のようなフローが存在します。

Google検索に表示されるようになるまでの流れ
Google検索に表示されるようになるまでの流れ

サイトを制作して、Googleにインデックス登録を依頼し、ユーザーに表示されるために、Googleに評価される内容にしなければなりません。

Google検索の仕組みについては下記の公式動画がとてもわかりやすいのでぜひ確認しましょう。

www.youtube.com

当ブログ内でも内容を簡単にご紹介します。

Google検索の仕組みの理解

仕組みは細かいところまで行くと難しいですが、大まかにいうと公式の動画でも紹介がある通り、下記の3点のみです。

  1. クロール
    クローラーという自動プログラムが存在しています。
    新しいページや更新されたページを探して、Googleのインデックスというとても大きなリストに登録されるようになります

  2. Googleインデックスへの登録
    1のクローラーによって検出したページの内容を分析して「Google インデックス」に保存します。

  3. 検索結果を表示
    Google で検索するとGoolgeは「質の高いページ」をユーザーに表示しようとします。

さて話を戻しましょう。

Google検索に表示される」までに最初の段階で特に必要なのは、Google検索の仕組みでも説明した1~2のプロセス(クロール、インデックス登録です)になります。

ではどのようにクローラーに来てもらって、どのようにインデックス登録してもらうか説明します。

インデックス登録依頼

新しいサイトや小規模なサイトはGoogleクローラーに忘れられてしまったり、回覧してもらえないことがあるようです。

確実に、クローラーにサイトに訪れてもらうためにはGoogle Search Consoleを活用してインデックス登録を依頼することが重要です。

インデックス登録依頼の方法

Google Search Consoleにログインして、サイトがインデックスされているかどうかを確認します。

新しいサイトやページの場合はほぼ確実に登録されていないので、Google Search Consoleからインデックス登録依頼をできるだけするようにしたほうがいいでしょう。

Google Search Console内でのインデックス登録依頼の方法
Google Search Console内でのインデックス登録依頼の方法

  1. 検索ボックスに確認したいURLをコピー・ペーストしてURLがGoogleのインデックスに登録されているか確認します。

  2. 登録されていない場合は、写真の通り、「URLがGoogleに登録されていません」のように表示されるので「ページインデックス登録をリクエス」を押下します。これでインデックス登録を依頼することができます。

Google Search Consoleでインデックス登録を依頼することができます
Google Search Consoleでインデックス登録を依頼することができます

登録されている場合は...??

登録されている場合でも、サイトを更新した場合などには再度クローラーに来てもらい、内容を確認してもらう方が良いでしょう。

Google Search Consoleで登録されているサイトの場合の表示

Google Search Consoleで登録されているサイトの場合の表示

mjsファイルとは? -CommonJSとECMAScriptの違いについてメモ-

f:id:keisuke8925gdk:20220315105604p:plain

最近、node.jsのスクレイピングプログラムの開発を行なっていたところ、 xx.mjsという見慣れないファイル形式のファイルを見つけた。

~mjsは知らなかったので、その内容について少し調べていくとECMAScript moduleがどうこうという話みたいなのでこれを機に自分的理解を進めてみようと思い調べてみることに。

ECMAScriptとは?

ECMAScriptJavaScriptの標準仕様のことでEcma Internationalによって標準が定められている。

EcmaScriptJavaScriptは一緒ってこと?

→そういうことだった。

そもそもJavaScriptにはバージョンが存在しないということであり、バージョンというよりは、「EcmaScript 2015に準拠したJavaScript」のような感じ。

何年も使ってきて今更知る自分に驚いている。

Ecma Scriptのバージョン

ECMA Scriptは2015年版から「ECMAScript 2015」のように仕様の名称に発行年が付けられるようになったようで、現在は「ECMAScript 2018」が最新になるようだ。

天下のMDN web Docsにバージョン情報はWikipediaを参照するようにと書かれていたので現時点での最新の更新情報については下記のWiki記事を参照されると良いと思われる。

ja.wikipedia.org

developer.mozilla.org

Ecma Intenational(エクマインターナショナル)

Ecma internatinalは情報通信システムの分野における国際的な標準化団体だそうで、1961年にヨーロッパにおける計算機システムを標準化するために設立されたとのこと。現在はスイスのジュネーヴにある。

↓サイト下部にSwitzerlandと書かれてますね

Ecma international 本当にスイスにあったって話
Ecma international 本当にスイスにあったって話

Google Mapで見てみた。

なんか京都っぽい街並みな気がした。

Ecma intenationalが入居しているビル

www.ecma-international.org

mjsファイルとは?

.mjsファイルとは簡単にいうと、Ecma Scriptに準拠したJavaScriptファイルだよとファイルフォーマットで明示されたもの。

node.jsでデフォルトで採用しているのはCommonJS

commonJSは下記のような構文を利用して書くJavaScript

node.jsのプロジェクト内でxx.jsという名前のファイルだとcommonJSの構文で書かれたプログラムとnodeは期待して動く。

//index.js
const helloWorld = require('./hello-world.js')

//hello-world.js
module.exports = function helloWorld() {
    console.log("Hello World");
    return;
};

確かに、普通にxx.jsのようなファイル形式でnode.jsを書く場合はこのように記載するケースが現状ではほとんどでした。

EcmaScriptをnode.jsで利用する場合

// index.mjs
import { helloWorld } from './hello-world.mjs';

// hello-world.mjs
function helloWorld() {
  console.log("Hello World"")
  return;
}

export { helloWorld };

このようにして利用する。

今思えば、node.jsではこのように書いていなかったが、Angular, Vue、NestJS(そういえばTypeScriptだけどES2015準拠で書いていたな。)などなどではそもそもEcmaで書いていた。

なんかスッキリした。

最後に

EcmaScript等については、ビルドの話や読み込み方の話や、そもそもの背景歴史的な記述をたくさん目にした。

このブログ内では細かい歴史には踏み込まないが、一つ感じたのが、今後はEcmaScript形式でnode.jsも書いていく方が良さそうだということ。

既存の簡単なやつから書き換えていこうと思います。

Nuxt製WEBアプリでFirestoreのServerTimeStampをyyyy年mm月dd日で表示する

NuxtアプリでFirestoreのServerTimeStampをyyyy年mm月dd日の形式で表示する
NuxtアプリでFirestoreのServerTimeStampをyyyy年mm月dd日の形式で表示する
最近、チャットで受け付けた問い合わせの見落としや対応漏れが怖いということで、チャットBotを拡張して問い合わせを管理する簡単なシステムをnuxt.jsで開発しています。

その中で、今回、firestoreのserverTimeStampを利用したのですが、そのデータを日付として画面に表示するにはひと工夫必要だったのでその時との対応メモをここに残しておきたいと思います。

システム前提条件

  • nuxt v2.15.8
  • vue 2.6.14

システムでやること整理

  • 【チャットBOT】:問い合わせを受け付け
  • 【チャットBOT】:Firestoreにデータを格納
  • 【nuxt製フロントエンドシステム】:問い合わせ内容を表示

上記のフロントエンドシステム内で、いつ受け付けたものか把握するために、createdDateというドキュメントフィールドを作成し、そのフィールドにはseverTimestamp()で作成したデータを格納することとしました。

↓が部分的ですがFirestoreに登録している部分です。

  try {
      const db = await getFirestore()
      await addDoc(collection(db, "requests"), {
      userID: accountId,
      content: messageText,
      status: false,
      createdDate: serverTimestamp()
    });
  } catch(e){
    console.log(e)
  }

FIrebase Server TimeStamp
FIrebase Server TimeStamp

登録に成功するとFirebaseの管理コンソール画面では下のようにしっかりと2022年3月3日という風に表示されます

Firebase管理コンソールでFirestoreを確認した結果
Firebase管理コンソールでFirestoreを確認した結果

とし、これでviewでも同じように表示できるはず、、っと思っていましたがそれがどうもうまくいかないようでした。

こんな感じ

 {{ ticket.createdDate }}

serverTimeStampの表示が崩れる
serverTimeStampの表示が崩れる

これは何かしらの対応が必要なんだなと悟った瞬間でした。 サクッといかせてほしいのに。。

では、Search Consoleでデータも確認しておきましょう。

search consoleでの確認結果
search consoleでの確認結果

ここは全然詳しくないんですが、nanosecondsseconds があるらしい。

ただ、今回はそこを深ぼる必要はなさそうなので早速対応した方法を共有していきます。

今回はserverTimeStampをフィルターで加工して表示することとしました。

serverTimeStampをフィルターで加工して表示する手順

フィルター用のプラグインを作る

pluginsフォルダにdate-filter.jsを作成します。

※このファイル名はなんでもいいです。

ファイルは下記のようにします。 もしyyyy年mm月dd日のような表示をしたい方はこのままコピーして利用できると思うのでぜひ使ってください。

import Vue from 'vue'

const dateFilter = value => {
  return formatDate(value);
};

function formatDate(data) {
  const date = data.toDate()
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const formattedDate = `${year}年${month}月${day}日`;
  return formattedDate;
}

Vue.filter('date', dateFilter)

プラグインnuxt.config.jsで読み込む

nuxt.config.jsdata-filter.jsを読み込みます。

  plugins: [
    '@plugins/date-filter.js'
  ],

viewでフィルターとして利用する

ここまで設定すればあとはViewで利用するだけです。

 {{ ticket.createdDate | date }}

まとめ

今回はFiretoreに格納したservertimestampの処理方法についてメモしました。これ以外の方法もあると思うので、これ以外に何かいい方法がある方はSNSでも、このブログのコメントでも大丈夫なのでぜひご連絡ください。