とーますメモ

Ruby on Rails / Goなどの学習メモ

【Wix】使う前に知っておきたい!WixとWordPressの違い

以前の記事にも書いたとおり、
WixはHTMLやCSSなどの技術を知らなくても
簡単にサイトが作成できる。

thoames.hatenadiary.jp

この記事では初心者の立場から見た
WixWordPressの違いについて解説するが
最初に結論を書くと、以下の通りになる。

Wix WordPress
環境設定の有無 不要
セキュリティへの対応 不要
カスタマイズの自由度
無料デザインテンプレート やや多
サポートの有無 質問投稿有

1)環境設定の有無

言わずもがな、WixWordPressと比べ
以下のようなサービスを使うための環境設定をする必要がない。

  • サーバの選定
  • サーバソフトウェアのインストール及び設定
  • データベースのインストール及び設定
  • WordPressのインストール及び設定
  • SEO対策またはECショップ運営用などのプラグインのインストール及び設定

2)セキュリティ対応

Wixを使用する場合、セキュリティへの対応は不要だ。
裏で動いているサーバのアップデートや、
その他のセキュリティの更新は全てWix側で行われる。

そのためWixの使用者は、ただコンテンツやデザインのことだけ考えるのに集中できる。

WordPressを使用する場合、セキュリティの保持するための
WordPress本体や必要に応じたプラグインのアップデートが随時必要になる。

WordPressは世界中で支持を得ているソフトウェアであるため
その分、多くの攻撃者に狙われやすい。
近年の2017年2月に発生したバージョン4.7.1のような脆弱性が発覚した場合、
すぐに対応できる体制をWordPressを使う場合は、整えておく必要がある。

chaika.hatenablog.com

3)カスタマイズの自由度

ある程度HTML、CSSJavaScriptなどの知識がある人は、
自分で任意のコードを追加・編集したくなるだろう。

Wixでも簡易のHTML設定は可能だが、
WordPressと比べると些細なものだ。

以下、WixでのHTML設定例

f:id:Thoames1212:20170828062656p:plain

[参考]
独自のCSSは設定できませんか?

WordPressはスキルがあれば
ほとんどのことは何でもできる。
カスタマイズの自由度で言えば、WordPressに軍配が上がる。

4)デザインテンプレート

こちらについては
「"すぐ"に無料で使えるテンプレートが豊富にある」という点においては
Wixのほうが上だろう。

WordPressも海外のサイトまで探せば、無料のテンプレートがいくらでも見つかるが
WordPressのバージョンにマッチし、且つ良い感じの無料テンプレートを
探すのは骨が折れる。すぐにサイトを立ち上げる必要性がある場合や
手軽にテーマを選びたい場合は、Wixのほうが良いだろう。

ただWordPressには、自由にデザインを変更できるというメリットがある。
今後、デザインの変更の必要性が出てきそうなら、
要件に合う無料のテーマを探して、WordPressを使うのも良いだろう。

有料のWordPressテーマでもかまわないという場合は
海外サイトではあるが以下のサイトをオススメする。
高品質なデザインがすぐに見つかる。

market.envato.com

5)お問い合わせ・サポートの有無

WordPressオープンソースの無料ソフトウェアなのでサポートサービスは無い。
Wixは英語など、日本語以外での電話サポートはあるが
日本語での電話サポートは無い。
だが質問投稿によるサポートは日本語対応している。

[参考]
Wix への電話でのお問い合わせ

まとめ

個人的な意見ではあるが、
初心者がWixを使うか、WordPressを使うかで決め手になる点は
更新やセキュリティ保守などの管理コスト」をどう考えるかだと思う。

WordPressは作るだけなら、ある程度知識があれば簡単にできる。
しかし問題は管理や保守で、例えばセキュリティなんかの問題が絡むと
途端にハードルが高くなる。

なのでサイトを作成する場合、

  • 予算があまりなく、更新やセキュリティ保守があまり重要でない場合は「WordPress
  • 予算があまりなく、更新やセキュリティ保守が重要である場合は「Wix
  • ある程度予算があり、更新やセキュリティ保守が重要である場合は「制作会社

を基準としたら良いと思う。

もちろんスキルがある方は、最初からWordPressで作れば良いだろう。

要件に応じて、適切な選択をしたいところだ。

【Wix】Wixを使うべきただ1つの理由と、最適なプラン選択

いきなりだが、Wixを使うべきただ1つの理由。

それは下記の動画を見ていただければ、分かりやすいが、
専門的な知識(HTMLやCSSなど)を知らなくても
簡単にホームページを公開できる
」という点にある。

WordPressなどで自分でサイトを作ると
更新作業やセキュリティなどの保守が大変だが
Wixでは全く気にする必要はない。

