浅野直樹の学習日記

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

浅野直樹

応用情報技術者試験を受験しました

2022年4月17日に実施された応用情報技術者試験の令和4年度春期試験を受けてきました。

5月の上旬に基本情報技術者試験も受験予定です。

これらの試験はかなりの部分が重複していますから、同時期に受けると効率がよいです。

 

1.手応え

午前試験はIPAから公表された解答と照らし合わせると、8割ちょっとの得点でした。

午後試験は予備校等が出している解答速報を見た限り、8割近くできていてほしいという感想を持ちました。

しかし、午後試験は記述問題がどのように採点されるか不明なので、結果が発表されるまで安心できません。

 

2.受験動機

何かの記事で基本情報技術者試験と応用情報技術者試験の存在を知りました。

私は、きちんとした教育を受けずに、必要に迫られてその都度調べながらエンジニア的な仕事をしてきたので、エンジニアとして働くときの基盤となるような知識が身につけられるこの試験はぴったりだと思いました。

 

3.前提条件

テクノロジ系の数学部分と、ストラテジ系の財務や法務、経営学に属するような部分は、試験対策をせずとも簡単に正解できる状態でした。

テクノロジ系のその他の部分は、データベースやセキュリティなど業務で日々触っている部分はよくわかった反面、ハードウェアなどはさっぱりで、落差が激しかったです。

 

4.学習記録

(1)本

全体像を早くつかんでおきたかったので、合格教本をまず読みました。


応用情報技術者合格教本


作 者: 

出版社: 技術評論社

発売日: 2021年02月01日

一周目は受験を思い立った去年の秋頃に読み、二周目は受験を申し込んだ今年の冬に読みました。

同じシリーズのポケット攻略本も読みました。


応用情報技術者ポケット攻略本 : 要点早わかり


作 者: 

出版社: 技術評論社

発売日: 2017年03月10日

最終確認として、試験直前の一週間ほどで、オールカラーのニュースペックテキストも読みました。


ニュースペックテキスト応用情報技術者


作 者: 

出版社: TAC株式会社出版事業部

発売日: 2022年01月11日

一冊だけではわかりづらかったところも、複数の視点からの解説を読むことで、理解が深まりました。

 

(2)過去問

①午前試験

同時並行で午前試験の過去問を解きました。

応用情報技術者過去問道場|応用情報技術者試験.comが便利です。

最終的には1300問くらい解き、正解率が60%を超えていました。

最初の頃は半分も正解できなかったので、その頃も含めて60%を超えていたということは、受験時の実力は70%〜80%だったのではないかと思います。

子前試験の過去問を解きながら、知らない語や理解があやふやな部分があれば、その都度インターネットで調べました。これをすることにより力がついたと思います。

②午後試験

午前試験が60%くらい正解できるようになってから、午後試験にも取り組みました。

IPA 独立行政法人 情報処理推進機構:過去問題からIPAが公表しているPDFファイルを利用しました。詳しい解説はありませんが、記述式の解答と講評を読むと、それなりに出題者の意図がわかります。

15回分くらい解きました。選択問題は決め打ちせず、全問解きました。

ただ、制限時間を設けてしっかり記述して解いたのは1回だけで、あとは頭の中で考えてすぐに解答を見ました。

初めて午後試験の過去問を見たときは、とても面食らったことを覚えています。出題分野すら把握せずに過去問を見たものでして。

実際の業務場面が想定されているので、ためになりましたし、楽しかったです。

慣れてくると、プログラミング(アルゴリズム)やデータベースは厳密に理詰めで考える、組込みシステム開発は未経験者でも恐れずに取り組めば簡単な問題であることも多い、経営戦略は経営学的な視点で考える、システム監査などは国語の試験のように問題文からヒントを探す、といったコツをつかめました。

 

5.実際に試験を受けた感想

午前試験は問題文も選択肢も過去問と全く同じ問題がいくつか出題されたように感じました。

その一方で、これは無理と感じさせられる問題もいくつかありました。

残りは想定内の問題だと感じました。

数値計算を丁寧にやっても1時間くらい余ったので、早めに退出しました。

応用情報技術者過去問道場|応用情報技術者試験.comをやり込めば楽に感じられます。

午後試験はしんどかったです。

問1の情報セキュリティは必須ですから当然解きました。まずまずできたかなという感触です。

問2の経営戦略、問3のプログラミングと、得意分野が続いたのでそのまま解き進めました。だいたいどの年度でもこれらの問題を選ぶかなと考えていました。

これらの分野は数字やロジックで正解がはっきりすることが多いので、できそうな問題なら選ぼうと決めていました。

同じことは問6のデータベースにも言えるのですが、私が受けたときの問題は難しく感じられたので、飛ばしました。

問5のネットワークはどの年度でも解ける気がしなかったので、これも飛ばしました。

問7の組込みシステム開発は、解ける年度と解けない年度の差が激しく、今年の問題は無理だと判断して見送りました。

問4のシステムアーキテクチャは数値計算に自信が持てなかったので見送りました。

問1〜問3で満点に近いところまで取れている手応えがありましたから、残りは守りの姿勢で半分くらい得点できそうな問題を問8〜問11で2つ選ぼうと決意しました。

問8の情報システム開発の問題を読むと、CSVやXML、スクレイピングと、自分でもよく使うなじみのテーマであり、正答だと確信できる部分だけでも半分くらいは得点できそうだったので、これを選びました。

残りの中では、問9のプロジェクトマネジメントが法務寄りっぽかったので、これがマシかなと選びました。

時間はぎりぎりでした。

問3のプログラミングは解くのであれば時間を気にせず理解に納得できるまでやるべきなので悔いはありません。問2の経営戦略の記述問題で、およその答えがわかってから記述を磨くのに時間を使いすぎたと少し後悔しました。

 

6.終わりに

試験の結果はどうであれ、エンジニアとして働くときの基盤となるような知識を身につけるという目的に対して、応用情報技術者試験はいい目標になったと思います。

この試験勉強が実務で役立ったと感じることもあります。経営陣と話をするときの発想がイメージしやすくなったり、新しい技術を学ぶ際に知らない語が減ったりしました。

メジャーな試験であり、私のように学習記録を公開している人も多いですから、それらを読んで自分なりに工夫して取り組めば、きっと得るものがあることでしょう。

 



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

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

 

1.結果

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

 

2.受験動機

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

 

3.模擬試験

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

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

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

 

4.本などの教材

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

(1)初めてのPHP


初めてのPHP


作 者: 

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

発売日: 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を使ったデータ分析、機械学習


作 者: 

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

発売日: 2024年03月05日

 

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


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


作 者: 

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

発売日: 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を拡張する形で自分で作ってみたという次第です。




top