基本情報技術者試験、受かる気がしない

Amazonから「キタミ式イラストIT塾 基本情報技術者 平成29年度」が届いた。

まず思ってたより本が分厚い!! 4~5cmはある!! え? こんなに勉強しなきゃダメなんですか??

しかもどうやらこの本1冊やれば良いってことじゃなくて、さらにアルゴリズムとかの勉強もしないとダメらしい。(それはこの本がどうこうじゃなくて、そもそもどの本も大体そういう構成になっているらしいですけど)。

千里の道も一歩からと、早速パラパラとめくって見たけど、何言ってるのかまったくわからない!ノリと勢いとテンションで申し込んでしまったことを、完全に後悔しています。これ間に合うのかしら。非開発者はどのくらいかけて勉強するんでしょう。

あー、これ完全にあかんやつや。。。チャプター20の内3の途中まで読んだところで脳みそから煙出てきたので、初日は強制終了。

今日読んだのはこの辺(↓)。

1.n進数の扱いに慣れる

2進数、8進数、10進数、16進数ってそれぞれどういうものか、 n進数のnの部分を基数というらしいこと、 基数変換の方法(例えば2進数を16進数にするとか)

2.2進数の計算と数値表現

足し算 引き算、補数 シフト演算、かけ算、割り算 小数点の表し方

3.コンピュータの回路を知る(途中)

論理演算と論理回路(AND,OR,NOT) 基本回路を組み合わせた論理回路(NAND,NOR,XOR)

えー、全然頭に入って来ません!! ちんぷんかんぷんです!! てかこんな内容知ってなんか意味あるの? 俺別にOS開発する訳じゃないし、というこれじゃない感が否めません。

いや、本自体はとても分かりやすいと思うんです。まったく予備知識もないのに、一読するだけで言ってること自体は分かりますし。でも、チャプターの最後についてる演習問題が全然わからない泣。なんなら問題の意味さえ分かっているかどうか怪しいです。。。

この状態から2ヶ月で本当に合格なんて可能なんでしょうか? 過去問を解きながら、丁寧に頭に入れていかないとダメなやつですよね。資格が欲しいわけじゃないんだけどなー。

でも、がんばるぜ。だってもう…(以下略)。

基本情報技術者の試験を申し込んだ

先日、JavaScriptの勉強を開始して勢いに乗る私は、ITについてのより網羅的な知識を身につけるべく基本情報技術者の試験を受けることにしました。

認定資格なんて正直要らないんですけど、コンピューターの基礎知識を体系的に身につけるには資格の勉強をするのが良いのではないかと考えてのことです。

というか、Amazonコンピュータサイエンスと検索したら出てきた「入門コンピュータ科学」というど直球なタイトルの本のレビューに書いてあっただけなんですけどね。

専門課程でコンピュータ科学を採っていない、かつ現在SE職でもない者にとって、強制的に自分に火をつけてコンピュータ科学の基礎を学習しようとすれば情報技術者資格でも申し込んで、テキストで学習するしかない。

なるほど、「専門課程でコンピュータ科学を採っていない、かつ現在SE職でもない者がコンピュータ科学の基礎を(強制的に)学習するには、情報技術者資格を申し込んでテキストで学習するしかないのか」と鵜呑みにした私は、気づけばChromeの検索窓に「情報技術者資格」と入力していた。そして一番上に表示された公式サイトを開くと、申し込みは今日の20時が〆切と書いてるじゃないですか! 

何これ、運命!? と勘違いした私は、「時はいま!」とばかりに5,700円する資格試験の受験資格をポチっていまに至っています。

ありがとう303tk4さん。いつか僕が情報技術者の星になって、ヒーローインタビューを受ける時が来たら、あなたのおかげだと言うから。きっと言うから。

まあ情報技術者の星になんてならないけどね。ヒーローインタビュー形式でもないだろうし。てか、情報技術者の星って何?

と、勢いとテンションで申し込んだ基本情報技術者の試験。試験を2ヶ月後に控えたいま、難易度はもちろん、試験の全体像すらまだ見えていない状態。こんなんで本当に間に合うのかしら。