またネットショップ、ブログ、お問い合わせフォーム、オンライン予約
なんかも、もちろん使える。

www.youtube.com

自分も試してみたが、テンプレートを選んで
文字を編集して、写真を変えて、公開するだけという手軽さ。
ホームページビルダーと比較しても、良質なテンプレートが
揃っている気がする。

ちなみに公式サイトのトップには「無料で作る」という文言が入っているが
実際に無料モードで作ると、

  • Wixサイトを作ろう!」(右上)
  • 「このホームページはWIX.com.を使って作成されました。あなたも無料で作りませんか」(サイト下部)

が、それぞれ広告として表示される。

ビジネスとしてホームページを立ち上げる場合、
また個人的なホームページであっても
上記のような広告がサイトに入るのは、正直微妙。

なのである程度、信用が必要とされる情報を公開する場合は
有料プランを契約する必要がある。

現時点(2017/08/26)での有料プランは以下通り。

f:id:Thoames1212:20170827042612p:plain

ECショップ用サイト

ECサイトを作るなら、問答無用で

  • VIPコース:月額約24ドル
  • eコマース:月額約16ドル

かを選択する必要がある。
VIPコースには、「毎月10回の宣伝メール作成」と「サイトレビュー」という
SEO改善のためのレビューをしてもらえる機能がある。※ただし英語でのレビュー。
この辺はサイトの用途によって決めると良いだろう。

ECショップ以外のビジネス用・個人用サイト

ECショップを作る以外で1番需要が多いとされるのは、
1番安い月額4ドルのプランは広告が入るので論外なので

  • コンボ:月額約8ドル
  • 無制限コース:月額約12ドル

だと思われる。

注意したいのはコンボプランの「帯域幅」。

帯域幅とは要は「転送量」のことで、このプランの場合
月毎に2GBの転送量があった時点で、サイトが見られなくなる。
Wixで2Gの帯域幅をオーバーした場合

Webサイト1ページ毎の転送量(データ)は、サイトによって
それぞれ違うのでなんとも言い難いが
おおよそ1ページあたり1MB〜3MBだと思われる。真ん中の2MBで計算すると
「月に1000人」ぐらいのアクセスまでは、このプランで対応できるものと思われる。

このプランに当てはまる需要は
名刺代わりに、とりあえずサイトを立ち上げたい会社か個人ぐらい。

サイトを立ち上げた時点でアクセス数にこだわらないならこのプランでも十分と思う。
仮にオーバーしそうになっても、オーバーする前にWixから連絡が入り
アップグレードも可能なようなので、最初はコンボプランで試してみても良いだろう。

ただしお問い合わせフォームなどのフォーム系を設定したい場合は
「無制限」プラン以上を選択する必要があるようだ。

【Elasticsearch】設計時のポイントについて

設計のポイントについては
以下のサイトさんがよくまとまっている。

dev.classmethod.jp

他には2.x系の場合
string系のフィールドには「not analyzed」を設定できないかを考慮する。
こっちのほうが性能が良くなるらしい。

またフィールドの自動追加機能をオフにしたほうがいいらしい。
小数点を使用したいフィールドが勝手に丸められてしまうなどの
現象が発生するっぽい。

【Elasticsearch】初心者用。良さげなチュートリアルや勉強方法について調べてみた

いろんなサイトを拝見させていただいたが
多くのサイトで以下のサイトさんを紹介しているケースが多い。

code46.hatenablog.com

上記のサイトさんでは以下のデータセットを使い
Elasticsearchでの検索方法について言及している。

github.com

ただこのデータセットをElasticsearchに入れる方法については
このサイトさん内では言及していないため、
手軽に使ってみたい初心者としては、まずこの時点でつまずきやすいと思う。

データの注入方法については以下を参考にしてほしい。
thoames.hatenadiary.jp


現在(2017/08/21)購入できる日本語の本としては以下の本があるが
残念ながらバージョンが古いElasticsearchを対象としており
5.x系を使用しようとした場合、動作しない箇所があるなど戸惑うことだろう。

上記の本を購入する場合、並行して読んでおきたいサイトさんが以下のサイトさん。
知りたかったことがピンポイントでまとまっている。素晴らしい!
Cry for the Moon | 書籍 ElasticSearch Server と Elasticsearch 5.2


また1.x系と5.x系の違いは以下のサイトさんがよくまとめている。
soymsk.hatenablog.com


他にもこのサイトさんもよく情報がまとまっているので併せて読んでおきたい。
medium.com

【Elasticsearch】データをElasticsearchに入れる方法について調べてみた

