コンテンツへスキップ

Docker および Docker Compressを導入

参考記事(Docker導入):

参考記事(Docker導入):

Docker WordPress 導入

Docker Composeを用いて、Wordpressを導入します。Compseファイルを作成し、コンテナをビルド、起動すれば、Wordpressの利用が可能です。
すぐにWordpress環境の利用が可能です。

Docker Composeファイルの作成

プロジェクト用のフォルダーを作成します。

$ mkdir ~/project01
$ cd ~/project01

作成したプロジェクトフォルダーに、Composeファイル(docker-compose.yml) と 環境ファイル(.env) を作成します。

docker-compose.yml サンプル

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    env_file: .env

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wordpress:/var/www/html
    ports: 
      - "8080:80"
    restart: always
    env_file: .env

volumes:
  db_data:

.env サンプル

MYSQL_ROOT_PASSWORD=root_pass
MYSQL_DATABASE=wordpress_db
MYSQL_USER=wordpress_user
MYSQL_PASSWORD=wordpress_pass

WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_NAME=wordpress_db
WORDPRESS_DB_USER=wordpress_user
WORDPRESS_DB_PASSWORD=wordpress_pass

解説

利用するDBファイルとWordpressファイルの、永続化(保存しておきたいデータ)をCompseファイルで明示的に指定し、コンテナ停止時もデータが保持されるような設定を行います。

/var/lib/mysql に配置されるWordPressのデータベースを、db_dataという名前の永続化領域に指定。

db:
  volumes:
    - db_data:/var/lib/mysql
volumes:
  db_data:

/var/www/html に配置されるWordPress の各種ファイル (wp-config.phpなど) を、ホスト側の ./wordpress フォルダに配置する指定。

wordpress:
  volumes:
    - ./wordpress:/var/www/html

Docker Composeの起動

docker-composeコマンドを用いてコンテナの起動を行います。初回起動時には、コンテナのビルドが行われます。

$ docker-compose up

永続化データの確認

コンテナを停止し、永続化指定したデータが保存されていることを確認します。

control + c で停止してから、
$ docker-compose down

永続化したはずのデータが残っているか確認してみます。

$ docker volume ls
...
local               project01_db_data

以上となります。
実際の運用時には、SQLパラメータ変更やサイトのSSL化を実施しているので、少し異なる設定で運用を行っております。

最終報告

先週は、アクセス集中によりシステムダウンとなり申し訳ございませんでした。
無事に新規環境に移行し、めざましじゃんけんの結果収集なども開始し、すでに旧環境への切り戻しも難しい状況であり、新環境で進んでまいります。

本日、めざましじゃんけんの第2戦目が終了した時点ですが、問題なく動作しているように見えております。
昨日は、新規環境(Docker + Ubuntu)のタイムゾーン設定がUTCとAsia/Tokyoに差分があり、オンタイムで時計を見つつ、めざましじゃんけんのポイント集計や開催回次を計算しているので、各種不具合が発生しておりました。

現時点、7時台に入りましたが、サクサク余裕のある状態で、サイト運営出来ております。
引き続きよろしくおねがいします。
(じつは、サイト訪問者のプロファイルが全く分かっておりません。パソコンとか技術内容には、興味がない人がめざましテレビやめざましじゃんけんの予想をキーワードに、サイトに来て、他の記事を見てそのままMIKIIEサイトから離脱って感じに見えてます。。)

サイトへの直接アクセス者が増えていることにも、驚いております。
全く、当たらないじゃんけん予想。そろそろ、人工知能のエンジン部分を公開し、有識者の方々にも是非意見を頂きたいところです。

今後

少しペースを落としたいと思いますが、引き続き技術ネタなどの記事を投稿して行きますので、次回の訪問をお待ちしております。

あー、ほんとに、2日連続のサイトダウンはびっくりしました。
あと、計画時間の少ないシステム移行とか、エイヤーのアプリ改修とか、無謀以外でしかないですね。ただ、これぐらいがITの良い付き合い方なのかも。

Twitter 日本語投稿時の文字数・バイト数チェック

何度か、最大文字数を超えて、投稿エラーとなりました。
Twitterの文字数制限は、欧米のアルファベットユーザー対象に140文字から280文字となった経緯があります。
ただし、マルチバイト文字(日本など)向けのユーザーは、140文字の文字数制限のままでした。
実際には、半角文字と全角文字を組み合わせると、140文字以上の文字数が投稿出来たりできておりました。とりあえず、バイト数を数えて、280文字で投稿していたのですが、上手く行かないケースが多々ありました。

以下サイトを見て、最大文字数の確認方法を変更しました。

Twitterの最大文字数と最大バイト数の関係を調べてみた

  • 利用したいハッシュタグを配列登録 (ランダムで選択)
  • 280文字対応 (以前は、280バイト前後で考えていた)
    $max_char = 280 + $url_char - 11.5;
    URLは一律11.5文字でカウント
    投稿文全体で、280としておけば間違いないと思います。
    mb_strwidth($tweet_text) < $max_char
  • ハッシュタグの「ー(ハイフン)」を「_(アンダースコアー)」へ
  • URL1件投稿時の最大文字数対応(必要に応じてハッシュタグ部分を削減で対応)

文字数のカウントは、mb_strwidthを利用します。
mb_strwidth:半角文字は 1 として、 全角文字は 2 として数えます。

strlen  関数は単純にバイト数、mb_strlen  関数は半角・全角関わらず1文字とカウント、Twitterの特殊ルールに合わせるなら、 mb_strwidth  を使うのが確実です。

