日記帳

プログラミングのことをつぶやく日記です。

電気通信大学 先端工学基礎課程 に合格した

先日、電気通信大学 先端工学基礎課程 AO入試に合格しました。来年4月より大学1年生です。

約5ヶ月前に受験を決めて、運よく合格することができました。応援してくださった皆様、本当にありがとうございました。

leokun0210.hatenablog.com

もし社会人で受験したいけど情報が欲しいという方がいたら、よければ参考にしてください。ただし記事の内容が来年以降も当てはまらない可能性もあるのであくまで参考情報の一つとしてお考えください。

動機

上記の受験を決意をするときのエントリーを言及した「自分のキャリアに幅を持たせる」側面が強いです。面接の時にもお話ししたのですが、IT業界はIPAの調査によれば人材の質・量共に不足気味です。(この辺の根拠はIT人材白書2018を見てね)そうなると他の業界から優秀な人材が多く人が流れてきます。今の自分のように大学の専攻はコンピューターサイエンス(以下CS)以外に人も今以上に多くなってくるでしょう。そうなると1つのポジションの競争率が高くなります。業務に関してほぼ同等の能力を有する場合は、理数系の知識に基づいたロジカルな論理的思考力のバックグラウンドを持つ人材、つまりはCSの知識の方が有利ではないかという推測して入学を決意しました。面接でもこれを掘り下げたことを言いました。

試験の内容

1日目は、数学・物理化学・英語の3教科合わせて120分の総合問題を解きました。

2日目は、今まで数学・物理を学んだかのアンケートと数学Ⅱまでのテスト、あとは志望動機などを聞くための集団面接と個人面接がありました。

やったこと

総合問題対策

5ヶ月という期間でフルタイムで働きながら4教科を勉強するのは時間が足りないです。ネットでは、社会人は総合問題の点数はそこまで重視されないとの書き込みを見つけたので、数学と英語に絞って勉強しました。物理化学は余裕があったらやるぐらいの気持ちでした。

英語

上記の教材を1週しました。実際の出来は半分以上は確実に取れたかなという印象でした。

数学

  • 白チャート数ⅠA
  • 白チャート数ⅡB
  • 白チャート数Ⅲ

微分積分三角関数、行列を中心にやりました。過去問で出題されない範囲の傾向がわかるので、過去3年間で一問も出題されていない単元は手をつけませんでした。総合問題の出来は正直あんまりできませんでした。ただ、2日目の数学のテストは7割ぐらいはできたと思っています。

物理化学

  • チャート式物理基礎
  • チャート式化学基礎

これらを少しだけやっただけでした。正直勉強時間がなかったので、ほぼ捨て科目でした。

集団面接で総合問題の出来について聞かれるのですが、社会人の得点はそこまで高くない印象でした。6人と一緒に面談したのですが、勉強期間が1ヶ月未満の人もいました。ただなぜ得点が低いのか、入学後のフォローはどうするかを聞かれます。

面接対策

社会人は面接の比重の方が大きいと思ったので、面接の根幹になるであろう志望動機は3~4日かけて作成しました。志望動機は、「なぜ大学を志望したのか」「なぜ電気通信大学なのか」「なぜ先端工学基礎課程なのか」の3つを一本の繋がる線にして書きました。規定文字数が800文字程度でしたが、草案は1400文字ほど書いてそれから削る作業をしました。特に苦労した箇所が「なぜ電気通信大学か」でした。これは電気通信大学はどのような人材を輩出する目的があり、他の大学とどのように違うのかを調査して書きました。パンフレットは何回も読み返した記憶があります。

推薦書は会社の方に書いていただきました。本当にありがとうございました。

実際は集団面接では、志望動機、総合問題の感想などが聞かれました。個人面接では、集団面接の掘り下げと共に勤務状況や通学距離などが聞かれます。ちなみに1日目はいたのに2日目の面接に来ない人が数人いました。

試験の時に注意した方がいいところ

数学は最低でも数Ⅱまでは力を入れておく

試験2日目は、面接のみだと思っていましたが、数Ⅱまでの基礎的な問題を1時間解きました。おそらく社会人受験者の評価資料に使うのではと思いました。社会人受験者は、高校卒業から時間が経過しており、総合問題を解答するには厳しい人もいるので、別途基礎学力の調査が必要なのかなと思いました。