ここから奇跡の追い上げで、できれば今年中に応用情報技術者に合格したい! と勢いだけは一丁前の私がお送りしました。

JavaScriptで出てくる ! (ビックリマーク)って何!? var hoge = false って?

引き続きドッドインストールでお勉強中。次から次へとわからないことが出てきて、刺激的であります。毎日少しずつ躓いております。今日出てきて理解に苦しんだのは、5秒あてクイズに出てくる以下のやつ。

var isStarted = false
// 略
button.addEventListener(“click”, function() {
if(!isStarted) {
// 略①
} else {
// 略②
};

コンテンツ上はさらっと進むんですけど、頭の中は???でいっぱいです。

解説を聞いていると「最初は START していないので false にしておいてあげます。」ってすごい当たり前の様に先に進んだけど、なんでそうなるのかが分からない。

さらに聞いていくと「もし isStarted が false だった場合、まだ START ボタンが押されてないので何をするかというと…、ゲームが始まったばかりの処理をすれば OK ですね。」って、またまたどういうこと? 全然わからないのだ。

だって、さっきisStarted = false を初期値だって宣言したんだよね?ビックリマーク/エクスクラメーションマークって論理否定演算子って言うんだよね?

多分、if(!isStarted) って「isStarted = false」でない時、という意味ではないんですね。if(isStarted)が、もし「isStarted = true」の時っていう意味なんでしょうね、、、多分。だから、if(!isStarted)って「isStarted = true」でない時=falseの時って言うことなんでしょう、、、多分。

真偽値を判断して反転させるのが論理否定演算子であるビックリマーク/エクスクラメーションマークってことだそうなので、上に書いているので合っているのだろうな、、、多分。

if(!isStarted)は、isStarted がtrue でない時、つまりfalseの時という意味になるってことなんでしょうね。だとすると、そもそもisStartedの初期値(何もしていない時)をfalseだと宣言しているから、最初の段階で、if(!isStarted) { } 内が実行されると。で、elseはif(!isStarted)でない時ってことだから、isStartedがtrueでない時でない時、つまりtrueの時という意味になるってことなんでしょう。

すげえ回りくどい。泣

ドットインストールは言われた通りにカリキュラムを進めていけば少しずつ分かることが増えていくからとても良いです。当たり前ですけど言われた通りに書き進んでいったらちゃんと動くものも出来るから達成感もあって楽しいです。

でも、言われた通りに書いたら作れるじゃ意味ないだろうから、"何故"をちゃんと明らかにしたいと思うのだけれど、ベースの知見がなさ過ぎて"何故"を明らかにするのにとても時間がかかってしまいます。

引き続き頑張ります。

無名関数と即時関数 - JavaScript独習

ドットインストールJavaScriptの勉強を開始しました。JavaScript入門を終え、おみくじを作ったり5秒当てゲームを作ったりしている今日この頃です。正直まだJavaScriptの全体像すらつかめてない気がするが、最初は言われたことを愚直にやるのが吉だと思うので、とにかく講座を進める日々。

で、そしたら早速つまずきました。

(function () {
“use strict”;
document.getElementById(“btn”).addEventListener(“click”, function () {
document.getElementById(“result”).innerHTML = “ああだこうだ”;
});
})();

ボタンを押したら文章が書き換わるJSらしい。それはなんとなくわかる。まずIDを取得して、それを"click"したらfunction()内の命令、つまりresultというIDに「ああだこうだ」という文章が入ると。うん、わかる。

で、問題はここから。

})();

この最後についてる括弧 () はなにっ!?

閉じタグがいるのはわかる。だから}); ならわかるのだ。問題はその後ろの「()」。これ何?って話だ。そんな説明あったっけ? この「()」がないと動かないみたいだから、やっぱり必要なやつなんですよ。なんだよこれということで、先生(=同僚)に聞いた。

全体を括っている()を私は宣言(var hoge = )が省略出来るやつだというのはなんとなく分かっていたのですが、それがどういうことかわかっていなかったみたいです。全体を括っている()は宣言を省略出来るのですが、これだけだと無名関数だよっていう定義をしただけだと。無名だからあとから呼び出すこともできない無意味な記述ということになってしまう、とのこと。

