ぴよまるの雑多な技術所

間違えて休職中ってずっと書いていて心配されていました。全部ちょっとずつ齧って好きって思える技術を見つけたい。研究分野は数理最適化。

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

昨日、応用情報技術者試験を受けてきました。受かっているかはわかりませんが、次に受ける人と落ちていた場合の自分のために、やったことを書きます。 多分自己採点だと受かっているような気がしますが、今年は午後が簡単だったらしいのでわかりません。

前提

  • 1ヶ月前から勉強開始
  • 夜間大学に通っている&正社員の他に副業をしているため、だいたい平日1時間、休日でも長くて2時間の勉強時間
  • とはいえ職業エンジニア、ブランクもカウントすれば3年くらい

やったこと

方針としては、時間がとにかくない&普段の授業の復習やレポートもあるので、隙間時間に午前は対策、午後は相性が悪かったら捨てる、くらいな気持ちでした。

午前は教科書でキーワード確認、あとは過去問をラスト1〜2週間でとく。午後は学費を納めたばかりでお金を使いたくないという気持ちから、2年落ちした「午後問題の重点対策」を1週眺めました。

午前について

最初はキーワードもわからないと思うので、語彙が乗っている対策本的なのでザーッとトピックを眺めて範囲の把握をするといいです。あとは過去問から何割かでるので、ひたすら過去問をときます。 直近2年は出ないとか書いてあったので、それ以外の4年分をやりました。1回目と2回目だけちゃんと2時間ずつくらいかけて丁寧にといて、わからない問題をノートにかきました。初回で4〜5割正解くらいです。 そのうちにキーワードがわかってくるので、そうしたら携帯で応用情報技術者試験ドットコムでひたすら空き時間にときます。知識が足りないなと思ったらノートに書きます。結局1週しかできませんでしたが、3〜4年分やって全部8割くらいわかっていれば午前は通るかと思います。

邪道かもしれませんが、試験の直前20分くらいで1年分をザーッと見て、計算問題は答えを覚えました。もちろん計算もできるようにしますが、パニックになった時に答えがわからないと精神的に死ぬので。

午後について

午後は1回分だけちゃんと全問題解いて、向き不向きをみました。国語の問題が難しいのと、私は文章を読むのが苦手なので、簡単と言われる組み込みの問題が難しいことがわかったので、DB、ネットワーク、アルゴリズム、あとは臨機応変にテクノロジー系から選ぶ方針にしました。 「午後問題の重点対策」を一週眺めて、記述問題の書き方とか、出る問題の範囲の把握をしました。 ストラテジーとかの問題はわかりませんが、前半でいうと、

  • DBはほぼパターンがあって、ER図の問題と簡単なSQLが知識として必要、それ以外は当日頑張ればOK
  • ネットワークも同様で、ネットワーク図に慣れておくのと、ウェルノウンポートの確認、よく午後問題の重点対策に出てくる単語を調べておく。あとはMACアドレスIPアドレスの扱いの違いくらい知っておけばそんなに過去問解かなくて平気
  • アルゴリズムは前提知識ほぼなし、当日読んで理解できれば選択
  • 組み込みは前提知識ほぼいらないけど国語力いりそう。最後の手段に
  • システムアーキテクチャシステム開発(?)は職業プログラマなら前提知識ほぼなしでいける(テストについては上記対策本で見ておく必要あるけど)、難易度ぶれるので当日判断

みたいな方針で対策しました。

当日について

お昼ご飯を買いに行く時間がないかもしれません(休憩が40分だけ)。また、午後は体感だと気力勝負な気がします。 途中退室可能なので、とにかく午前問題は即答えられる過去問でやったことある問題を増やしておいて、時間に余裕を持って途中退室をお勧めします。

午後は難易度にだいぶブレがあるので、とにかく簡単な問題を見つける練習はしてもいいかもしれません。あとは午後はちゃんと長文が読めるかにかかっているので、糖分をお昼にとるとか、お昼ちょっと目をつぶるとかすると良いです。

感想

ネットでググって出てくるほど午後はパターンでDBやらネットワークやら組み込みが簡単とか、午前はかたいみたいな感じはしませんでした。 最初はどこを解いても点数が上がらないし、午後は何見てもわからなくて絶望していましたが、午前は何度も解けばなんとかなります。午後は思い返すと問題との相性8割な気がします。

あとは起床が辛い可能性が高いので一週間くらい前から早起きの練習をするのと、ずっと座っていたり考えるのも辛いので、体力をつけてから挑むといいです。私は夜間大学に通う前だったら起きられなかったし座っていられなかったと思います。

夜間大学で学んだこと@1年生

私は某国立大学の夜間部(おそらく情報系に当たる)に通っているわけで、いつの間にか2年生も半ばを過ぎていました。 振り返ると大学に入ってから得たものが結構あったので、どんな授業があって、どう役立っているかを書き残しておこうと思います。1年に1記事になるかなあ。

1年生の間に受けた授業

微積分学

授業について

