サーバ移行とそれに伴うWordPress.comエラーのお話

お久しぶりです。
今回、本当はフレームワークの比較記事を書きたかったのですが、色々あって他のことを書きます。

まず、このブログおよびGo to Everyone!が動作するサーバを乗り換えました。
その話は追々書くとして、心機一転ブログ書くかと思ったわけです。

話は変わって、最近仕事や個人での開発で、ドキュメントをMarkdown形式で書くことが増えてきました。
HTMLより簡潔にマークアップすることができ、かつExcelのようにバイナリでもないのでバージョン管理の比較もやりやすいわけです(単純なテキスト比較で済むので)。

そんな経緯から、「ブログの記事もMarkdownで書けたらええのにな」と思い、ちょっと調べたわけです。
このブログはWordpressで運営しているのですが、すでに導入していた「Jetpack」というプラグインにその機能があったので、それを有効化しました。

で、これを使うためにはWordPress.comというところから書くことになるわけですが、ここからハマりました。

投稿・プロフィール・画像など、ほとんど見えません!!!

ブラウザの開発者ツールで確認すると、関連してそうなAPIのレスポンスがエラーになっているようです。
Wordpress.comでは、「Wordpress.com → 公開API → 当ブログ」の流れでデータを取得していますが、どうやらサーバー移転に伴いおかしなことになっていそうだったので調べました。

調べているうちに、ついにJetpackプラグインのソースコードのデバッグを始めるも、

  • プラグインは最新 → ソースコードは最新のはず
  • サーバー上での直接編集なのであまり色々できない
  • GithubのIssuesを見てもそれっぽいバグも上がっていない

とすっかりはまっていたわけですが、以下の記事で解決しました。

PHP7.1でJetpakがエラーになる件【原因と解決方法】

以前のサーバーではPHP7.0.xを利用していました。
今回の移行に伴い「PHP7.1.x使えるからこれにしておこう」とやった結果、今回の問題に遭遇したというわけです。
サーバーの管理画面からPHP7.0.xを利用するように戻すと、問題なく表示されるようになりました。
ただ、上記の記事でも原因まではわかっていないとのことだったので、これについてはもう少し調べてみます。

改めてネットの力はすごいですね。
元記事と同様、取り急ぎ同じ事象にハマっている人の手助けになればと、こちらでも取り上げました。

プログラマにおすすめする書籍・その2

以前の記事に続き、今回もいくつか紹介させていただきます。

60分でわかる!機械学習&ディープラーニング超入門

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

60分でわかる!機械学習&ディープラーニング超入門 [ 安達章浩 ]
価格:1058円(税込、送料無料) (2017/8/6時点)

 

私と同じく碁を打つ方なら記憶に新しい「Alpha碁」をはじめ、昨今何かと話題の「機械学習」。
この「機械学習」とはどのようなものなのかをわかりやすい図解を見ながら学べます。
「60分でわかる」内容なのであくまでも入門ですが、

  • どんなものかざっくりと知りたい
  • どういった製品・サービスに活用されている(できる)のか知りたい

という方にはぴったりです。

Pythonではじめる機械学習

 

こちらは完全に参考書ですね。
数学的な知識や分析についてある程度経験がある人でないと読み進めるのは難しいかもしれません。
ただ、Pythonのコード例や図式も多いですし、内容としては基礎から学んでいけるので、ある程度プログラミングの経験があれば特に問題なく読み進められるかなと思います。

Ruby on Rails 5アプリケーションプログラミング

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Ruby on Rails 5アプリケーションプログラミング [ 山田祥寛 ]
価格:3888円(税込、送料無料) (2017/8/6時点)

 

こちらはRubyで一番有名なフレームワーク、Railsの書籍です。
Railsはコミュニティやプロジェクトが「ひとつの世界」を作りあげている気がしています(gem使ってなんでもRailsでやってやろうぜという文化はある意味狂気です)。
最新メジャーバージョンである5に対応しており、これ一冊でアプリケーション作成は問題なく進められます。
個人的には、推しエディタであるVS Codeについてコラムで触れられていたのが嬉しかったです。
CoffeeScriptって最近あまり聞きませんが、Railsをメインで使っている人は今もバリバリ使ってるんですかね…。