2日目の面接は、集団面接から個人面接まで2~4時間ぐらい待たされる

集団面接は午前中に終わるのですが、個人面接になると、人数が60人前後おり、一人当たり10分以上面接するので、かなり待たされます。自分は4時間ぐらい待ちました。待ち教室は結構寒いので防寒対策はしっかりした方がいいでしょう。

面接では機転が効くかの質問もされる

集団面接で、「日本の文化を一つあげて、どうのように外国人に説明しますか」と聞かれました。結構不意打ち気味だったので焦りました。答えるのに難儀している受験者もいました。受験前は新聞の1面に軽く目を通すぐらいはした方がいいかなと思いました。

何を実社会に活用できるか

大学に行く目的は情報理工系の知識の専門性を高めることです。1~2年生の間は数学や物理の基礎を学んで出来ることを増やすフェイズ、3~4年生は専門性をグッと引き上げるフェイズと分けて捉えています。専門性を高めて、会社の人材層を厚くするのが自分の役割だと考えています。やや抽象的な表現にしたのは、まだ実際に講義を受けるのは未来の話なため、どの技術領域の専門性を引き上げるかの明言が難しいためです。ただこういうスタンスで会社に貢献するつもりは変わりありません。

Hubotを通してSlackとスプレッドシートを連携してルーレットを作る

Hubotを通してSlackとスプレッドシートを連携する

GMOペパボ Advent Calendar 2018の1日目の記事です。

Slackにてルーレットをして人にメンションを飛ばせるBotを作成しました。完成イメージは↓↓↓

f:id:leokun0210:20181125231832g:plain

こんな感じで、スプレッドシートに前回の当選者を残しながらランダムで人を指定するシステムです。2019年が間近に迫っているのに今更感が否めませんが、お付き合いください。

f:id:leokun0210:20181201170601p:plain

この記事の対象者

目的

Slackとスプレッドシートを連携しようと思ったきっかけは、所属しているチームにて毎週行われるチームミーティングでは、KPTを用いた「ふりかえり」を行っていて、ファシリテーターを決める必要があります。ファシリテーターは毎回違う人を選びます。過去3、4回ぐらい前にファシリテーターになった人までは、ファシリテーターの候補から外していました。しかし、3、4週前のこととなると忘れていることが多く、覚えていない時もあります。したがって、過去3回までにファシリテーターを担当した人以外をランダムに選ぶようなルーレットを作りたいと思いました。チームミーティングの出席者が様々な事情で変動することがあり、エンジニア以外にも人数の編集しやすく、使いやすいスプレッドシートという媒体を使用して、Slackを通じてランダムでファシリテーターを指名したいと思いました。 この記事を書いた目的は、Hubotとスプレッドシートの連携の記事の多くは、完成したコードがバーンと公開されていて、仕組みを追いながら理解することができないからです。ただコピペして運用するぶんには問題ありませんが、一応エンジニアなので仕組みを理解しつつやっていきたいという気持ちがあります。ですので、初めから順を追って作成します。

要件

  • SlackのBotに対して、 ルーレット とメンションしたら、あらかじめ指定した候補者の中から1名をランダムで選択して、その人に対してメンションする。
  • 過去3回までのルーレットの当選者は、選ばれる候補者の中から外れる。
  • 候補者のリストは、スプレッドシートで管理する。

この3つの要件を満たすように作っていきましよう。

開発順序

  1. SlackとHubotを連携させる。
  2. Hubotで、Slackからのリクエストを処理できるようにする。
  3. スプレッドシートから、Hubotに対して、候補者のリストから1名をランダムに選択して、レスポンスしてあげる。
  4. HubotをHerokuへデプロイする

Hubot編

Slack側の設定

Slack App ディレクトリでHubotと検索して、アプリをワークスペースに追加します。

アプリを Slack に追加する | アプリおよびインテグレーション | Slack App ディレクトリ

「設定を追加」を選択して、Hubotの名前を入力してHubotインテグレーションを使いします。ここでは名前を「roulette」とします。

f:id:leokun0210:20181201185423p:plain

次に追加したHubotのインテグレーションの設定を変更します。APIトークンはHubotのプロセスを立ち上げるときに必要です。