Twitterへアプリ登録

(PHPから実行時に必要となる、API Key、API Secret Key、Access Token、Access Token Secretの取得を行います

PHPからTwitterへの操作は、TwitterOAuthというライブラリを用います。

  1. Twitterへの開発者登録とApp登録
  2. TwitterOAuth導入

Twitterへの開発者登録とApp登録

Twitterの以下のURLへアクセスし、登録をすすめます。

上のURLよりサービスにログインします。

ログイン後の画面です。右上の「Create an app」をクリックします。

「Create an app」を押すと、最初に開発者アカウントへの登録へ誘導されます。

一番の開発理由を聞かれます。「Professional」これは通常ビジネス目的、「Hobbyist」趣味なので、個人利用は通常このカテゴリとおもいます。
今回は、API経由でTweet・Postを行いたいので、Making a botを選択しました。BOTの作成。

アカウント情報の確認をされました。通常問題ないと思います。

1,居住国、2.呼び名を聞かれました。それぞれ、Japanと「(適当に)mikiie」と登録しました。

アプリの説明をフリーフォーマットで記載しました。
WEB翻訳などで準備した内容を貼り付ければOKです。

追加の質問事項に回答します。
Twitter情報を分析Analyzeするか? Tweet,Retweet, Like, Followなどを実施するか?
また、フリーフォーマットで、開発対象の機能内容の記載が必要でした。

これまでに記載や選択した内容のサマリ画面が表示され、間違いがないか確認を行い、「Looks good!」を選択します。

最後に利用規約に同意し、Submit Application(申請を送信)すると、利用申請の結果がメールで届きます。

利用申請後に着信した利用申請結果メールのリンクよりアクセスすると、Welcome画面が表示されます。

開発登録者完了後に、Create an appを実施するとアプリの作成が行えます。
コールバックURLを登録する必要がありまうが、PHPが動作するサーバで問題ないとおもますので、http://127.0.0.1/と登録しておけば問題ないです。

最後に、Keys and TokensでアプリのAPI Keysを取得します。
(API Key、API Secret Key、Access Token、Access Token Secretの取得を行います

PHPからTwitterに投稿 TwitterOAuth導入

TwitterOAuth

GitHub-twitteroauth

V1.1 Source code (tar.gz)

TwitterOAuthをダウンロードし、PHPを利用したいサーバに配置します。

  1. ライブラリのダウンロード
  2. tar.gzの解凍
  3. フォルダ名の変更
$ curl -OL https://github.com/abraham/twitteroauth/archive/1.0.1.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 127 0 127 0 0 285 0 --:--:-- --:--:-- --:--:-- 294
100 714k 0 714k 0 0 475k 0 --:--:-- 0:00:01 --:--:-- 1674k

$ tar -zxvf 1.0.1.tar.gz
$ mv twitteroauth-1.0.1/ twitteroauth/

以下、一番簡単なサンプルPHPです。

<?php
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$consumerKey = "your consumer key";
$consumerSecret = "your consumer secret";
$accessToken = "your access token";
$accessTokenSecret = "your access token secret";

$twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);

$result = $twitter->post(
        "statuses/update",
        array("status" => "Tweetテスト")
);

if($twitter->getLastHttpCode() == 200) {
    print "tweeted\n";
} else {  &nbsp; 
 &nbsp;  print "tweet failed\n";
}

UTF-8 のEmoji利用について

すっと昔は、通信キャリア毎でのコードの違いなどから、利用する際には独自にコード変換などをする必要があり、多くのユーザー環境を考えると、利用するにはそれなりの決断と覚悟が必要でした。

Unicodeで規格化され、日本のみならず全世界でEmojiが利用できるのですね。

あまり、細かいことを気にせずに利用出来そうです。

じゃんけんの、グー・チョキ・パーって、カタカナやアルファベットで書くよりも、やはり、絵文字✊✌✋が一番分かりやすい。

よって、まずはグーチョキパーがどの程度のクライアントでサポートされているのか気になり、調べてみました。

結論として、一番最初のEmoji規格である、Unicode6.0よりサポートされておりました。

Emoji のクライアント毎のサポートするUnicodeバージョン

Emoji Version 1.0は、Unicode 6.0として順次追加されて行きました。

パソコンやスマートフォンなどで世界的に対応されたことから日本国内だけでなく世界中で利用されるようになりました。

日本発信の文化であり、「Emoji」が正式名称となります。

Microsoft社 Windows 7より、Unicode 6.0 をサポート

Apple社 Mac OS X Lionより、Unicode 6.0 をサポート

Google社 Android 4.1より、Unicode 6.0 をサポート

現在は、Unicode 12.0

  • 2010年10月11日 Unicode 6.0.0 携帯電話の絵文字
  • 2014年6月16日 Unicode 7.0.0 約250字の絵文字追加。
  • 2016年6月21日 Unicode 9.0 72種類の絵文字追加
  • 2017年6月20日 Unicode 10.0 56種類の絵文字追加
  • 2019年3月5日  Unicode 12.0.0 59種類の絵文字追加、3019個の絵文字

Emoji入力について

日本語入力時の変換で、絵文字は出てきますね。

後は、コード直接よりも、以下の文字一覧を公開しているサイトからコピー&ペーストして利用するのも簡単だと思います。

https://lets-emoji.com/emojilist/

UnicodeのEmoji 12.0の一覧

http://unicode.org/Public/emoji/12.0/emoji-data.txt