多くのサイトで以下のデータセットを使っているケースが多い。

github.com

この記事ではこのデータセット使用させて頂き
データをElasticsearchに入れる方法について解説する。

調べてみたところ、データの注入方法としては
以下の方法があるようだ。

  1. River系プラグインRDBからデータを入れる
  2. River系プラグインCSVからデータを入れる
  3. Bulk APIを使用する
  4. Index APIを使用する

1) River系プラグインRDBからデータを入れる

elasticsearch-jdbcというツール(元はプラグイン?)を使って
データを入れるというの主流っぽい。

qiita.com

ただしこの「elasticsearch-jdbc」は、現時点(2017/08/21)で
Elasticsearchの2.3.4までにしか対応していない。

※以下公式内の「Compatiblity matrix」箇所を参照
github.com

ちなみに現在の2.x系の最新版は「2.4.6」。

最新版の2.x系や5.x系を使用する場合、上手く動作しないっぽい。
※自分は2.4.6で試してみたが、動作しなかった。

2) River系プラグインCSVからデータを入れる

以前は、以下のプラグインを使ってCSVからデータを入れていたようだが
riverの廃止により、1.7.x系までしかサポートしていない。
1)の方法と同じように、最新版の2.x系や5.x系を使用する場合、上手く動作しないっぽい。

github.com

以下公式より引用

As from ES version 2 and above, rivers are not supported anymore. This said we've discontinued this repo for active development and let it be only for important fixes.

3)Bulk APIを使用する

JSONファイルを作成し、一気にバルクインサートする。
以下のサイトさんが詳しく解説している。

qiita.com

ameblo.jp

ただこのJSONファイルを作るのも、ちょっと面倒くさい。
専用のDSLに沿ったJSONを書かないといけないので、
JSONファイルを作成するためのコードを別途作成必要がある。

elasticsearch用jsonを作成せずとも、単純なデータだけのjson
データを注入できる「steam2es」というツールもあるらしい。
以下のサイトさんが解説している。

blog.johtani.info

ちなみに公式から
各言語に対応したクライアントも出ている。

Rubyだとこんな感じかと。(未検証)

①インストール

gem install elasticsearch

②コード作成

# デフォルトでlocalhost:9200に接続
client = Elasticsearch::Client.new log: true
# HOSTやURLを指定したい場合は以下。
# client = Elasticsearch::Client.new host: 'search.myserver.com'
# client = Elasticsearch::Client.new host: 'myhost:8080'
# client = Elasticsearch::Client.new url: 'https://username:password@api.server.org:4430/search'

client.bulk body: [
  { index:  { _index: 'myindex', _type: 'mytype', _id: 1, data: { title: 'foo' } } },
  { update: { _index: 'myindex', _type: 'mytype', _id: 2, data: { doc: { title: 'foo' } } } },
  { delete: { _index: 'myindex', _type: 'mytype', _id: 3  } }
]

[参考]
https://github.com/elastic/elasticsearch-ruby/blob/master/elasticsearch-api/lib/elasticsearch/api/actions/bulk.rb
http://inokara.hateblo.jp/entry/2015/12/14/231143


4)Index API

自分の場合は、手軽くデータを入れたかったので
この方法に落ち着いた。

以下のサイトさんのやり方を参考にRubyコードを作成
easyramble.com

①コード(insert_data.rb)の作成

#!/usr/bin/env ruby

require "csv"

CSV.open("restaurants.csv", "r") do |f|
  f.each_with_index do |item, i|
    next if i == 0
    p item
    `curl -XPUT 'http://localhost:9200/ldgourmet/restaurant/#{item[0]}' -d '
      {
        "id": "#{item[0]}",
        "name": "#{item[1]}",
        "property": "#{item[2]}",
        "alphabet": "#{item[3]}",
        "name_kana": "#{item[4]}",
        "pref_id": "#{item[5]}",
        "area_id": "#{item[6]}",
        "station_id1": "#{item[7]}",
        "station_time1": "#{item[8]}",
        "station_distance1": "#{item[9]}",
        "station_id2": "#{item[10]}",
        "station_time2": "#{item[11]}",
        "station_distance2": "#{item[12]}",
        "station_id3": "#{item[13]}",
        "station_time3": "#{item[14]}",
        "station_distance3": "#{item[15]}",
        "category_id1": "#{item[16]}",
        "category_id2": "#{item[17]}",
        "category_id3": "#{item[18]}",
        "category_id4": "#{item[19]}",
        "category_id5": "#{item[20]}",
        "zip": "#{item[21]}",
        "address": "#{item[22]}",
        "north_latitude": "#{item[23]}",
        "east_longitude": "#{item[24]}",
        "description": "#{item[25]}",
        "purpose": "#{item[26]}",
        "open_morning": "#{item[27]}",
        "open_lunch": "#{item[28]}",
        "open_late": "#{item[29]}",
        "photo_count": "#{item[30]}",
        "special_count": "#{item[31]}",
        "menu_count": "#{item[32]}",
        "fan_count": "#{item[33]}",
        "access_count": "#{item[34]}",
        "created_on": "#{item[35]}",
        "modified_on": "#{item[36]}",
        "closed": "#{item[37]}"
      }
    '`
  end
