浅野直樹の学習日記

この画面は、簡易表示です

PHP7技術者認定初級試験を受験しました

PHP7技術者認定初級試験を受験してきました。その記録を残しておきます。

 

1.結果

自信がなかった問題はけっこう多かったのですが、それなりに正解していたようです。

 

2.受験動機

pythonよりもphpのほうを主に業務で使っています。laravelのフレームワーク特有の記述をすることが多いのですが、ふとした瞬間にphpの基本的な記述を覚えておらず検索をして、しかも美しくない表現をしたりすることがあるので、基礎を固めたく受験を決意しました。

 

3.模擬試験

PHP7技術者認定初級試験はインターネット上で無料で受けられる模擬試験が1つしかありません。

PRIME STUDY(プライム・スタディ) – Python試験とPHP試験の無料模擬試験サイト

少なくとも2,3回はこの模擬試験で練習することをおすすめします。

 

4.本などの教材

優先度が高い順番に紹介します。

(1)初めてのPHP


初めてのPHP


作 者: David Sklar 著,桑村潤, 廣川類 監訳,木下哲也 訳

出版社: オライリー・ジャパン

発売日: 2017年04月19日

公式に認定されているテキストです。おそらくこの本に書いてある内容しか出題されません。

章末に練習問題が付けられており、手を動かしてそれを解くと力にはなるのですが、PHP7技術者認定初級試験とは毛色が異なります。

私はこの本を、受験を決める前に1回読み、受験を決めてからもう1回読み、受験直前にもう一度読みました。

 

(2)徹底攻略PHP7技術者認定[初級]試験問題集


PHP7技術者認定〈初級〉試験問題集


作 者: 内山祥恵, 棚橋英之 著,古庄道明 監修,ソキウス・ジャパン 編

出版社: インプレス

発売日: 2019年08月08日

試験対策という意味ではこの本が近道でしょう。ある程度の基礎ができている人は、この本だけで、合格点を取ることができるようになると思います。

 

(3)Programming PHP: Creating Dynamic Web Pages





作 者: 

出版社: 

発売日: 1970年01月01日

試験範囲からは逸脱しますが、この本もいいです。残念ながら、この新しいバージョンの日本語訳はまだ出版されていません。

phpで画像の取り扱いなどもそこまでできるのかと感心しました。

 

5.受験後の感想

受験という目標を置いて集中的に学習すると、知らなかった情報を仕入れることができ、知っていてもあやふやな部分をしっかり理解することができるので、日頃の業務のレベルが上がったという実感があります。



docker-composeでミニマムなLaravel(LEMP)環境を構築する

私はこれまでローカル環境でも本番サーバ環境でもdebian系のlinuxマシンの上で直接Laravel(LEMP)環境を構築してきました。

 

dockerを知り、共同開発を楽に行うために、そしてあわよくばkubernetesを使うなどして本番環境でも使えるような形で、dockerを活用してLaravel(LEMP)環境を構築できないかと考えてみました。

 

Installation – Laravel – The PHP Framework For Web Artisansの公式ドキュメントで紹介されているSailを使うやり方は、簡単に環境を構築できますが、何をしているのかよくわからず、php – Is Laravel Sail deployment-ready – Stack Overflowあたりを読む限り本番環境で使うためには作られていないようなので、却下しました。

 

そこで、これならわかるDocker上にLaravel環境構築 | アールエフェクトを主に参照して、自分なりにdocker-composeでミニマムなlaravel(LEMP)環境を構築してみました。

 

結論は以下のgithubをご覧ください。

 

Asano-Naoki/docker_laravel_minimum: docker-compose for minimum laravel(LEMP) environment

 

使い方は上記のgithubの日本語版 README はこちらに書いてあるとおりです。

 

ここからは詰まった箇所などを紹介していきます。

 

まず、全体構成をどうするかに悩みました。既存のプロジェクトにも簡単に適用できるように、Sailを使った場合の構成を参考にして、通常のlaravelプロジェクトディレクトリの中にdockerディレクトリとdocker-compose.yamlを入れる形にしました。mysqlのデータベース関係のファイルは、Sailを使った場合と異なり、dockerティレクトリの中にvolumeを構築してその中に保存するようにしました。

 

このやり方ではlaravelプロジェクトディレクトリはdocker-composeとは別に事前に用意することになります。その際にdockerのcomposerを使うと楽に新しいlaravelプロジェクトディレクトリを作成することができるのですが、デフォルト設定で行うと所有者がrootになってしまうということにしばらく気づかず少しハマりました。

 

理解のためにまずはphpのコンテナだけを作成して、php artisan serveコマンドで確認しようとしました。そのときには、

--host=0.0.0.0

というオプションを設定しないとdocker外のブラウザからアクセスできないということにしばらくハマりました。このあたりのdockerコンテナ内外での通信といった概念はややこしいです。

 

次にmysqlコンテナを加えました。

 

phpからmysqlを扱うために、pdo_mysqlをインストールします。phpからmlocati/docker-php-extension-installer: Easily install PHP extension in Docker containersへとリンクをたどり、その指示に従いました。

 

いつものクセでシェルから「mysql -u root -p」でmysqlにログインしようとしても一向にできる気配がなく悩みました。よく考えればそりゃそうです。mysql-clientが入っていないのですから。「php artisan db」も同じです。

 

mysql-clientをphpコンテナにインストールしてからもmysqlにログインできず困りました。エラーメッセージを手がかりにして調べてみると、パスワード方式の問題のようだと判明し、docker-compose.yamlに

command: --default-authentication-plugin=mysql_native_password

の行を追加しました。

 

