IT選手権 地区大会に出場しました。

昨日、IT選手権地区大会に出場しました。

もう少し具体的に言うと、大阪IT会計専門学校で行われる、全国高等学校IT・簿記選手権大会IT部門近畿・中国・四国大会に出場しました。

 

 得点はI部82で、II部84点合計166点でした。

これは目標だった10位以内に入れるのでは、と思ったのですが、おしくも11位でした。

しかも10位の方と点数が同じだったのでなおさら悔しいです(問題の難易度によって点数が同じでも順位が変わる)。

ですが、チームの得点には大きく貢献できたので嬉しかったです(団体ごとで上位3名の点数合計がその団体の点数になる)。

 

結果をまとめるとこんな感じでした。

    近畿・中国・四国  全国

個人     11位     65位

団体      4位      14位

 

f:id:Q_tyokinuhata:20160722164914j:plain

賞状も一応貰えて良かったです。

 

全国大会の出場権も得たので、8月東京で行われる全国大会に向けて頑張ります。

 

関連記事

kazukichi.hatenadiary.com

『オブジェクト指向でなぜつくるのか』を読んだ感想。

オブジェクト指向でなぜつくるのか』の第2版を読破したので感想を書いていこうと思います。

f:id:Q_tyokinuhata:20160720215121j:plain

 

まず、この本を読もうと思った理由は主に3つあります。

1つ目 : 私がよく使うJavaで適切にオブジェクト指向を利用して開発できるようになる為。

2つ目 : UMLを利用したモデリングアジャイルをはじめとする開発技術など、コーディング以外の工程について学ぶ為。

3つ目 : 『関数型プログラミングに目覚めた!IQ145の女子高校生の先輩から受けた特訓5日間』という書籍を読んで、余計に分からなくなってしまった関数型言語に関する知識を整理する為。

といった感じです。

関数型言語に関する話は第2版で加筆された内容なので、購入する際は少し注意が必要です。

 

感想

さて、前半はOOP(オブジェクト指向プログラミング)に関する話です。

サンプルコードは短いといえど、全てJavaで解説されます。

その為、Javaの文法を知らないと辛いのでは、と思いましたが、私自身がJava以外の言語でまともにOOPをしたことがないのでなんとも言えません。

 

それに加え、メモリの使い方などハードウェア寄りの話も多々あるので、そこらへんの分野に関してあまり理解していないと感じる方はこの本を読む前に同じなぜシリーズの『プログラムはなぜ動くのか』を読んでおくことをオススメします。

ちなみに私は基本情報レベルの知識しか持ち合わせていませんが、本の内容についてはかなり理解できたかと思います。

 

中盤以降はUMLを用いたモデリングアジャイルをはじめとする開発手法などを中心に、主に上流工程で使われるオブジェクト指向の話でした。

私は本格的な開発に携わったことがないので、とても新鮮味のある話でした。

 

この本だけでなく、なぜシリーズに一貫して言えることなのですが、注釈が丁寧図による解説も豊富です。

そしてこの本では、章末に参考書籍が紹介されているので、次のレベルへのステップアップもし易いのではないでしょうか。

ちなみにこの本は、OOPUML関数型言語など、様々な分野を浅く掘り進めて行くスタイルの為、1つの分野に特化した専門書というわけではないです。

この本で概念的な面を理解した上で、JavaOOPを実際に記述しながら学ぶだとか、デザインパターンについて別の本で勉強するだとか、そういった使い方が私は正しいと思います。

 

私はこの本で関数型言語(主にHaskell)について興味を持てました。

これを機会にHaskellを始めてみようかなという感じです。

OOPをはじめとしたの基礎について学びなおしたい方、是非とも手に取ってみてはいかがでしょうか。

 

関連記事

kazukichi.hatenadiary.com

kazukichi.hatenadiary.com

kazukichi.hatenadiary.com

インターンシップに参加しました。

7月11日から本日7月13日までの3日間インターンシップに参加していました。

 

一昨年は大阪の富士通で研修、昨年は東京のNECで研修、そして今年は近所のIT企業(社名は伏せておきます)で実務の経験と、少しずつステップアップできたかと思います。

 

私が3日間仕事をする上で与えられた任務は主に、ある企業のネットショップを見て改善点を探し、それをデモサイトとして作り直すことでした。

最後は3日間で作り上げたものを報告書にまとめ、その内容を実際に社員の方の前で話すこともできました。

もしかすると、私の出した案がそのネットショップに反映されるかもしれないので楽しみです。

学校の授業だと、どうしてもインプットすることが多くなってしまうので、こうしてアウトプットするのは良い機会になりました。

 

毎日の昼食も楽しみで、人事の方に加え、1日目はWebエンジニの方、2日目はセキュリティエンジニアの方、そして最終日はウェアラブルバイなどの開発をしているエンジニアの方と一緒に食事をさせていただきました。

