2015/05/18

文系な私がいかに基本情報技術者試験の勉強をしたのか

 さて、平成27年度春期の基本情報技術者試験の合格発表があり、私も無事合格することができた。自己採点で多少の自信はあったが、やはり実際に結果を見てようやく安心した、といったところだ。

 受験直後(と言っても2日後だが)に宣言した通り、同じく文系で基本情報技術者試験を受けようとする人の役に少しでも立てるように、この記事では文系である私の基本情報技術者試験合格までの道のりをまとめようと思う。
 もっとも、文系だからどうだ、という部分(も無いわけではないが)はほとんどないので、基本情報技術者試験に興味がある人なら誰でも参考になるように書きたい(書くとは言ってない)。
 ここから長々と私の体験談がはじまるわけだが、うるせえさっさとポイントだけ話せ、と言う人はこちらまで飛ばしていただければいいかと思う。

1.きっかけ
 話はおよそ2年数ヶ月前に遡る。大学の1年目を終え、自室で大あくびをかましながらゲームに勤しんでいた私だが、とあることについて考え始めた。
 何についてかと言うと、2年生の頭にあるゼミナールの選択についてだ。当然、卒論やその先の進路にも関わってくるだろうから、少し早めに考えておくべきだと思ったのだ。
 私は記事タイトルにもある通り、文系学部の学部生だ。というか、ぶっちゃけ経営学部だ。特定の危険を冒してまで何故ここで唐突なカミングアウトをしたかというと、実は経営学部と基本情報技術者試験の相性は、良いからだ。これについては後で詳しく書く。
 話を戻すと、ゼミ選択だ。経営学部に属する私だが、コテコテの経営学にはあまり興味がなかった。コテコテとはどういうものかというと、例えば戦略論や組織論みたいなものだ。私の興味対象はそういったものではなく、例えばコンピュータ上での企業のシミュレーションとか、「経営学」の中ではあまり目立たない分類だ。
 というわけで、ゼミの選択も自ずとビジネスシミュレーションとか、そういうことをやるゼミになった。はい、結論も出てめでたしめでたし。…とはならない。クソ真面目な私は、ゼミがはじまる前に何か知識をつけようと思った。当然コンピュータ上でシミュレーションするのだから、プログラミングとかする必要があるんだろう、と勝手に想像した。結論から言えばこの想像は当たっていて、ゼミでは実際プログラミング言語の勉強もした(している)。
 そこで私はプログラミングの勉強でもしてみようかと考えた。幸いにも時は春休み、時間は腐るほどあるどころか、腐っている。臭すぎて鼻をにティッシュを詰めたいくらいだ。しかし「プログラミングの勉強」と言ってもどうも掴み所がない。「プログラミング 初心者 おすすめ」などと検索すると、某匿名掲示板のまとめサイトがヒットしたりする。多くの記事があるが、その内容はテンプレートと化している。だいたい初心者がスレを立てて「プログラミングの勉強したいんだけど、何の言語を選べばいいいの?何からはじめればいいの?おすすめの参考書は?」みたいな質問をする。するとプログラミングに自信のある人ががワラワラと現れ、「何を作りたいかによるだろ」「作りながら自然と覚えていくんやで」「本なんていらない。ネットに死ぬほど情報はあるだろ。」などと書き込んで、そのままなんとなく終わる(笑)。言っちゃ悪いが、あまり役に立たない(し、今となってみればこの「作りたいものによる」「作りながら覚える」「本はいらない」というのが唯一解だとも思わない。これについては機会を改めて)。
 「作りたいもの」と言われると、私がしたいのは最終的にシミュレーションになるわけで、上述の論理に従えばシミュレーションをしながらプログラミングを覚えていけばいい、ということになる。しかし、それを独学できっちりこなすのは難しいだろう。何故ならどうシミュレーションをすればいいのか、というのも分からないし、それを学ぶためにゼミに参加するのだ。
 これは困った。「プログラミングの勉強をする」という取っ掛かりのない目標では前に進めそうにない。というわけで私はもっとわかりやすい目標を変えることにした。それが「何か、プログラミングと関係しそうな資格を取る」という目標だ。

2.ITパスポート
 それらしい資格を探すと、見つかったのが「ITパスポート」と「基本情報技術者試験」の2つだ。基本情報技術者試験は午前と午後に渡って行われ、午前は4択の知識問題、午後はプログラミングの出題がある。ITパスポートは基本情報技術者試験の午前問題の入門編、といったところのようだ。
 「基本情報技術者試験」は年2回、春と秋に行われる。春の申し込みは締め切られていたので、最速で受けるとしても秋になってしまう。秋。もうゼミ始まってるんですがそれは…
 一方「ITパスポート」。これは試験会場のコンピュータ上で解く試験らしいのだが、なんと年中随時開催されている。これはもう受けるしかない。春休み中にITパスポートの勉強、春休み明けに受験。この日程で行くことにした。ただし、最終的な目標は基本情報技術者試験。ITパスポートの勉強は基本情報技術者試験の午前問題の勉強の土台にもなるし、一石二鳥だ。この時点で、ゼミがはじまる前に何か勉強することが目的だったはずが、その目標は基本情報技術者試験の合格へと移っていたのかもしれない。
 早速ITパスポートの勉強を始めることにした。私はカタチから入るタイプなので、とりあえず参考書を求めて本屋へと繰り出した。色々と物色して選んだのは1回で受かる!ITパスポート合格テキスト〈’16年版〉 だ。(これは記事修正時(16/03/20)の最新版。私が買ったのは当時本屋にあった14年版。)