その他、mysqlコンテナの初回立ち上げ時にはそれなりの時間がかかる、.envで指定するDB_HOSTが127.0.0.1ではなくmysqlだということにも少し詰まりました。

 

最後はnginxです。ここでは “The stream or file “/var/www/html/storage/logs/laravel.log” could not be opened in append mode: Failed to open stream: Permission denied”エラーに悩まされました。パーミションを777に設定して解決するのは簡単ですが、誰でも書き込めるようにするのは抵抗があったので、www-dataを所有グループに変更し、パーミションは775にするということで対応しました。どうやらdockerコンテナ内外で同じUID/GIDが付与されているようです。そのUID/GIDがコンテナの内外ではそれぞれ別のユーザーやグループを指しているとしても。

 

こうした試行錯誤の過程ではdocker-composeをupしたりdownしたりを繰り返します。それが面倒なので.bashrcにdocker-composeコマンドの別名(エイリアス)としてdcを登録しました。

 

けっこう苦労しましたが、おかげでdockerにも慣れつつ、理解しながらdocker-composeでミニマムなLaravel(LEMP)環境を構築することができたと思います。



Python3エンジニア認定データ分析試験を受験しました

python3エンジニア認定データ分析試験を受験してきました。その記録を残しておきます。

 

1.結果

間違えた数問に心当たりはあります。

 

2.受験動機

この夏にpythonの機械学習に手を出して、その内容について調べているときにpython3エンジニア認定データ分析試験の存在を知り、力試しに受けてみました。

 

3.模擬試験

python3エンジニア認定データ分析試験を受験しようと少しでも思う人は、模擬試験を受けてみるべきです。インターネット上で簡単に無料で受験できます。

DIVER | DIVE INTO CODE(DIC)

PRIME STUDY(プライム・スタディ) – Python試験とPHP試験の無料模擬試験サイト

問題の形式や雰囲気は本番そっくりです。

本番の試験の難易度は、DIVERより難しいと感じました。

DIVERのほうはランダムに40問出題されるので知識のインプットと同時並行で普段使いをし、3回分の問題セットがあるPRIME STUDYを節目節目で活用するのがよいと思います。私もそうしました。

そしてこの模擬試験で安定して高得点を取れるようになり、なぜそうなるのか、なぜ他の選択肢ではダメなのかを説明できるようになれば、合格が見えてきます。

 

4.本などの教材

優先度が高い順番に紹介します。

数学の基礎の部分に不安がある場合は、高校数学用の教材で補うとよいと思います。高校数学用の教材はたくさんあるので自分の好みに合ったものを選べばよいです(ここで紹介はしません)。

(1)Pythonによるあたらしいデータ分析の教科書


Pythonによるあたらしいデータ分析の教科書


作 者: 寺田学, 辻真吾, 鈴木たかのり, 福島真太朗 著

出版社: 翔泳社

発売日: 2018年10月04日

公式に認定されているテキストです。おそらくこの本に書いてある内容しか出題されません。

 

(2)Python Data Science Handbook

なんとオリジナルの英語版は全部の内容が無料公開されています。

Python Data Science Handbook | Python Data Science Handbook

私はpython3エンジニア認定データ分析試験のことを知る前に上記リンク先を熟読していました。

出題範囲に含まれない内容もたくさん書かれており、試験対策という意味では効率が悪いかもしれませんが、実際に機械学習を使うためには大いに役立ちます。

日本語訳も出版されています。


Pythonデータサイエンスハンドブック : Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習


作 者: Jake VanderPlas 著,菊池彰 訳

出版社: オライリー・ジャパン

発売日: 2018年07月03日

 

(3)Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎


Pythonではじめる機械学習 : scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎


作 者: Andreas C.Müller, Sarah Guido 著,中田秀基 訳

出版社: オライリー・ジャパン

発売日: 2017年07月27日

scikit-learn部分に関してはこの本もおすすめです。

5.受験後の感想

この試験に合格したからといって機械学習を自由に操れるようになるわけではありませんが、機械学習に対するアレルギーをなくす最初の第一歩としては悪くないかなと思いました。



emathをdockerで手軽に使う

数学の教材を作成する際にはemathが重宝します。記号や図形を表示するための気の利いたコマンドがあるからです。

 

しかし、emathを使える環境を構築するのが面倒です。

 

そこで、dockerを活用してemathを手軽に使えるようにしました。dockerhubとgithubで公開しています。

 

asanonaoki/emath – Docker Image | Docker Hub

 

emath/README_ja.md at main · Asano-Naoki/emath

 

上のリンク先を読んでいただければ使い方はわかると思います。

 

docker環境は各自でご用意ください。「docker インストール」のようなワードで検索すればやり方が出てくるはずです。

 

dockerについて調べていくうちにこれは環境構築を楽にしてくれるツールだということがわかり、それなら面倒な日本語latex環境の構築を楽にできないかと探してみたら、paperist/alpine-texlive-ja – Docker Image | Docker Hubにたどり着きました。

 

emath環境のイメージはdockerhubになかったので、paperist/alpine-texlive-jaを拡張する形で自分で作ってみたという次第です。



PHP技術者認定試験を受験します

Python3エンジニア認定基礎試験(10月受験済み)、Python3エンジニア認定データ分析試験(11月受験予定)に続いて、2022年1月末までにPHP技術者認定試験を受験します。

SNSで受験宣言をされた方にPHP7初級試験公式問題集をプレゼント – PHP技術者認定機構につられて宣言してみました。

Python3エンジニア認定データ分析試験を受験します – 浅野直樹の学習日記では本当に教科書のPython本が送られきました。

Webプログラミングではpythonよりもphp(laravel)を使うことが多く、これを機に基礎を固めておきたいです。

 




top