様々な分野のエンジニアの方の生の声を聞くことができて、貴重な体験となりました。

 

もし、バイトの求人などがあった時には誘っていただけるそうなので少しだけ期待していたり…。

 

NEW GAME!の青葉ちゃんのような3日間でした。

 

堅苦しい内容の記事になってしまいましたが、以上、インターンシップに参加させていただいたお話でした。

基本情報技術者試験合格体験記。

セスペ2017年以降に廃止されることを知り、落ち込んでいるかずきちです(´・_・`)

 

さて、4月に受けた基本情報技術者試験(以下FE)の合格証書がようやく手元に届いたので、勉強方法合格体験談を綴っていこうかと思います。

f:id:Q_tyokinuhata:20160708225642j:plain

 

受験方法試験の形式などを知っている前提で話を進めるので、分からない方は以下のリンクを参照してみてください。

IPA 独立行政法人 情報処理推進機構:制度の概要:基本情報技術者試験

基本情報技術者試験 - Wikipedia

 

 

午前試験

私は午前試験を受けていません

その代わりに午前免除試験という、限られた受験会場でのみ開催される、午前試験を免除するための試験を受験しました。

とはいえ出題内容は午前問題とほぼ変わりないので、勉強方法も変わりないはずです。

ちなみに私の通ってる高校で午前免除試験を受けました。

 

肝心の勉強方法ですが、まずは私がいつもお世話になっている技術評論社の教本を一通り読みました。

平成27年度【春期】【秋期】 基本情報技術者 合格教本 (情報処理技術者試験)

平成27年度【春期】【秋期】 基本情報技術者 合格教本 (情報処理技術者試験)

 

 現在は平成28年度版の教本が出ているかと思います。

これに関しては書店などで自分に合った教本を探すと良いと思います。

 

教本を読み終えた後はひたすら、過去問→見直し→過去問→見直し という感じでした。

過去問をずっと解いていると頻出問題問題傾向も分かってきます。

そもそも午前試験ほぼ暗記するだけなので、覚えることさえできれば合格します。

ちなみに私が実際の試験で取った点数は忘れました。

 

追記(2016/12/25) : 

www.fe-siken.com

空き時間にスマホなどの端末で勉強できるのでオススメです。

 

午後試験

午後試験午前問題のような単問形式ではなく暗記でどうにかなるという感じでもないです。

ひたすら長文の問題ですし、解いていて割と辛いものがあります。

そして、情報処理に関する知識も必要ですが、何よりも読解力が必要な気がします。

問題文に出てくる登場人物の気持ちになって問題を解くのが合格への近道だと思いました。

ですが、逆にコツをつかむと大きく点数を稼げるような気がします。

 

インターネットで公開されている過去問を使って勉強するのもいいですが、私はインフォテックサーブ出している問題集を利用しました。

分野ごとに数問ずつ過去問が収録されており、シンプルで見やすく、個人的にGoodです。

ただし流通量が少ないので、書店やAmazonなどには置いていないと思います。

 

以下のリンクから購入できるので是非(回し者ではないです)。

ちなみに私の点数は69.5点でした。あまり高くないですね。

www.infotech-s.co.jp

 

感想など

高校生の内にFEを取得することができて良かったです。

次の情報処理技術者試験は大学受験との兼ね合いで受験できなさそうなのでで残念ですが、来年の春はセキュマネを受験する予定です。

ちなみに私がITパスポートを受けた時の記事です。

kazukichi.hatenadiary.com

ゲーム初心者がJavaでゲームを作った話。

TwitterのTLでたまたまゲームを作った時の話になったので、今回はその話についてまとめてみようかなと思います。

 

私は生まれてからこれまで、あまりゲームを与えられずに生きてきました。

それに加えて3D酔いするのがあり、今もFPSなどは殆どプレイをすることができません。

マイクラなどはできたら楽しそうだなーとか思いつつ眺めてるんですが、ソシャゲは1日で飽きるので殆どしません。

過去に割とやりこんだゲームといえばポケモンモンハンぐらいでしょうか。

 

そんな私がゲームを作ることになったのは昨年の夏休みの後半ぐらいだったと思います。

他の部が文化祭に向けて準備する中、自分たち(情報研究部)も何か作ろうじゃないか、という誰かの提案で始まりました。

正直、検定も近かったですし、全く乗り気では無かったのですが、話し合った結果、チャリ走のような横スクロールゲームを作ろうということになりました。

開発チームは7人でしたが、当時の1年生(つまり今の2年生)2人と当時の2年生(今の3年生)3人は、できるだけ装飾や素材作りに回ってもらいました。

残った私ともう一人(@s39_02)で機能の大半は作り上げました(私も時々検定の勉強で抜けていましたが)。

 

そのゲームがこちらです↓

f:id:Q_tyokinuhata:20160613063314p:plain

f:id:Q_tyokinuhata:20160614173928p:plain

漂うクソゲー臭。

ですが、初めて作ったにしては中々の上出来ではないでしょうか。

まともに使える言語がJavaしかなかった為、迷わずJava(主にSwing)で作りました。

タイトルの「RunningMan4J」という名前は、当時流行っていた三代目 J Soul Brothersの例の振り付けと、私がお世話になった山本裕介さん作のTwitter4Jから取っていたりします。

登場キャラクターにも割とこだわりがあって、主人公の棒人間を除いた敵キャラは全て友だち(や私の彼女)をモチーフにしていたりします(私は原画を書いただけで、ドット絵は後輩に投げましたが)。

 

文化祭当日

メモリが解放されないという重大なバグを抱えていましたが時間が足らず、そのバグを抱えたまま走らせました(幸いマシンのスペックはそこそこあったのでなんとか耐えました)。

意外と盛況で、おそらく100人以上の方にプレイしていただけました。

ですが難易度が高すぎたあまり、クリア人数はたったの1人という結果に終わりました。

開発メンバーも誰一人としてクリアできなかったので少し予想はしていましたが…。

しかし、難易度が高すぎるというのも決して悪いことではなく、そのおかげで何度もプレイしていただけました。

 

二回目の挑戦

文化祭の出展だけではもったいないということで、クラスメートにこのゲームを触ってもらう時間を先生にいただきました。

これを機会に、メモリが解放されないバグを中心にできるだけデバッグし、難易度もできるだけ変えないようにしてリファクタリングしました。

情報処理科ということで、実際にプログラムを触ってもらい、ジャンプの速度や敵の人数を変えて遊んでもらったりもしました。

私自身に授業を回す能力がなく、若干グダったのが心残りですが…。

 

まとめ

開発時間に余裕が無かったあまり、諦めた機能がいくつもあります。

例をあげると、得点機能やランキング、ログなどです。

かといって今から追加で作るモチベーションなど無く、現在は放置している状態です。

また余裕ができたらぼちぼち開発して、ネット上で公開でもしてみようかと思います。

情報処理競技大会に出場しました。

本日、情報処理競技大会兵庫県大会に出場しました。

昨日の晩から焦りながら割とマジで勉強して、今朝もマックでゴリゴリ過去問を解いていたのですが、結果は団体3位個人15位と、全国大会には一歩届かずという結果でした。

 

焦り始めるのが遅すぎなんですよね、あほです。

 

II部アルゴリズム競プロのおかげなのか、思ったより調子が良かったです(ただ表計算が駄目でした)。

I部は問題傾向が若干変わったようで、思うように点数を取れなかったのが今回の敗因かなと思います。

 

来月はおそらくIT選手権があるので、今回の失敗を踏まえて全国大会に出場できるようにがんばります。

 

どうでもいいかもしれませんが、今日は人生で一番トイレに行った日かもしれません。

トイレに行った回数で競技の順位が決まるのなら、私はおそらく1位でした。

 

以上。

CSSのuser agent stylesheetとは。

最近は学校の授業の関係上、HTML / CSS / JavaScript / PHP あたりをよく使うのですが、その中のCSSで新しい発見があったのでここに記録しておきたいと思います。

 

ブラウザ毎に定義されているデフォルトCSSuser agent stylesheetというものがあるのですが、これが今回の記事での敵です。

GoogleChromeに搭載されているデベロッパーツールを使うことでその存在を確認できるかと思います。

f:id:Q_tyokinuhata:20160527003907p:plain

画像を見ると分かるように、HTMLbody要素に対応するセレクタの中に、勝手に余白を挿入しています。

しかし、私は全称セレクタですでにmarginpaddingの初期化を行っていました。

それなのに何故適用されなかったのでしょうか。

それは、CSS詳細度という概念によって、セレクタ強さが定められているからでした。

全称セレクタ

タイプセレクタ

クラスセレクタ

属性セレクタ

擬似クラス

IDセレクタ

インラインスタイル

セレクタは主にこのように分類されるのですが、下にいくほど力が強くなります。

つまり、全称セレクタで書いたmarginやpaddingの初期化がタイプセレクタ(この場合はbody)によって上書きされていたのです。

なのでbodyでmarginを初期化してやると、user agent stylesheetが入れたmarginに打ち消し線が引かれるかと思います。

f:id:Q_tyokinuhata:20160527010222p:plain

 

user agent stylesheet詳細度など、本当にめんどくさい概念でてんこ盛りですが、CSSを設計するときは気をつけないと駄目だということを知り、とても勉強になりました。

Yahoo! User Interface Library(YUI3)のreset.cssなど、便利なものもあるらしいのでそちらもチェックしてみると良いかもしれません。

CSS Reset - YUI Library

 

詳細度の詳細については、以下のリンクを参照してみてください。

developer.mozilla.org

 

何か誤りがあればご指摘お願いします。

それでは。