end

パーミッションの設定

$ chmod 755 insert_data.rb

③データ挿入

$ ruby insert_data.rb

ちょっと時間かかるけど、シンプルで楽だった。

【Elasticsearch】活用例・用途について調べてみた

調べてみた感じだと以下のような用途で使用されている。

  1. 検索レスポンスの向上
  2. ログ解析・管理
  3. Webクローラとして使用


実践的な活用例としては以下の例が、素晴らしいと思う。

www.slideshare.net

www.slideshare.net


1)検索レスポンスの向上

RDBのインデックス対応などを施してみても
検索レスポンスが向上しない場合などに、使用されるケースが想定される。

RDBのVIEWから読み出したデータをElasticsearchに貯めて
検索させるとかすれば早くなりそう。

ただリアルタイムでRDBとElasticsearchのデータが同期するわけではないので
トランザクションデータなどリアルタイムで同じデータが検索したい場合などは
あまり不向きか。
あくまでもマスタデータなど余り変更が無いデータなどの検索などに向いていると思わる。
※リアルタイム性が特に必要のないのであれば、
同期のインターバルを10分〜30分にするなどすれば、ましになるか。。

このケースだと、WordPressとの連携も可能。

thoames.hatenadiary.jp

2)ログ解析・管理

アクセスログ、エラーログ、SQL系のログなど
色んなログを一箇所でまとめて管理し、グラフ化するといった用途で使用される。
ネットで情報を見る限り、Elasticsearchの利用例はこのケースが一番多い気がする。

3)Webクローラとして使用

以下のようなプラグインを使用することで
Elasticsearchを独立したクローラとして使用できる。
大量のデータをクロールし、検索レスポンスも早いので
通常のWeb技術で作るより、メリットがあると思われる。

github.com

【Elasticsearch】爆速検索!WordPressとの連携方法

つい先日、「WORDCAMP KYOTO 2017」の

WordPressにElasticsearchを連携してみた話」という動画を拝見させて頂いた。

 

WordPress検索のデフォルトではインデックスが効かない「LIKE検索」を採用しているため、記事が増えたときに検索がどうしても遅くなってしまうが、

Elasticsearchを用いての検索は体感で実感できるぐらい、かなり検索が早くなる。
動画の中ではWooCommerceとの連携についても少し話が上がっているが

正にうってつけなソリューションだと思う。

 

せっかくなので具体的なやり方や、

他にどういった連携方法があるのかなどについて調査してみた。

 

wordpress.tv

1.Elasticsearchの基本的な知識がまずは必要

言わずもがな、まずはElasticsearchの基礎知識は必要。

環境設定、インデックスの作り方、クエリの書き方は

とりあえずは必要。

 

thoames.hatenadiary.jp

2. Elasticsearchと連携可能なプラグインを使用する

上記の「WordPressにElasticsearchを連携してみた話」では

以下の「WP Simple Elasticsearch」というプラグインを使用して

WordPressとの連携を行っている。

 

github.com

他にも調べてみたところ、

「Fantastic Elasticsearch」というプラグインが有名みたい。

 

github.com

他にも「Wp-Elasticsearch」というプラグインもあるみたいだが、

こちらは入れると警告が出る。。ソースを読んでみたがPHPの古い記述方式で書かれていたので、恐らくメンテされてないっぽい。

 

Wp-elasticsearch by searchbox-io

 

「Fantastic Elasticsearch」は結構他のブログさんでも紹介されており

自分も実際、入れてみたが綺麗なUIで使いやすそうな印象。

 

【WordPress】Fantastic Elasticsearchを導入してみた

Fantastic ElasticSearchプラグインを入れてみた

 

上記の「Fantastic Elasticsearch」の改造版として

「Kumihimo」というプラグインも検索にひかかったが

作者のページが存在せす、特に何をどう変更したのかが不明。

wordpress.org

3.まとめ

 

  • プラグインを使うなら「WP Simple Elasticsearch」か「Fantastic Elasticsearch」が良さげ。※改造して使うなら「WP Simple Elasticsearch」のほうが、改造しやすい。
  • WooCommerceとの連携に良さげ。