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

1990年生まれド文系プログラマーの軌跡

Rebuidで話題になってた「岡崎に捧ぐ」を読んだ

Rebuidで話題になってた「岡崎に捧ぐ」を読んだ

rebuild.fm

Rebuidで話題になってた「岡崎に捧ぐ」を最終巻まで読んだ。

岡崎に捧ぐ 1 (コミックス単行本)

岡崎に捧ぐ 1 (コミックス単行本)

話題にしていたのは正確には「無慈悲な8bit」だったけど。作者の人の絵をどこかで見たことあると思ったら世田谷区役所と揉めた人だったことに気が付いた。世田谷区役所にはお世話になっているので、記憶に焼き付いてた。

岡崎に捧ぐ」は、ゲーム好きの友達との青春日記って感じだけど、この世代あるあるネタがふんだんに含まれていてよかった。作中の懐かしいネタは

  • ぎゃおっぴ (たまごっちの偽物、あの時期に大量にあったぱあったパチモンの一つ)
  • 大技林 (ゲームの裏技が載ってる怪しい本)
  • ポケモンLv100にする裏技 (アネデパミとかけつばんとかミュウになるケーシィとかもあったなぁ)
  • 仏ゾーン (最近シャーマンキングの新刊出たよね)
  • FF7のローポリゴングラフィック (腕がめっちゃ太いやつ)
  • PSのメモリーカードは、SFC世代にはデータが消えなかったりして画期的 (つい最近実家から出てきたメモリーカードがメルカリで300円で売れました)
  • ポケステ (FF8チョコボは、ポケステのシリアルナンバーによってドロップアイテムの質が違ってふざけんなと思った。ちなみにほとんどの人が最低ランクだった。鬼畜なドロップテーブルの資料 おでかけチョコボRPG)
  • グロ画像リンク (心臓弱いからやめてほしかった。)
  • Call of Dutyシリーズ (自分の思うようなゲーム運びができたときは良ゲー、できないときはクソゲー)

後半になると思春期なんでゲームネタがどんどん減っちゃって寂しかったけど、そのくらいの年齢だと色々あるよなーという感じだった。社会に出ると今まで観測できないような人にも出会うよねと共感する。面白いから作者をTwitterでフォローしたけど、阿佐ヶ谷ロフトでイベントやるってツイートが。。。。行きたかった。もうちょっと早く読んでいれば。。。近いうちに「無慈悲な8bit」を読んでみよう。

メルカリ駆動読書を始めた

最近お金を湯水のように使ってしまったので、本を買うお金に困窮している。読んだ本を積極的にメルカリに出していった。そこで、何かの雑誌で読んだ「メルカリ駆動読書」を始めることにした。「メルカリ駆動読書」は、本を読む前に発送日数を3~4日にして出品して、終わりを決めて読んでしまおうというものだ。タイムリミットをすぎるとメルカリ内での信用が下がるので(=モノが売れづらくなる)、結構必死になる。文章だけの本の場合は有効なメソッドだ。

高校の部活の新年会にでた

仕事中に電話がかかってきて、高校の吹奏楽部の集まりに当日出席した。どうやら胃腸炎で寝込んでる時に対面で企画が進んでたみたい。出席したけど自分には、先輩後輩の現在の噂とか現役当時の小話とか全然興味がないんだなと思った。年々、その手の話題に興味が持てなくなってきてるのでどうしようかなと。出席者の一人がスマブラ持ってきてたので、スマブラしながら二人でスマブラのキャラランクの話ばっかしてた。やっぱ趣味って大切だよなと思う。

2018年のふりかえり

この記事は#しがないラジオ Advent Calendar 2018 - Adventarの24日目の記事です。

Web業界に転職したら大学入学していた話

記事を書く目的

2018年に起きた出来事をふりかえることを目的としている。今年は、他の人が書いているような退職エントリも書けないし、下記で書いているが受験勉強でしがないラジオを聴けない期間があったので感想を書くことも難しい。今はエモいネタがこれくらいしかない。

自分と「しがないラジオ」

「しがないラジオ」が始まる前からWeb業界で働いてた。職歴は零細SIer→自社開発Web→自社開発Webで、現在3社目。「しがないラジオ」のパーソナリティのお二人のお話は、「仕事をしていく上で楽しさを感じない」という点で共感していた。ちなみにどんなSIerだったかというと、自分の唯一の同僚が書いた退職エントリがとても良いので、読んでみてほしい。