f:id:leokun0210:20181204114334p:plain

Hubtoの設定

Hubotのチュートリアルの通りやっていきましょう。

Getting Started With Hubot | HUBOT

まずHubotを動かすためのパッケージをインストールします。ここでは npm については触れません。必要なパッケージは yogenerator-hubot です。

$ npm install -g yo generator-hubot

次にHubotの雛形を作成します。このときメールアドレスやHubotの名前も要求されますが、全てEnterでも構いません。このタイミングでリポジトリを作りたい人は git init をするのを忘れずに。

$ mkdir hubot-roulette
$ cd hubot-roulette
$ yo hubot

bin/hubot Hubotのプロセスを立ち上げてローカルでHubotが動くことを確認します。 hubot-roulette ping でHubotから PONG とレスポンスがあれば疎通確認は完了です。

$ bin/hubot
# 色々メッセージが出るけど動作するので無視する
hubot-roulette> hubot-roulette ping
hubot-roulette> PONG

次はHubotで簡単なスクリプトを書いて、Hello,Worldしてみます。 scripts/hello.coffee を作成します。JavaScriptでも可能ですが、今回はCoffeeScriptで書いてみます。これで、 hello と呼びかければ world と返ってきます。

$ touch scripts/hello.coffee
module.exports = (robot) ->
  robot.respond /hello/i, (msg) ->
    msg.send 'world'
$ bin/hubot
hubot-roulette> hubot-roulette hello
hubot-roulette> world

次にSlackとの連携をやってしまいます。 hubot-slack というSlackとHubotのアダプターのパッケージがあるのでインストールします。そして環境変数 HUBOT_SLACK_TOKEN にSlackの設定時に取得したAPIトークンを代入します。プロセスが起動したら、 roulette アカウントに対してDMを送信します。まずは ping を送信して疎通を確認します。次に hello と送信して world が返ってくるか確認します。

$ npm install hubot-slack
# Slackのプロセスが起動
$ HUBOT_SLACK_TOKEN="Slackで取得したAPIトークン" ./bin/hubot --adapter slack

f:id:leokun0210:20181201201345p:plain
Hubotとの会話

APIとの通信

スプレッドシートは、WebAPIを作成する機能があり、Hubotとのやり取りはhttpリクエストを通じて行います。まずは実際にスプレッドシートAPIを作成するより、スタブサーバーを立ててHubot側の動作を確認することを優先しましょう。npmでjsonから簡単にスタブサーバーを立てることのできるパッケージ json-server をインストールします。

$ npm install -g json-server
$ touch user.json

user.jsonの中身は以下の通りです。 GET "localhost:3000/users" のエンドポイントを作り、 "a" という文字列が返ってくることを期待します。

{
  "users": [
    "a"
  ]
}
# スタブサーバーを立ち上げる
$ json-server  --watch user.json

  \{^_^}/ hi!

  Loading user.json
  Done

  Resources
  http://localhost:3000/users

  Home
  http://localhost:3000

  Type s + enter at any time to create a snapshot of the database
  Watching...
# 期待通り"a"が返ってきた
$ curl -X GET "http://localhost:3000/users"
[
  "a"
]%

Hubotのスクリプトから、このスタブサーバーのエンドポイントへリクエストします。JavaSriptのHTTPクライアントを使用します。

CoffeeScript Cookbook » Basic HTTP Client

http = require 'http'

module.exports = (robot) ->
  robot.respond /hello/i, (msg) ->
    # port番号3000を指定するのを忘れずに
    http.get {host: 'localhost', port: 3000, path: '/users'}, (res) ->
      if res.statusCode is 200
        body = ''
        res.setEncoding 'utf8'
        res.on 'data', (chunk) ->
          # レスポンスのデータをbodyにまとめる
          body += chunk
        res.on 'end', ->
          # レスポンスのJSON形式のデータをパースする
          obj = JSON.parse(body)
          msg.send obj
      else
        console.log "error: #{res.statusCode}"
# きちんと"a"が取得できており、GETリクエストが成功したことがわかる
$ bin/hubot
hubot-roulette> hubot-roulette hello
hubot-roulette> a

GoogleAppsScript編