家に帰り、早速ページをめくる。う、2進数…高校の「情報」でやった以来だ。覚えてないなあ… お、この辺はパソコンの知識がちょっとあれば解けそうな問題だ。 !?マーケティングとかオペレーションズ・リサーチなんて出てるぞ、これ経営学の範疇だ!
 結論。「割と簡単そう。」いける。だいたい、もし落ちても随時開催だからまた受験するのも簡単だ。というわけで参考書を2週ほど回して、過去問演習。過去問はネットにいくらでも落ちてるので、それを使えばよいかと。解説も充実しているし。
 1ヶ月ほど勉強して、春休みが終わり、4月某日に受験し、そして余裕の合格。正直受験した意味もあまりないのではないか、というくらいだが、基本情報技術者試験受験への土台と思い納得することにする。

3.基本情報技術者試験の勉強はまだ始まらない
 順当にいけばここから基本情報技術者試験の勉強を始めることになるのだが、そうスムーズにはいかない。なぜか。
 基本情報技術者試験の午後問題は、午前と同じ範囲の知識の応用を問う問題とアルゴリズム、そしてプログラミング言語の出題がある。C言語、COBOL、Java、アセンブラ、表計算から一題選ばねばならない。どの言語を選ぶか、ということが問題となる。
 まず、プログラミング言語の勉強自体も元々の目的になっているので、プログラミング言語とは言い難い表計算は除外した。もっとも、文系の人間にはもっとも解きやすい問題なのかもしれない。次にCOBOLは事務処理に使う言語らしく、そして古い。これもシミュレーションなどで使うことはなさそうだ。アセンブラは機械を直接操作するような言語らしく、重すぎる。
 C言語とJavaの2択になったわけだが、ここで迷う。C言語はいろいろなプログラミング言語の基礎になるようなものらしく、学ぶ価値はあるかもしれない。一方Javaだが、Androidのアプリの開発の際に使う言語らしい。ここで思い出したのが、以前、スマホのアプリを作ってみたいと思い立ち(HTML5と)javascriptに手を出し、そして挫折したという事実だ。この機会にJavaを学び、Androidアプリの開発にリベンジしてみるのもいいかもしれない…。そう思い、Javaの勉強を始めることにした。

4.Javaの勉強を始める
 ITパスポートの勉強の時と同様、形から入る私は参考書を買うことにした。色々と立ち読みしたりして選んだのは「新わかりやすいJava入門編」という本だ。(※私が購入したのは「新」のないわかりやすいJava入門編。つい先日新訂版として出版されたようだ。プログラミングは最初の環境構築が大変なので、より新しい「新」のほうをおすすめしたい。)
 どの参考書もだいたい何らかのトピックがありそれを解説し、その後練習問題がある、という構成で、この本もそのような構成となっている。この本の特徴は、著者が学校の先生で、学生たちに実際にこの本でプログラミング言語を教え、わかりにくいと言われたところを修正しながら書き上げたということだ。「わかっている人目線」の説明となりがちなサイトや本が多い中で、この本はとてもわかりやすく、ほとんど躓かずに学習を進めることができた。応用編の「わかりやすいJava オブジェクト指向編」も同様だった。これからJavaを勉強する人にはぜひおすすめしたい。(オブジェクト指向編のほうはまだ改訂版がない…のかな?)

5.また横道に逸れる
 Javaの学習は最終目標のプログラミング言語の学習そのものであり、そしてもう一つの目標の基本情報技術者試験の午後問題の勉強になっている。この調子で基本情報技術者試験の勉強を進めたいところだが、そうは問屋が卸さない。
 前述のように使っている参考書がとてもわかりやすく、勉強はスイスイと進んでいった。そしてこう思った、プログラミングっておもしろいやんけ!と。プログラミングの面白さを知った私は、「わかりやすいJava」を終えた後、基本情報技術者試験の勉強をそっちのけで、今度はAndroidアプリ開発に手を出したのだった。