今回は以上です。
日進月歩(下手すればもっと早いですね)なIT業界では情報が陳腐化するのも早いので、
フレームワークやライブラリについて書かれている書籍は新しめのものを購入するべきだと思います。
ただ、言語仕様や考え方などの根底部分は基本的に変わらないので、そういった書籍はいつのものでも新しい発見がありますね。

プログラマにおすすめする書籍・その1

今回はプログラマ(もしくは目指している方)に向けて、いくつかおすすめの書籍を紹介します。
私の経験を踏まえてなのでWeb系がメインです。ご了承ください。

リーダブルコード

「コメントの書き方」「処理のわけ方」「テストのやり方」など、プログラミングするうえで基本的な考え方を学べます。
イラストにユーモアがあるのでそちらも楽しめます。
私は今年になって手に取りましたが、プログラミング初心者から経験者まで十分楽しめる内容になっていると感じました。

はじめてのCSS設計 フロントエンドエンジニアが教えるメンテナブルなCSS設計手法

フロントエンドエンジニアというか、Webサイトを作成するなら必須となるデザインまわりについて学べます。
前半は指定方法の優先順序やSMACSSなどの設計思想など基礎的な部分について紹介されています。
後半はタスクランナーGulpとSASS、EJSなどのモダンな技術を使ってサンプルサイトを作成します。
こちらも初心者~経験者まで幅広く楽しめる内容になっています。

Laravelリファレンス Web職人好みの新世代PHPフレームワーク

 

最近流行りのPHPフレームワーク、Laravelを使った開発について学べます。
こちらはある程度経験のある方、かつWeb系で開発する方が対象です。
扱っているバージョンが5.1系と少し古いですが、こちらはLTS(長期サポート)なので今から始める場合でも特に問題ありません。
一通りの機能についてコードを見ながら学べるという点はもちろん、後半にある便利なライブラリの紹介が私にはとても役立ちました。

Go言語によるWebアプリケーション開発

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Go言語によるWebアプリケーション開発 [ マット・ライヤー ]
価格:3456円(税込、送料無料) (2017/7/26時点)

こちらは最近何かと話題の「Go言語(Golang)」について書かれています。
Go言語の特徴として、豊富な標準関数・ビルドしてしまえばどこの環境でもバイナリ1つで動作するという手軽さ・実行速度がよくあげられます。
この本はそんなGo言語でWebAPIを作成します。
WebAPIに限らず、Go言語を学ぶにあたりたくさんのノウハウがここで紹介されているので、是非手に取ってみてください。

Windows/Mac/UNIXすべてで20年動くプログラムはどう書くべきか

最後はシェルスクリプトを利用した、未来でも動作するプログラムを書くということについて学べる書籍です。
プログラミングしていると、面倒な環境構築や異なるOSへの対応などで悩まされることがあります。
OS間で標準化されたインターフェース(POSIX互換ともいいます)だけを使えば、どんなOSでも原則同じプログラムを動作させることができ(Windows10からはUbuntuが利用可能)、バージョンアップにも柔軟に対応できます。
そのためのノウハウをコマンドの意味と合わせて学べます。
正直「そこまでシェルでやるか…」と思うような部分もありましたが、「こんなコマンドあるんか」という発見も多いのでおすすめです。

いかがでしたでしょうか。
また機会があれば紹介したいと考えていますので、希望などありましたらこちらからどうぞ。

Visual Studio CodeでDjangoをはじめる

以前書いたDjangoに関する記事の閲覧数が多いので、今回は私がDjangoアプリケーションを開発する際の設定について紹介します。

Pythonのインストール

こちら
今更2系を選ぶ理由は無いので、3系の最新をダウンロード・インストールしましょう。

Visual Studio Codeのインストール

PythonはVisual StudioやIntelliJなどのIDEでも開発可能ですが、設定が楽+軽量なので私はVisual Studio Codeを利用しています。
というわけで、まずはVisual Studio Codeをインストールしましょう。