次はスプレッドシートAPIを作ります。新規のスプレッドシートを作成しましょう。 ツール>スクリプトエディタ でエディタを起動します。まずやることはスタブサーバーと同じで、単純なレスポンスを返せるようにすることです。 doGet 関数を定義して単純なJSONが返せるようにしましょう。

// GETリクエストに対する処理
function doGet(e) {
  // API形式で出力できるように準備をする
  var output = ContentService.createTextOutput();
  // JSONで出力する
  output.setMimeType(ContentService.MimeType.JSON);
  // JSON 文字列に変換
  payload = JSON.stringify({"user": "a"});
  // ContentServiceインスタンスに出力するJSONをセットする
  output.setContent(payload);
  return output;
}

このあとAPIとして公開するようにします。 公開>ウェブアプリケーションとして導入 を選択して実行ユーザーを 全員(匿名ユーザーを含む) にします。URLを取得できるので curl にて確認します。リダイレクトに追従できるように -L を付けます。

$ curl -L https://script.google.com/macros/s/[APIのID]/exec
["a"]% 

続いてはスプレッドシートから値をとってみます。A1にbと入力して、この値を返すAPIを作ります。 getValue 関数を新たに作成して、その中でA1の値を取得します。

f:id:leokun0210:20181201211634p:plain
A1にbと入力してね

// GETリクエストに対する処理
function doGet(e) {
  // API形式で出力できるように準備をする
  var output = ContentService.createTextOutput();
  // JSONで出力する
  output.setMimeType(ContentService.MimeType.JSON);
  var value = getValue();
  // JSON 文字列に変換
  payload = JSON.stringify({"user": value});
  // ContentServiceインスタンスに出力するJSONをセットする
  output.setContent(payload);
  return output;
}

function getValue() {
  // スプレッドシートID
  var id = 'シートのIDを入れる';
  var ss = SpreadsheetApp.openById(id);
  // シート名
  var sheet = ss.getSheetByName("シート1");
  // セルの値を取得する
  // sheet.getRange({行番号},{列番号})でセルの範囲を指定して、.getValueで値を取得する
  // この場合はA1を取得する
  var value = sheet.getRange(1, 1).getValue();
  return value;
}
# A1セルに入れていたものが返ってきた
$ curl -L https://script.google.com/macros/s/[APIのID]/exec
{"user":"b"}% 

ここまでくればあと一息です。あとは書き込む方法さえ知ってしまえば、冒頭のルーレットを作る上で必要なことはだいたい網羅できます。 getValue 関数の中に以下のコードを追加します。そうすると実行時の時刻がB1のセルに書き込まれます。

  // 実行した時刻をB1に書き込む
  sheet.getRange(1, 2).setValue(new Date());

f:id:leokun0210:20181201213538p:plain

続いてルーレットを作っていきます。ルーレットは、A2にカンマ区切りで候補者の名前を入れます。これはSlackのメンションするときに使うので、Slackのアカウント名です。A3からA5までは、それぞれ1~3回前のルーレットで当選した人が記録されています。この人たちは、集中して当選しないようにルーレットの抽選候補者から除外します。文字数が多くなってしまうので、個々の解説はできませんが、今までやってことを全て合わせた集合がルーレットという機能です。

f:id:leokun0210:20181201214425p:plain

// GETリクエストに対する処理
function doGet(e) {
  // API形式で出力できるように準備をする
  var output = ContentService.createTextOutput();
  // JSONで出力する
  output.setMimeType(ContentService.MimeType.JSON);
  
  // スプレッドシートID
  var id = 'シートのIDを入れる';
  var ss = SpreadsheetApp.openById(id);
  // シート名
  var sheet = ss.getSheetByName("シート1");
  // ルーレットの候補になるセルの値を取得する
  var values = sheet.getRange(2, 1).getValues();
  var resArray = values.toString().split(",");
  // 過去3回まで選ばれたものは、再度選ばれないように候補から外す
  var exclude = [];
  
  for (i = 0; i < 3; i++) {
    var x = i + 2;
    if (sheet.getRange(2, x).getValue() != '') {
      exclude[i] = sheet.getRange(2, x).getValue();
    }
  }

  if (exclude.length < resArray.length) {
    exclude.forEach(function(element) {
      resArray = arrayDelete(resArray, element);
    });
  }
  
  var target = resArray[Math.floor(Math.random() * resArray.length)];
  sheet.getRange(2, 2).setValue(target);
  if (exclude[0] !== undefined) {
    sheet.getRange(2, 3).setValue(exclude[0]);
  }
  if (exclude[1] !== undefined) {
    sheet.getRange(2, 4).setValue(exclude[1]);
  }
  
  var res = {};
  res['user'] = target;
  Logger.log(res);
  Logger.log(target);
  payload = JSON.stringify(res);
  output.setContent(payload);
  return output;
}