6.そしてあれから1年後
 アニメの最終話の雰囲気だが、基本情報技術者試験への挑戦としてはようやく終わりが近づいてきた。
 「あれから」というのは、最初、すなわちゼミ選びを始めたあたりから、ということだ。つまり、大学生活2年目が終わり、春休みになった。ここまでちびちびとAndroidのアプリを作っては壊し、作っては壊しを繰り返し、基本情報技術者試験の勉強は全くしていなかったが、春休みでまとまった時間も取れるし、ここで集中して勉強することにした。
 まずは午前問題と午後問題の序盤対策だ。勉強は全くしていないくせに、実はJavaの参考書を買ったとき、「平成28年度【春期】【秋期】基本情報技術者 合格教本」なる参考書を購入し、本棚の肥やしにしていた(先ほどと同様、これは記事修正時の最新版であり、実際に購入したのは26年度版だったと思う)。ひとまず、この参考書を3周ほど読み込んでみる。なるほど、ITパスポートとの被りはある。そしてやはり、経営学部が得意とするような分野もあり、見覚えのある言葉もちらほら混ざっている(例えばコアコンピタンスとか)。参考書を読んだ後は、ITパスポートの時と同じく過去問に挑戦だ。さすがに午後問題の序盤(アルゴリズム・プログラミング言語以外)は難しいが、午前問題は結構正解できる。午後問題も、知識を定着させて応用できるようになればどうにかなりそうだ、という目途がついたところで、午前問題と午後問題の序盤は過去問を解き続けることにし、いよいよプログラミング言語に手を付けることにした。
 プログラミング言語は一応「わかりやすいJava」で勉強したのでどうにかなるだろうと思い、過去問を解いてみる。だが、期間があいてしまったこともあるからか、とても難しく感じる。穴埋めや「ここの処理を変えたらどうなりますか」といった選択問題など、基本情報技術者試験の出題に慣れる必要もあるだろう、ということで「情報処理教科書 基本情報技術者試験のJava問題がちゃんと解ける本」を購入してきた。ほんと、参考書買ってばかりだが、一応すべて消化してるのだから問題なかろう。
 この「情報処理教科書」で、基本情報技術者試験の問題に出やすいところを補っていく。特に「Set」や「Map」などは知識があやふやだったので、気合を入れて覚えることにした。
 それをひと通り終えると、あとはひたすら過去問演習を繰り返した。過去問はITパスポートと同様ネット上に公開されている。ただし、午後問題は解説をしているサイトは少ないので、もしわからない問題が多いようであれば解説付きの過去問題集を購入するのもよいかもしれない。


 さて、ここまでふざけた長さの体験談を書いたが、ここからは箇条書きでポイントをまとめたい。

一応以下の内容は文系向け、ということになる。

使用した参考書(記事編集時最新版)まとめ

午後問題のプログラミングの選択はどうすべきか
 プログラミングに興味が無いなら表計算、興味があるならC、Javaどちらかがいいのではなかろうか。

午後問題の前半の選択はどれを選ぶべきか
 「プロジェクトマネジメント」「サービスマネジメント」「システム戦略」「経営戦略・企業と法務」にあたる問6、問7あたりは文系でも取っ付き易い、というよりむしろ我ら文系のテリトリーだ。理系の方々はこの分野が苦手で、積極的にこれらを捨てにかかるらしい。
 4問選択なのであと2つだが、「ソフトウェア設計」(問5)は割と解きやすい。残り1つは「ハードウェア」「ソフトウェア」「データベース」「ネットワーク」から選ぶことになるが、そこはそれぞれの適正に合わせて、としか言いようがない。データベースは少し勉強すれば得点源になるような雰囲気はあったので、余裕がある人はそれがいいかもしれない。私はデータベースにまで手を付ける余裕がなかったので、まずDBを切って、残りの問題の難しそうな問題を切る、という消去法を選んだ。

勉強期間・時間
 「期間」を試験の何ヶ月前に勉強を始めたのか、という意味ならばそれは1年ということになる。しかしプログラミング言語(Java)以外の勉強を始めたのは試験の2ヶ月ほど前だ。勉強3日に2回、1回あたり2時間くらいのペースだったと思う。つまりプログラミング言語を除けば勉強時間は40時間かそこらだろう。
 プログラミング言語のほうはかなり長期、数ヶ月間に渡って勉強したが、こちらは週末にそれぞれ1,2時間ずつくらいのペースだ。あまりに長期間に、散発的になりすぎて勉強時間はわからないが、上に挙げた参考書をそれぞれ1週するくらいの勉強量、ということは確かだ。

勉強方法
 午前・午後ともに参考書→過去問の流れ。特に午前問題は過去試験からの流用が数多くあるので、たくさん解けば解くほどいい。

文系にとって難しい試験なのか?
 そうでもないでしょ、と受かった今だから言える。(当日はアルゴリズムの問題が難しすぎて半泣きになりながらトレースしていた。)
 ただ、落ち着いて考えればさほど難しいことを聞かれていない、ということはよくあった。例えば引数の部分を穴埋めする問題なら、問題文にある各メソッドの仕様を確認し、それに合わせればいい、といった感じだ。全問正解は難しいかもしれないが、この試験は午前・午後それぞれ6割以上とれば合格なのだ。全部正解しようなどと思う必要はない、わかる問題を増やせばそれでいいのだ。

基本情報技術者試験に合格すれば、プログラミングの腕も上がるのか?
 いや、それはない(真顔)。こうして合格した私だが、このブログの他の記事を見てもらえばわかるが、カラスが漁った生ごみも真っ青になるくらい散らかったコードを書いているし、オブジェクト指向のなんたるかも正直しっかりと理解できているわけではない。

0 件のコメント:

コメントを投稿