退職した話と転職への憧れの話 | R [a:r]

自分が零細SIerを脱出した理由は、将来に対して強い不安を覚えたためだ。具体的には、COBOLで開発されたプログラムの保守回収をしていたためスキルに偏りがあるためだ。あと仕事が面白くない。

qiita.com

普段は何をしているのか

Railsを用いて、プロダクトの基盤となるAPIを開発している。

LPIC level1に合格した

leokun0210.hatenablog.com

今までLinuxについて体系立てて勉強したことがなかったので、LPICを受験してみた。机上でLinuxというOSの初歩が理解できて良い試験だった。試験の成果は、知識のインデックスを貼ることができたのが大きい。学習したことに関連する事柄が出てきても、以前やったことがあるので、そこから記憶を辿ることができる。試験費用が世間一般的な試験よりもだいぶ高額なのがネックだ。

電気通信大学に通うことになった

自分の中で、2018年でもっとも大きい出来事は電気通信大学の先端工学基礎課程に合格したことだ。

leokun0210.hatenablog.com

leokun0210.hatenablog.com

電気通信大学 先端工学基礎課程 とは

先端工学基礎課程トップページ|電気通信大学

先端工学基礎課程は、主に平日夜間と土曜日に開講される社会人向けのコースです

公式HPの通り、平日夜間と土曜日に講義がある社会人向けのコースであり、1、2年生は数学や物理を中心として学習する。3年生からは専門を絞って学習するコースだ。昼間の学生と同じコースを夜間に受講することができ、最短4年で卒業できる。入学するにはAO入試を受験する必要がある。

大学入学への動機

Web業界に転職しておいてなぜわざわざ大学生になった理由は2つある。1つは仕事の面で、「キャリアに幅を出し差別化する」ためだ。自分は高校から徹底した文系の教育を受けていたため、エンジニアとしての基礎教養を習得したいという願望があった。基礎教養とは、問題解決に至るプロセスの考え方や計算機科学、数学の知識などのITエンジニアがものづくりをする上で必要となる知識を指す。

面接試験を突破するために、IPAの出している人材白書に目を通したのだが、8割の日本の会社は、人材の質と数の両方が不足している。将来的には、能力の高い人が需要に合わせて他業種より参入する可能性が非常に高い。中堅の私立文系を卒業しただけの人間が、その中で自分の欲しているポジションに着くには何か差別化する武器が必要だ。社会に出て分かったのが、IT業界に従事する全員がCSを専攻していたわけではなく、ましてや理系を専攻しているわけでもない。そこで学士を持つだけでも、ある程度の差別化のポイントになるはずだ。大学で学べる知識を書籍で学ぶと強制力が働かない上に、将来的には院に進学したいという淡い希望も持っている。そのため大学に行くことを決意した。

社会への貢献

CSを学んで専門性を高めて、会社の人材層を厚くすることが会社に貢献することだと考えている。人材層を厚くするの意味が2つあり、「社で自分だけが持っているスキルを習得すること」と「業務で必要なスキルの専門性を高めて、社会全体で見たときにそのスキルを会社全体として高レベルにする」がある。どちらのアプローチを選択するかは、学士レベルなので後者の方が可能性としては大きい。具体的なスキルをあげずにCSという抽象的な表現にしたのは、実際に講義を受けるのは未来の話であり、どの技術領域の専門性を引き上げるかの明言できないためだ。

小ジャンプからの空中攻撃が安定して出せないと人権がない

腸炎は多分完治した

leokun0210.hatenablog.com

腸炎は完治した。。。と思う。1日1回ぐらい腹痛が襲ってくる以外は日常生活に支障が出ないくらいには回復した。完治まで1週間を要して辛かった。2018年の病気の中で一番辛かった。もう二度とかかりたくない。

メルカリで不用品を売却している

大掃除も兼ねて読み終わった本や使わないキーボード、服を売却しようとしている。取引成立したものは以下の通り。

品物 売却金額(円)
弟の引越しの時に出てきた簿記2級の商業簿記テキストと問題集 300
同じく簿記2級の工業簿記テキストと問題集 300
物理の入門書 300
数学IAの入門書 300
REALFORCE R2 フルキーボード JIS 13800

利益は1万ちょっとだが、いいお小遣いになった。服は写真では材質や状態などが判別しづらいのか売れない。いちいち着丈とか身幅を書くのが面倒臭い。