ひたすら矢野 健太郎さんの「微積分学」という教科書を解き続ける感じでした。 入学前も機械学習に興味があったので、マセマを独学していたのですが、やっぱり試験のために手を動かすと定着率が違いますね。 トピックとしては一通り指数関数や三角関数などの微分積分、部分積分とかの基本的なテクニック、そしてちょろっと偏微分なども行いました。 今の所、よくみるε-δ 論法とかは工学においては知っていなくても困らない印象です。具体的な問題が解ければいい科目。

役立ったこと

時間を作って問題を自分で解くみたいなくせがついて、試験慣れしたこと。この先工学系に出てくる科目に使う微積分の式変形に慣れて、数式でつまづくことが減ったこと。 シグマとかeとか出てきてもビビらなくなるので機械学習の本とか読みやすいです。

線型代数

授業について

教科書はほぼ使わず板書授業でしたが、演習をするならマセマでいいかもしれません。 行列の変形とか掃き出し法などを扱い、ちょろっとベクトル空間まで入りました。 この科目はあとで使う分、出てきたら復習すればいい感じはします。 この段階だと掃き出し法や基本的な行列の変形ができることが大事。

役立ったこと

行列の式変形に慣れたこと。機械学習はベクトルの扱いが想像できなくて漠然とつまづくことが多いと思うのですが、そう言うのの解決の糸口になったかと。独学と違って手で計算する機会が多くて、ある変形パターンに慣れているのは強い。

物理学・化学

授業について

この2つは理系教養的な感じ。内容は物理学はよくある高校物理学を微積分絡めて学んだ感じ、化学もスペクトルの話から始まって、エントロピーとかざっくり学びました。

役立ったこと

メリットは理系らしくなれたこと笑、物理学の区分けがわかったこと。

コンピューター基礎系

授業について

ざっと文字コードがどうとか、HTMLとか、アルゴリズムとか、全体を流す感じの授業でした。プログラムも組みます。

役立ったこと

アルゴリズムを自分で実装することで、コピペプログラマからは脱却した…かも?笑。ソートとか自分で書くのは実務でいるプログラミング能力とは違うかもしれませんが、動作の想像に役立ったり、思ったことをプログラムに落とし込む力みたいなのをつけたりするのに役立ちました。あと文字コードの理解が深まったのはラッキーかも。

Academic English、実験

授業について

この2つをまとめると不思議な感じですが、要は論文やレポートの書き方です。LaTexをよく使うとか、事実と結果を分けるとか、レポートは結果に対して調査を加えて書くとか。 事実を調べる癖みたいなのは身につきます。Englishの方は英語バージョンの時の体裁とか、IとかYouとか使わない、といった基本的な「アカデミックな文法」事項。

離散数学

授業について

これが地味に一番学生生活では役立っています。要は集合論です。集合についてと写像についてです。 数学的に厳密に話をするとどうしても、どの集合に対する議論かを最初に明示します。その辺りでつまづくと辛いので、数学っぽい科目の教科書を読むのに一番必要なのはこの辺の知識かも。群とかまではやっていないです。あとちょっとグラフ理論も入ってたかなあ。

役立ったこと

数学の教科書の一番最初を読むのが楽になった。定義的な部分はだいたい集合論とかが入っていて、そこでつまづくことが多かった気がします。

あとがき

夜間大学に入ってみて、独学では勉強できなかったことも身につくなあと思いました。周りを見ると大学を卒業すると、結構学んだことを忘れてしまっている人が多いように感じます。なので、まだ学んでいるうちに、何をしたかとか、どう思ったかみたいなのを残しておくのは有用かなと思いました。あと大卒じゃないから、論文書けないから、数式わからないから、と言うキャリアの狭めかたがなくなった気がするのは精神にとても良いです。学問上のコンプレックスがある人はみんな入ったら幸せになれるんじゃないかなと思っています。

webサイトを作り変えた時、古いサイトにアクセスされたらどうするか

webサイトのデザインを新しくして、ドメインも同じドメインを使い続ける時、子ディレクトリにアクセスされると404になるのをどうにかしました。 route53(=DNS)を使っていて、webサイト自体はS3からwixに載せ替えています。

301リダイレクト

恒久的なリダイレクトを意味しています。つまり、ヒットしなかったページは全部indexに飛ばす…みたいな設定ではなくて、新旧の対応するページをリダイレクトするイメージです。 今までのSEOを引き継げます。なお、404ではないと検索エンジンのインデックスからは消されないかも。 というわけで、今回はabout.htmlだとかservice.htmlだとかに個別にリダイレクトの設定をしました。 S3ならS3に、apacheなら.htaccessに設定を書きます。DNS側で設定するわけではなさそう。

たったこれだけなんですが、DNS側に設定するのかとか、301をどこにどう設定するか悩んだので共有。

複数独自ドメインをSEOを意識してRoute53でルーティングする

webサイトのルーティングに困ったので備忘録です。

状況

XXX.comとXXX.co.jpのドメインを取得していて、webサイトをどちらからでもアクセスできるようにしたい。 www.XXX.comやwww.co.jpでもアクセスできるようにしたい。 ルーティングはRoute53を使っていて、webサイト自体はAWSの外部のサーバに乗っている。