// valueの要素と一致したものを削除する
function arrayDelete(array, value) {
    for(i = 0; i < array.length; i++){
    if(array[i] === value){
      //spliceメソッドで要素を削除
      array.splice(i, 1);
    }
  }
  return array;
}
# 予想した返しができている
$ curl -L https://script.google.com/macros/s/[APIのID]/exec
{"user":"山根"}% 

f:id:leokun0210:20181201215110p:plain
B2に今回の当選者が入っている

ここまでできたら、実際にHubotのスクリプトでこのAPIを実行してみましょう。スプレッドシートで作成したAPIのURLは、リダイレクトしてGoogleAppsScriptを実行します。なのでリダイレクトしても追従できるように follow-redirects というパッケージをインストールします。package.jsonに追加するので -g オプションは付けません。 scripts/roulette.coffeeスクリプトを書きます。

$ npm install follow-redirects
$ touch scripts/roulette.coffee

スプレッドシートAPIのURLは漏れないに越したことはないので、環境変数から取得できるようにします。 API_URL という名前にします。

http = require 'follow-redirects'
# スプレッドシートはhttpsなので注意する
http = http.https

# 環境変数を取得
url = process.env.API_URL

module.exports = (robot) ->
  robot.respond /ルーレット/i, (msg) ->
    http.get
      host: 'script.google.com'
      path: url
    , (res) ->
      if res.statusCode is 200
        body = ''
        res.setEncoding 'utf8'
        res.on 'data', (chunk) ->
          body += chunk
        res.on 'end', ->
          obj = JSON.parse(body)
          # APIからのレスポンスを@を先頭に付けてSlackへ返す
          # レスポンスの例 {"user":"山根"}
          msg.send '@' + obj.user.toString()
      else
        console.log "error: #{res.statusCode}"
$ HUBOT_SLACK_TOKEN="Slackで取得したAPIトークン" API_URL=/macros/s/[APIのID]/exec ./bin/hubot --adapter slack

これでSlackのrouletteに「ルーレット」と呟いてみます。するときちんと抽選結果が返ってきています。

f:id:leokun0210:20181201220547p:plain
やったー🎉

このHubotをチャンネルに招待するために、 /invite @roulette を実行します。そして @roulette ルーレット とメンションを飛ばすと先ほどと同じ結果が得られます。

f:id:leokun0210:20181201220844p:plain

実運用

PCを常時起動している人だったら、ずっとHubotプロセスを実行して入ればいいのですが、そうはいかないのでHubotをHerokuへデプロイします。デプロイする前に、Hubotの雛形を作ったときのpackage.jsonのnode.jsのバージョン指定が 0.10.x になっているので適当なものに修正します。

  "engines": {
    "node": "10.10.0"
  }

Herokuへデプロイするための準備も含めて行います。

$ heroku login
$ heroku create [your-bot-name]
# Hubotにはredisが必要
$ heroku addons:create redistogo:nano
$ heroku config:set HUBOT_SLACK_TOKEN=[your-slack-token] --app [your-bot-name]
$ heroku config:set API_URL=[your-api_url] --app [your-bot-name]
$ heroku git:remote -a [your-app-name]
$ git push heroku master

これでHerokuでHubotが動きます。

実際に運用してみての感想

まだ1回しか運用していませんが、誰が前回のファシレーテータかを思い出す必要がなく、ファシリテーター決めも30秒から1秒くらいになったので煩わしさが解消されたかなーと思っています。ここまで書くのに疲れたのでもう休みます。

参考記事

hubotスクリプトの書き方とサンプル集 | mitc

Google Spreadsheet を簡易 Webサーバーとして動かして、手軽にWebHookを受け取る方法 - Qiita

JSON.stringify() - JavaScript | MDN