メルカリでも値がつかないような本はネット買取へ

メルカリでは300円が最低価格になっているため、Amazonの中古本の売値が300円以下の本に関しては、売れることはない。そこでネット買取で買い取ってもらうことにした。まだ集荷前だが300円くらいになればいいだろう。

友達のスマホの買い替えに付き合った

大学時代の友人がスマホ代に月額6000円超も使って家計を逼迫している状態にあったので、格安SIMへの意向を手伝った。具体的なタスクはMNP予約番号の発行に付き添ったり、どの格安SIMと契約すればいいか検討して決めたりだ。格安SIMの意向のついでにSIMフリースマホの機種も一緒に見に行った。ASUSのROGPhoneにしたが、触った瞬間欲しくなる端末だった。とにかく爆速だった。自分が次に買い換えるときはAndroidにしようと思う。一生のうちに一回ぐらいは使いたい。

スマブラで空中攻撃が安定して出ない

マルスが強キャラらしいので、使うことにした。Youtubeマルスのコンボを見て、真似しても動画通りに空上が放てない。ジャンプと一緒に空上がでる。何回やってもダメなので調べたらどうやらコントローラーのキーコンフィグが悪いらしい。プロゲーマーのブログを読んで、キーコンフィグを同じにした。プロは空中攻撃はCステックで放つ。副次効果として、地上強攻撃もCステックで出せるようになった。これで安定した操作ができると思ったら、ジャンプボタンの場所を右人差し指の位置にしたため小ジャンプがうまく出なくなってしまった。全然なれていないため、コンピューターにボコボコにされる。大丈夫、このぐらいはCoDのキーコンフィグをいじって対人戦にボコボコにされる期間を経験しているので慣れている。コンピュータレベル8に勝てるようになったら対人戦に繰り出そうと思う。

smashlog.games

smashlog.games

父親が高専生だと知った

実家に同窓会の知らせがきていて、そこで高専生だったことを知った。親の学歴とか今まで知らなかった。

読んだ記事

電通大1年生に1日1時間の英語学習を勧める根拠

はい、ゲームしてないで勉強します。

Ruby 2.6 の変更点 - 言語仕様その1 - @tmtms のメモ

rescue 無しで else を使用するとエラー 今までwarningだったのか。

今年お世話になったCLIコマンド集 - mizchi's blog

hubを使わなきゃな

RailsでReactをサーバサイドレンダリング(use Hypernova by airbnb) - Qiita

サーバーサイドレンダリングの知識が不足していたので

【ゲームの企画書】 どうして『スマブラ』はおもしろいのか? 最新作『スマブラSP』の制作風景からゲームデザイナー桜井政博氏の頭の中に迫る

桜井さん若い

GMOあおぞら銀行の残高を自動取得するスクリプトを組んだ

課題

給与受け取り口座がGMOあおぞら銀行に変更になった。マネーフォワードが対応してなくて、残高確認のために、毎回GMOあおぞら銀行のページを徘徊するのは煩わしい。自動化して毎日チェックできないものか。

解決策

もっとも理想的なのはマネーフォワードがGMOあおぞら銀行に対応することである。しかし実装予定の予告も出ていないので、神に祈るしかない。無神論者は神に祈る習慣はないので自分でなんとかすることにする。

労力が少なく具体的な解決策を一つあげるとすれば、スクリプトを書いてcronで毎日流して通知する形がいいのではないか。なのでPuppeteerの練習も兼ねてNode.jsでやってみる。

「Puppeteer入門 スクレイピング+Web操作自動処理プログラミング」を購入して、少し練習して挑戦してみた。

Puppeteer入門 スクレイピング+Web操作自動処理プログラミング

Puppeteer入門 スクレイピング+Web操作自動処理プログラミング

具体的な解決策として Puppeteer を用いて自動ログインしてみる

最初に完成したコードを記載しておく。

Puppeteer_practice/aozora_login.js at master · ryuchan00/Puppeteer_practice

まずはPuppeteerのインストールから始める。

npm install puppeteer

次はPuppeteerの読み込みをする。

const puppeteer = require('puppeteer');

ユーザーIDとパスワードの取り扱い

迷ったのが、ユーザーIDとパスワードをどこから取得するかだ。思いつくだけでも以下の場所から取得できそうだ。

この中で選択するのであれば、ソースコードを公開する時に安全で環境によって値を変更できる「環境変数」で保持した方が良さそうだ。dotenvというライブラリを使えば.envファイルに書いたものを環境変数として扱ってくれるらしい。

