メジャーバージョンアップでやりたいこと

メジャーバージョンアップするとしたら、個人的にやりたいなと思ってること:

  • PHP 7.1以上対応にする
    • コードスタイルを今風にする
      • short array syntaxとか戻り値の型ヒントとか
      • その他あまり知らないけどあれば取り入れてく
  • 周辺ライブラリのアップデート
  • php-cs-fixerでコード規約チェック
  • PHPStan or Phanの導入

基本的に本体のコードは安定してるのでロジックに手を入れる必要はないと思ってるが見つかればやる(非推奨API使ってるとか)。

ライブラリを探してる人が安心して導入に踏み切れる状態にできていればいいなと思う。

あとは自分の興味の範囲でやれるところから無理なくやっていきたい。

woothee-php v1.8.0をリリースした

リリースした。

https://github.com/woothee/woothee-php/releases/tag/v1.8.0

Packagistにも公開されている。

https://packagist.org/packages/woothee/woothee#v1.8.0

リリース作業が初めてだったので、@yuya_takeyama さんに手順を教えていただいた。Github Releasesでリリースを作るとwebhook経由でPackagistにも公開される。便利。

woothee-phpのtravis-ci.ymlを見直した

woothee-phpのコミット権をもらっているのだが、いつのまにかTravis CIでPHP 5.3のテストが失敗する状態になってたようで、修正のプルリクエストを頂いたのでありがたくマージさせてもらった(一ヶ月以上放置してしまってすみません)。 内容としてはテスト対象のPHPバージョンから5.3を外すものだった。

https://github.com/woothee/woothee-php/pull/39

ただ、マージしてから思ったが、woothee-phpPHPの対応バージョンが5.3.3以上となっている。なのでPHP 5.3のテストはしておきたい。もしPHP 5.3の対応を外すとなると非互換の変更になるため、それはメジャーバージョンアップで行うべきだと思う。

なので、まずはPHP 5.3でテストが完走するようにtravis-ci.ymlを調整した。

https://github.com/woothee/woothee-php/pull/40

今後の方針として個人的には、次のメジャーバージョンで古いバージョンのサポートは切りたい。5.3を切ればshort array syntaxが使えるし、7.0以降に導入されたいろんな便利な機能を使った今どきのPHPプログラミングに興味がある。いまだとPHP 7.1以上サポートとするのが良さそう? http://php.net/supported-versions.php

しばらくPHPから離れていたので、これを気に再入門してみたい。

railsなしのwebアプリ開発 (2) アプリケーションサーバ

アプリケーションサーバについて。

たしかrackを使うはずなので、rackについて調べる。

やることはみっつ。

これでrackupコマンドでアプリケーションサーバが起動する。

$ bundle exec rackup
[2018-09-04 17:42:40] INFO  WEBrick 1.4.2
[2018-09-04 17:42:40] INFO  ruby 2.5.1 (2018-03-29) [x86_64-darwin17]
[2018-09-04 17:42:40] INFO  WEBrick::HTTPServer#start: pid=5268 port=9292

WEBrickって見覚えあるけどrackに入ってるやつだったのか。

ログにあるとおり9292番ポートで待ち受けているので、http://localhost:9292 にアクセスするとページが表示される。

railsなしのwebアプリ開発

いきなりRailsから触り始めたのでアプリケーションサーバとかRailsがいい感じにやってくれてることがよくわかってない。 一度基本に立ち返ってみる。

  • アプリケーションサーバ
    • これはrackを使うのだろう。
  • DB接続
    • mysql2を使う?
  • テンプレートエンジン
    • わからない
  • ルーティング
    • わからない

まずはアプリケーションサーバから確認していく。

Crowi

最近Crowiを触っている。
CrowiはUIがjQueryで組み立てられてて、新しい機能はReactで実装されている。
Reactの範囲がまだ狭いので、全体の動作が把握しやすくReactの勉強にちょうどいい。
既存処理のReact化をちょっとずつやっていこうと思う。

browserifyを試す

とある案件でJavaScriptでブラウザ判別をする必要があり、それではとwoothee-jsを使った。1ファイルにまとまってるファイルがあったので今回はそれを使ったけど、npmのパッケージが用意されてるのでbrowserify使ったらどうなんだろうと思って試してみた。

まずは公式サイトを参考に進めてみる。

http://browserify.org/

作業

インストール。

$ npm install -g browserify

browserify コマンドが使えるようになった。

$ browserify
Usage: browserify [entry files] {OPTIONS}

〜略〜

とりあえず作業ディレクトリを作って

$ mkdir -p ~/dev/labo/browserify/hello-browserify
$ cd $_

npmパッケージをインストール。

$ npm install woothee

main.js を記述。

var woothee = require('woothee');

woothee.parse('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)');

ビルド。

$ browserify main.js -o bundle.js

コードがライブラリと実装コード含めて bundle.js にまとまった。 これを <script src="bundle.js"></script> のように読み込めばブラウザで動くはず。

まとめ

  • 分かったこと
  • 分からないこと
    • require という関数は何なのか
    • require 関数がnpmパッケージを検索する手順

感想

node.jsとかnpmとかの理解が全然足りてないが、JSのパッケージ管理についてとっかかりがつかめた気がする。 次はrequrejsについて調べてみたい。