GASでGoogleスプレッドシートのセルの値、行数や列数を取得したり、セルに値を入力したりする基本 (1/2):Excel VBAプログラマーのためのGoogle Apps Script入門(2) - @IT

herokuでhubot立ててみたらカンタンだった - Qiita

HubotをHerokuでSlackに繋げるまで - Qiita

配列からランダムに値をとりだす。 - Qiita

CoffeeScript Cookbook » Basic HTTP Client

JSON Server使いこなし - モックサーバーの起動とリソース処理 | CodeGrid

typicode/json-server: Get a full fake REST API with zero coding in less than 30 seconds (seriously)

CoffeeScriptを書いた

最終的に、以下の条件を満たしたHubotのルーレットBotを作成したい。

  • 呼びかけるとスプレッドシートか何かに記録されているいくつかのワードの中から一つを返す。
  • 過去3回まで返したワードを記録して、それらは返答候補のワードから外す。

Hubotで任意の応答をさせるにはCoffeeScriptが必要だった

昨日の続きで、Hubotに任意の返事をさせるにはCofeeScriptが必要だ。3年ぶりに書くので記法を全く覚えたいない。とりあえず"Hello,World"試して、基本的な書き方を確認した後、適当にサンプルコードを拾って試した。

CoffeeScriptの練習 - Qiita

次に任意のワードで呼びかけられた時に、返答するようにした

あるワードで呼びかけられた時に返答をするようにした。

module.exports = (robot) ->
    robot.respond /こんにちは/i, (msg) ->
          msg.send 'Hello'

Node.jsで作られたフレームワーク——HubotでTwitterのBotがお手軽に〈Node.jsシリーズ vol.8〉 - Tech Blog - Recruit Lifestyle Engineer

CoffeeScriptでGETリクエストを処理してみる

こんな感じでCoffeeScriptGoogleへGETしてみてそのステータスコードをコンソールに表示してみる。

http = require 'http'

http.get { host: 'www.google.com' }, (res) ->
    console.log res.statusCode

CoffeeScript Cookbook » Basic HTTP Client

今までのやったことを組み合わせて、特定のワードで呼びかけられた時に、GoogleへGETリクエストした時のステータスコードを返却してみるようにする。

http = require 'http'

module.exports = (robot) ->
  robot.respond /GET/i, (msg) ->
    array = [
    ]
    http.get {host: 'www.google.com'}, (res) ->
      code = res.statusCode
      console.log(code)
      msg.send code.toString()

f:id:leokun0210:20181123134545p:plain

高校の友人が結婚する

また高校時代の友人が結婚する。ここのところ結婚ラッシュだ。たまには参加しなきゃとは思いつつも予定が被るのであった。

プログラミング欲が少しだけ戻ってきた

今までプライベートでプログラミングできなかった反動か、少しだけプログラミング欲が戻ってきた。勉強しようという気持ちでやるのではなく、今の生活を便利に面白くしようというモチベーションでやっていきたいと思う。勉強しなくてはいけないの強迫観念に追われると精神的に疲れる。

自作キーボードに興味が出た

USの分割キーボードが欲しいけど、既製品だとビビッとくるのがなかったり、取り扱い終了でメルカリに張り付かなきゃいけないから、自作キーボードがいいのではという気がしてきた。Mint60というキーボードを見つけたけど、必要なっものを一式揃えたら3万円ぐらいかかってうーんという気持ちになっている。

Mint60のご紹介 - ゆかりメモ

Hubotを触ってた

受験が終わって、やっと肩の荷が降りたので社会復帰していこうと思う。

Hubotを触った

slackでルーレットbotを作りたいなーと思ってHubotをローカルで動かしてみた。

f:id:leokun0210:20181122010155p:plain

参考にした記事

チュートリアル通りやっても hubot-slack がpackage.jsonにないので、うまく動かなかった。したがって自分で追加した。

Getting Started With Hubot | HUBOT

Hubotを使ってSlackへBotを投げる - Qiita

Slack | Slack Developer Kit for Hubot

Intellijを購入した。

気がつけばIntellijのライセンスの期間が10ヶ月もすぎていたので、改めてサムライズ経由にて購入した。2年目継続購入を選択して安く済ませようとしたが、半年以内に継続の手続きにしなければ新規扱いらしい。でもサムライズの人が少しだけ割り引いてくれた。