だから、この無名関数を今すぐ実行して良いんだよ、と教えてあげるのが即時関数の役割で、最後に「()」を付けることで即時関数になるということだそうです。「()」は関数を実行する魔法のトリガーなんですね。

よくネットで見るスイーツ()とかの「()」は即時関数が語源なのかな。でもスイーツを即時関数にしてすぐ実行できるってどういう意味なんだろう。

非プログラマーがJavaScriptの勉強を始めた

​僕はIT企業で営業をずっとやって来ました。

せっかくIT企業にいるんだし、ちょっとくらい開発できた方がたのしそうだ。

困ったときに相談できる教師役もたくさんいるし、アクセスできる知識だってたくさんあるし、業務上のプラスもありそうだし。

こんなに良い環境を活かさないのはもったいないと常々思いながらも、得意の先延ばしを軽やかに発動すること、早10年。もはや先延ばしを超えて、ただの口だけ野郎じゃないか。

口だけ野郎だけど、やりたい気持ちはあるわけで。一寸の虫にも五分の魂、口だけ野郎にもやりたい気持ち。

ずっと「いつかはやろう」のまま置いておくのもヘルシーじゃないし、2017年こそはプログラミングやってみるぜ! ということで、ついにプログラミングの独習を開始することにしました。もう2月も半ばだけど。

社内を歩けば開発者にあたるIT企業。困った時に泣きつける開発者がゴロゴロいるこの社内ネットワークを活用しない手はありません。身近に教師がいるという環境は、いつだって上達のパスポートです。

で、最初の壁は「なんの言語をやれば良いの?」ってことです。形から入る君にとってはこの難題はなかなかのものです。

やりたい気持ちを伊達に10年寝かせてない。そりゃあ最適なソリューションをディプロイしてゴーライブさせたい、開発言語のベストプラクティスを採用したいからに決まってるじゃないですか。

言葉の意味はよくわかっていません。雰囲気です。

IT企業の片隅に生息しているわけですから、聞きかじった程度の知識はあるわけです。 ・Javaがやっぱりデファクトなのかな? ・Rubyってやつが今風なんでしょ? ・いやいやweb開発ならphpが主流っしょ?とか。え? 古い? 所詮営業マンなんてそんなものです。

先生助けてとばかりにその辺にいる開発者に聞いたらオススメはJavaScriptとのこと。え? JavaScriptですか?何かしょぼくね? 僕はほら、もっと格好良いのが良いんですよ。

IoTでクラウドな分散処理をGitでさ、ギークな感じのやつ? はい、やっぱ。意味は全くわかっていません。

なんか格好良くないよねと嘆く僕に、教師は優しく諭してくれました。 ・言語なんて手段だから、どれを選んでも良い。 ・どの言語もどうせ一長一短。 ・JSは開発環境を立てなくても良いから始めやすい。 ・Web全盛だからブラウザ側で動くJSは良い選択肢だと思う。 ・最近はJSだけでアプリケーションも作れるんだよ。 ・え? 流行ってるのが良い? はいはい、Ajaxは知ってるでしょ? それだよ。

ということで、Ajaxは今風な気がするから、やっぱり先生の言うことを素直に聞くのが上達の近道ということで、言語はJavaScriptで決定です。

勉強するなら本を買おう、ということで選んだのが「パーフェクトJavaScript」。

パーフェクトだって言ってんだから間違いないでしょ? ということで、本を開くといきなり対象読者に「中級者以上」、「他の言語の経験がある人」と書いています。あいたたた。

師曰く「その本はとても良い本だけど辞書。ある程度分かってきてから理解を深めるために読む本。」だとのこと。先に言ってよ!泣(そもそもどの本が良いか相談してないけど)。

1冊目に買うなら本、例えば「15時間でわかるJavaScript集中講座」などから始めてみるのが良いんじゃないか、だって。あるいは最近は動画でプログラミングを教えてくれるサイトがあるとのこと。

やっぱタダって良いよね、気楽にかつスピーディーに始めたい、ということでドットインストールというサイトを使ってお勉強を開始するであります。