qiita.com

### dotenvのインストール
npm install dotenv

dotenvの読み込み

require('dotenv').config();

const USER_ID = process.env.AOZORA_USER_ID;
const PASSWORD = process.env.AOZORA_PASSWORD;

.envファイルの中身

AOZORA_USER_ID="aaaaa"
AOZORA_PASSWORD="bbbbb'

環境変数AOZORA_USER_IDにはユーザーIDを、AOZORA_PASSWORDにはパスワードを入れる。

GMOあおぞら銀行のページまで自動で遷移する

すでにユーザーIDとパスワードを用意してしまったが、まずは自動でGMOあおぞら銀行のログインページまで遷移してみることにする。最初の歩幅を縮めて一つ一つ確認していこう。初めて使うツールならなおさらだ。ログインページまで自動でたどり着くには、ブラウザの新しいページを開いて、gotoメソッドで遷移先のURLを引数として与えてあげる。node aozora_login.jsで実際に実行して確認していく。ログインページが開ければOKだ。

(async() => {
// Puppeteerの起動
    const browser = await puppeteer.launch({
        headless: false,
        slowMo: 50,
    });

    // 新しいからのページを開く
    const page = await browser.newPage();

    // view portの設定
    await page.setViewport({
        width: 1200,
        height: 800,
    });

    // GMOあおぞら銀行のログインページまで移動する
    await page.goto('https://sso.gmo-aozora.com/b2c/login');
})();

自動ログインしてみる

ログインするためにはユーザーIDとパスワードをフォームに入力する。こうやって日本語で書いたら何を当たり前なこと的なことを書いているが、実際にコードで表現すると以下のようになる。typeメソッドで各フォームに入力していく。要素はユーザーIDはname="username"、パスワードはname="password"を指定する。(余談だが、もしPOSTメソッドにて実行するのであれば、トークンが必要なのだった。)ログインボタンをクリックするためにはclickメソッドを使用する。これで会員トップページまでたどり着ける。

    // ユーザーIDを入力する
    await page.type('input[name="username"]', USER_ID);
    // パスワードを入力する
    await page.type('input[name="password"]', PASSWORD);

    // ログインボタンをクリックする
    await page.click('button[type="submit"]');

会員ページトップの残高情報を取得してみる

残高の情報をコンソールに表示できるようにしてみる。まず残高の情報が表示されるまで、スクリプトを中断させる必要がある。waitForメソッドを用いて6秒待つことにする。それ以下だと先にスクリプトが残高の要素を取得しようとして失敗することがある。残高の要素はamountクラスのspanタグの要素である。evaluateメソッドを使用して、定数amountに残高の数値を代入する。これでCUIで残高を表示することができた。最後にブラウザを終了するようにすれば完璧だ。

    await page.waitFor(6000);

    // 要素の取得
    const amount = await page.evaluate((selector) => {
        // evaluate関数に渡す第一引数のfunctionは、
        // 第二引数として渡したパラメータをselectorに引き継いでブラウザ内で実行する
        return document.querySelector(selector).textContent;

    }, 'span.amount span');

    console.log('残高:' + amount);

    // ブラウザの終了
    await browser.close();

これから

これをChrome extensionに移植してマネーフォワードのページを開いた時にGMOあおぞら銀行の情報も追加してあげたい。できるだろうか。年末にやってみる。

急性胃腸炎に罹患する(現在進行形)

急性胃腸炎に罹患する(現在進行形)

先週の金曜日からお腹の調子が悪くて、変だなと感じていたら、明けの土曜日に39度の高熱と頭痛と腹痛と下痢に悩まされた。最初の3日は食事が全く食べられなかった。熱は1日で引いたが、残りの症状は続いたので病院にて診察してもらったら胃腸炎だった。インフルエンザかと疑ったけど、そっちかという気持ちだ。胃を整える薬を処方してもらった。

急性胃腸炎は、感染症腸炎と呼ばれているらしい。有名なものだとノロウイルス感染症腸炎の一つに当たる。食事は、ヨーグルトと蕎麦とお粥しか食べれなかった。今日の昼までは食事→腹痛→トイレのエンドレスワルツで辛かった。寝てる時も腹痛で起こされることもあった。今の所は、食事の後の腹痛はないのででほぼ治ったと思いたい。。。治ってほしい。。。