プラグイン追加

Djangoの開発をするうえで必要な以下プラグインをVisual Studio Codeに追加します。

Jinjaについてはテンプレート用です(Djangoテンプレートでもハイライトが効くようになります)。
※Django template用のプラグインもあるのですが、これは.htmlの拡張子レベルで関連付けを行ってしまうため、通常のHTMLを書くときに影響が出ますので利用していません。

プロジェクトの作成

以前の記事を参考にしてください。

Python実行ファイルの定義

Pythonで開発するにあたり、ローカルにインストールしたPythonの実行パスを定義します。
「ファイル」→「基本設定」→「設定」または「エディタ左下の歯車」→「設定」でユーザー設定ファイルを開き、以下を定義してください。
※{path/to/〇〇} にはPythonまたは関連ライブラリがインストールされているディレクトリを定義してください。

実行設定の追加(launch.json)

Pythonに限らず、Visual Studio Codeで開いたプロジェクトを実行するために「F5」キーを押すと、実行する言語を選択するエリアが表示されます(必要に応じてここで対象言語用のプラグインをインストールすることができます)。
ここで言語を選ぶと、Visual Studio Codeでは関連する実行設定ファイル(launch.json)を「プロジェクトルート/.vscode」に自動で生成してくれます。
このファイルにある「Django」の箇所を必要に応じてメンテナンスします(以下は例ですが、初期設定から基本的には変更不要です)。

${config:python.pythonPath}は先ほど設定したpythonPath、${workspaceRoot}は現在Visual Studio Codeで開いているプロジェクトのルートディレクトリを示しています。

実行

エディタ左側の虫マークを選択し、「デバッグ」という表示横のプルダウンから「Django」を選び、横向き三角ボタンを押せば実行されます。
ちなみに、上記設定でデバッグ可能なので、ブレークポイントを貼るとそこで止められますし、変数の中身も確認できます。
ただし、それらは「–noreload」が無ければできません。

なので、通常の「ファイル変更」→「リロード」という手順を踏む場合は、上記設定から「–noreload」を除外して実行することになります(この場合、エディタのデバッグコンソールにも何も出力されません)。
eclipseやIntelliJでも同様のようです。

なお、私個人が作っているものがこちらにありますので、Djangoでの開発に興味のある方は是非ご覧ください。
※PRも受け付けております。

Djangoの記事は需要がありそうなので、またそのうち書きます。

Laravel・Lumenでログ出力先を変更する

最近勢いがあるPHPフレームワークの1つであるLaravelですが、ログファイルのデフォルト出力先は以下になっています。

  • storage/logs/laravel.log

普段、私は自分が作成した複数アプリ(CakePHP・Rails・Django・バッチ処理など)で同じログディレクトリを利用しています(管理しやすいので)。
また、デプロイ時にはシェル側でリンクを切り替えて対応しています。
そのため、プロジェクトディレクトリ以下に出力されると結構不便なんですよね。

Laravelでは、他フレームワークのように「configファイルをいじるだけでディレクトリ・ファイル名を操作する」というのができませんでした。
※ディレクトリの変更自体はApplicationクラスのuseStoragePath()メソッドで可能です。
なので、今回はこれをカスタマイズした方法を紹介します。
といっても、他言語や他フレームワークでやるような継承を使うだけです。

1. 独自のLogServiceProviderを作成

まずはじめに、\Illuminate\Log\LogServiceProviderを継承した独自プロバイダを生成します。

2. 独自のApplicationクラスを作成

次に、独自のApplicationクラスを生成します。
ここで、上記のMyLogServiceProviderを利用するように変更します。

3. 利用するApplicationクラスの変更

最後に、利用するApplicationクラスをMyApplicationに変更します。

これでログ出力をカスタマイズできます。

ちなみに、Laravelの軽量版であるLumenでは、Laravelの手順1が不要で、手順2の独自アプリケーションクラスでgetMonologHandler()を継承するだけで良いです。