SEOで気をつけること

まず、トップレベルドメインとセカンドレベルドメインSEOには関係ないようです。つまり、.comだろうと.co.jpだろうと.xyzだろうと気にしなくて良い。 しかしwwwをつけるかどうか、つまりサブドメインを使っているかどうかは区別されます。ここでは評価を引き継ぐために301リダイレクトをするとよさそう。

今回はAWSのRoute53を使った設定なので、CNAMEを設定することにしました。

設定内容

そもそもwebサイトのルーティングは以下を参照。 例: 独自ドメインを使用して静的ウェブサイトをセットアップする - Amazon Simple Storage Service

今回はAWSのサービスではないのでエイリアスの設定ではなく、外部のサーバのIPをAレコードに設定しました。あとNSも外部のドメイン管理しているところに変更。 wwwがついたサブドメインをCNAMEレコードに設定して完了。

(もう1つのドメインの設定はおそらくCNAMEだけ設定すればいいと思いますが、調査中。あとで追記します)

インフラとかネットワークは疎いので間違いがあったらすみません。

ポートフォリオを作って見た

完全な静的サイトとして、副業探すときのネタになるかなと思って作りました。

作ったサイト

http://piyomaru.girly.jp

全体的な話

見た目はmaterializeなどの選択肢もありましたが、よく使うのでbootstrapを使いました。 JavaScriptでゴリゴリ動きをつけたり、CSSのanimationでゴリゴリ動きをつけるのも考えたんですが、あとでReactのデモアプリを作ろうと思っていたため、開発スピードを重視して取捨選択しました。具体的には8時間縛りにしました。

やってみたこと1:フォント

仕事で関わったデザイナーさんによく「フォントが全てだ」と言われました。 google fontをおすすめされたので、そのあたりから選んでいます。 色味と形も重要ですが、フォントとページの構成がうまくいっていることがwebサイトには重要だとか。

やってみたこと2:オープニングアニメーション

最初のアニメーション、どうやってるんだろうと思ったらCSSなんですね。 今回のはCSSのアニメーションで最初にページ全体を覆っておいたdivを消したり、擬似要素で色味のあるレイヤーを重ねたりしています。

やってみたこと3:SVG

SVGを使うと簡単に図形を動かせて、今時っぽいサイトになります。 今回は単純に曲線描いて動かしただけなんですが、例えばイラレとかでsvg出力して、線をチカチカさせたりとかもできるようです。 あとでちゃんと勉強したら記事書きます。

ドメインについて

選択肢は3つありました。 - github.ioに乗せる - レンタルサーバに乗せる - AWSに乗せる(S3+CloudFront+Route53) 今回はレンタルサーバロリポップを使っています。 登録すると独自ドメインもどきもついてきて、ファイルをFTPでアップロードするだけで公開できます。 個人利用だと安価で手っ取り早い。 github.ioはドメインいじれないのと、リポジトリに紐づくので決定打はないですが却下。 AWSは手間がかかり、8時間に収まらなくなりそうなので諦めました。

何を得たか

  • イマドキっぽいwebサイト作りの概要知識(SVG要素、CSS Animation、CSSフレームワークあたり)
  • 個人でwebサイト運用するときの選択肢(レンタルサーバーが最強な気がした)
  • 自己アピール手段

アウトプットを継続する

こんにちは。弱いweb系エンジニアのぴよまるです。
私は自分に自信がないです。仕事でもその性質を発揮し、うまく社会に対して自分の価値を表現できません。なのでせめてアウトプットをして感情ナシでもやってきたことを表現できるようにしたいと思っています。

何を書くか

今扱っているAWSとか、苦手な設計周りとか、その時々で挑戦してみたことを書き連ねようと思います。
このブログを始める前に「読む人を巻き込むんだ!」とアドバイスをもらったので、もうちょっと生くさい雑多なことも書きます。

誰のための記事か

私と同じような境遇の人にとって参考になればいいなと思います。つまり、

  • 高卒で大卒資格がなくて苦労している人
  • プログラミングスキルがひよっこな感じがする人
  • 色々挑戦するけどLチカレベルをやって何も発信せず終わる人

こういう人です。

始めたきっかけ

2つあります。1つはエンジニアから「強いエンジニアはアウトプットの習慣を早いうちにもつ」と言われたこと、もう1つは広報の仕事をしている方から「今日の出来事でもいいから毎日呟いていくことで、”ただあるだけ”じゃなくなる」と言われたことです

いい加減技術力を上げたい。何年も「ひよっこエンジニア」と名乗りたくない。好きなものを好きに作るスキルが欲しいし、もっと自由に生きたい。という気持ち。
それから、仕事でも後ろ向きて口下手だと「いてもいなくてもいい人間」になってしまうな、という気づき。

そういうのが理由です。

 

もう最初にこういう記事を書いてしまう時点でお気づきかもしれませんが、最初に書いた「自分の価値を表現」どころか何かをまとめて文字にすること自体苦手です。切り口を見失います。そういう練習もして早く人間になります。