かな打ちからローマ字打ちに戻した

特に理由もなくUSキーボードに憧れたので、前段階の準備として、ローマ字打ちに戻した。自宅用にはFILCOのMajestouchを買おうと思う。会社用は2018年12月に発売されるRealForceのRGBのテンキーレスにしようと思う。

Amazon | FILCO Majestouch MINILA Air 67キー英語配列 赤軸 FFBT67MRL/EB | FILCO | キーボード 通販

読書

色々読みたい本があるので、ドラクエ10の裏側の本をアマゾンで注文した。

スクレイピング

受験中に買ったスクレイピングの本が積ん読しているので読もうと思う。

気持ち

まだ気持ち的には万全に戻ってはないけど、徐々に元気を取り戻そうと思う。

大学受験をする

大学にいきたいと思ったので、28歳にして初めての大学受験をしようと思います。狙うのは電気通信大学の情報理工学部(夜間主)先端工学基礎課程です。受験形態はAO入試です。なぜ行こうと思ったのか書き出します。

この記事の目的

  • 面接のための下準備として、現在の動機を書き出す。しばらく寝かせて醸成させる。
  • 誰かにアドバイスをもらえることを期待する。
  • 自分を追い詰めて、モチベーションを高める。
  • 自分の状況を報告する。

なぜ大学に行こうと思ったのか

いくつかの理由が重なって進学しようと思いました。一つが数学や物理など理系の基礎を勉強するための時間を強制的に作るためです。自分で学習できればいいのですが、なかなかその意思が続けるのは難しいです。二つ目は、自分のキャリアに幅を出すためです。今時文系出身のエンジニアも珍しくありません。理系分野のバックグラウンドがある方が差別ができるのではないかと思ったからです。最後は環境的に余裕ができたためです。現在勤めている会社ではフレックス制度があり、ある程度フレキシブルに勤務時間を変えることができます。5時に退社して大学に行くこともできるようになったのです。

そもそも高校時代に理系を選択しない理由は、単純に選択する機会が少なかったからです。自分が在籍していた駒澤大学高校は、名前の通り駒澤大学の付属校であり、9割の生徒は駒澤大学に進学します。駒澤大学は学部が文系のみです。今思えば、そこまで好きでもない部活(音楽は好きだけど、部活の文化的な意味で)になんとなく3年頑張るよりも、自分の進路について真剣に考える時間が必要だったように思えます。周りに理系を目指す人が著しく少なかったことも影響しているのかもしれません。数学などはクラスで一番の成績を取っていた時期もあり、素養は理系寄りな部分もあったのかなと思いました。そういう材料があったので、きちんと自分の意思で選択する機会を作ればよかったです。

編入や大学院という選択肢を取らない理由

現在28歳であり、2019年度に入学して、卒業するのが32歳のときです。おじさんです。それならば編入や大学院という手段も視野に入れるべきか悩みました。ただ数学や物理などの理系の基礎がごっそり抜けている状態で受験しても厳しいだろうと思います。それならば、じっくり基礎からやるべきだと思いました。だいぶ遠回りしてしまいましたが、悲観的になってはいません。平均寿命が80歳を超えるこの世の中、大学に行かなかったことを悔やんでいる暇があるのなら、挑戦する方が素敵だと思いませんか。

勉強方法

合格した人のブログを読んだり、過去問を取り寄せたりしてます。

電気通信大学AO入試を振り返る - 電通大夜間生のブログ

物理・化学

物理・化学なんて、高校でやったことないのでイチからの挑戦です。とりあえず受験サプリを始めてます。

数学

白チャートから始めてます。もうすごく忘れてます。

英語

大分忘れているので、システム英単語と受験サプリの文法をやってます。

とりあえず11月下旬まで頑張ります。

2019.3.2 追記

合格しました。春から通う同級生はよろしくお願いします。

leokun0210.hatenablog.com

あとブクマで同級生を見つけました。一緒に頑張りましょう!!

大学受験をする - 元税理士受験生、プログラミングをする

私も社会人で先端工学基礎課程に合格しました、4月よりお互い頑張りましょう!

2019/02/06 00:00
b.hatena.ne.jp