去年の5月に基本情報技術者試験(FE試験)を合格することができました。
おめでとうございます!FE試験ってどんな試験でしたっけ?
一言でいうと、ITシステムに関する知識やスキル全般を対象とする国家試験です。
じゃ、プログラミングとかを勉強するの?
ITシステムといえばプログラミングなんだけど、システムを作るのに必要なものはプログラミング以外にもたくさんあります。なので、プログラミングが試験範囲の本の一部です。他に2進数や論理回路、CPUとメモリ、OSの仕組み、ファイルやデータベース、ネットワーク、セキュリティ、プロジェクトマネジメント、システム構成…内容がさまざまです。経営戦略や財務会計だって試験に出てきます。システム開発の部にプログラミング以外にも結構ありますね(たとえばテストのしかたとか)。
え、多くないですか?
本当に多かったですね(笑)。こういうような全部を対象とする試験が西洋になかなかありませんね。でもそのおかげでたくさん新しいものを覚えて、結構ためになったと思います。
それはよかったね。ちなみに、タイトルの「第二言語」って日本語のこと?
はい。英語が母国語で日本語が19歳から習い始めた第二言語です。FE試験は英語に訳されているのもあるけど、日本語で受けてみたかったです。
へぇ。なんでわざわざ日本語で?
もっとITに関する日本語を習いたかったからです。去年まではプログラミング活動をほとんど英語でやっていました。英語のプログラミング本やマニュアルを読んで、英語をしゃべるユーザーのためのプログラムを作って、英語の掲示板で他のプログラマーと交流してきたんです。これから日本でプログラマーとして活躍したいのに、ITについては英語でしか語れなかったら始まりませんよね。
なるほど。第二言語で試験を受けて、やっぱり難しかった?
そうですね。物事はなんであれ、母国語よりは第二言語でやった方が難しいと思うんですが、FE試験の場合は専門用語がたくさんあるので、それも覚えなきゃいけないですね。英語で知っていて日本語で知らなかった用語もあったけど、全く知らなかった用語の方が多かった気がします。
それに、問題にたくさん文章があって読む時間が少ないので、速く問題を読めないと合格が難しいと思います。特に午後試験の問題文が長いです。しかも、速さだけではなく、正確に読み取らないと大事なことを逃してしまう可能性が高いので速くて注意深く読むことが大切です。試験範囲をちゃんと勉強していたらやりやすくなると思いますが、それでもここら辺が一番難しかったんじゃないかなと思います。
まぁ、母国語でもかなり難しい試験だと思いますね。だって、8年前からの合格率がたったの26%です。実際に試験を受けた人しかカウントに入れなかったら36%に上がりますが、それでもかなり低いです。
26パーセントか…確かに低いね。
その原因は必要な勉強時間が予想しづらいことにあるんじゃないかなと思います。私も2015年の秋に受けようかなと悩んでいたけど、その時は試験の難易度をかなり甘く見てました。プログラミングはそれなりに勉強してきたつもりだったので、日本語のIT用語を覚えて、新しい内容を学んで、過去問題をするには2~3週間掛かるかなと思っていました。でも実際に掛かったのが4ヶ月。
4ヶ月も?!そりゃ大変だったね。
よくネットで「2週間でFE試験を受かる方法」などの記事を見かけますが、信用しない方がいいですね。合格率の26%がそれを物語っています。2015年の秋に諦めて本当によかったです。絶対に落ちてたから(笑)。
じゃ、4ヶ月を掛けてどのように勉強したの?
テキストの章を読んだら、まずは読み書きができるように知らない単語をスクリッターに入れていました。もともとスクリッターを漢字の勉強に使っていたのでそうするのが自然でしたね。大体スクリッターでの勉強が1日で30分から45分でした。
それから、試験にでてきそうな内容をそのままテキストからAnkiというに入れて、穴埋め問題にしました。Ankiの素晴らしいところは忘れる直前に問題を出すことで、効率よく勉強ができることです。毎日Ankiで勉強して、20問の新しい問題と100問までの復習問題をしていました。これが一番時間が掛かったところでしたね。Ankiの問題作りが結構時間掛かったし、復習が毎日1時間から1時間30分掛かってましたね。でもそのおかげで650ページもあるテキストをかなり細かいレベルまで覚えることができました。ちなみに選んだテキストは「キタミ式イラストIT塾 基本情報技術者」でした。分かりやすくておすすめができます。
過去問題の勉強のために「パーフェクトラーニング過去問題集」を買いましたが、結構の厚さで持ち歩きが面倒だったので午前試験の問題をAnkiに入れて携帯で勉強していました。午後試験の問題は主にパーフェクトラーニングからそのまま勉強していましたが、たまにfe-siken.comも使いました。fe-siken.comに解説がない問題もあるけど、解説のあるところは結構質がよかったと思います。
さっき試験がためになったと言ったけど、どんな部分が役に立った?
加算器の理論をわかったときがひらめきでしたね。その前はパソコンの中を何らかの魔法で電気を1と0に変えるブラックボックスだと思っていましたが、今はその気になれば自分でも簡単な制御回路を設計できるように思えました。
OSカーネルのタスクスケジューリングや仮想記憶もためになったし、SQLを覚えることも結構役に立ちましたね。FE試験を勉強する前にも少しSQLを知っていたけど、今との理解度が全然違います。
結局ほとんどプログラミングが試験に入ってないじゃないですか。
いやいや、ちゃんとありますよ。午後試験の問題の内に1問がアルゴリズムを擬似コードで示し、それを分析します。そしてさらに1問が実際のプログラミング言語で書いたプログラムについてです。
そうだったんですね。どんな言語があるの?Python?JavaScript?
いや、スクリプト言語の問題がないね。5つの選べる言語の中に、普通のがJavaとC言語くらいです。(私が試験で選んだ問題はJavaの方でした。)まぁ、COBOLも立派なプログラミング言語ですけど、新しいシステムに使うことはあまりないですね。
じゃ、試験に出て来る「普通じゃない」言語とは?
FE試験を管理する団体の情報処理推進機構(IPA)がアセンブリ言語の問題も入れたかったが全てのプラットフォームに使えるアセンブリ言語がないんですよね。(そういえば、それはC言語が開発された理由でしたね。)それでIPAが自分のアセンブリ言語を作ったんですよ。
え、作ったの?
そうです。Javaで。
す、すごいね。
本当ですよね。アセンブリ言語の仕組みが気になって、勉強したかったけど、IPAの作った言語(CSMという)に実際に使うことがありえないから習う気になりませんでしたね。そこでポール・カーター氏のX86アセンブリの本を少し勉強しました。試験にもちろん使えないので、試験のためにはC言語とJavaを覚えました。
じゃ、C言語、Java、アセンブリを三つも覚えたの?
はい。そのどれもまだマスターはしていないけど、基本を知っています。例えば試験に出て来るJavaとアンドロイドアプリを開発するのに必要なJavaのレベルがやっぱり違います。とはいえ、Javaに出て来る仕組みの多くを他の言語で習っていたので、アセンブリとC言語より覚えやすかったです。
FE試験の他に挑戦したい試験ありますか?
取り敢えずソフトウエア開発の仕事を見つけることに集中したいと思うけど、そのあとは応用情報技術者試験ですかね。応用試験のあとにいくつかの試験を受ける興味もありますね。新しくできた情報処理安全確保支援士が特に面白そうですが、これからの道のりがどうなるかがまだまだ分かりませんね。