日本語自由帳

分かりやすく、伝わりやすく。

はてブを見ることが辛くなってきた話

何を書こうかさんざん迷っていたうるるです。 今日はプログラムの話ではなくちょっとした自分の心の整理を兼ねた記事にしたいと思います。

突然ですがみなさんは、ニュースアプリを活用していますか。 スマートニュース、グノシーなどの有名アプリや、各新聞社やNHKなどのニュースアプリも出ています。そしてちょっと違うかもしれませんが「はてなブックマーク(以降、"はてブ")」もその日のニュースや人のブログなどを収集するのに便利なサイト・アプリだと思います。 私もはてブは素敵なサイトだと思っています。その理由として、

  • 主要ニュース以外の記事(技術的な話・小ネタ話など)が読める
  • はてなブログから特定の話題に対する様々な意見が得られる
  • ブックマークのコメント欄から、どのような意見が出ているのかを知ることができる
  • あまりまとめサイトがトップ記事に上がってこない

などがあります。 私は色々な角度から冷静に、時折感情的に意見を建設的に議論するコメント欄も合わせて読んでいます。 そのおかげで、ニュースを昔よりも視点を変えながら読むことができているのかなと思います。

でも最近、はてブが苦手になってきました。 苦手、というよりかは読む記事が少なくなりました。 読む記事が少なくなったというのは、

ということ。

まぁ最後のはブームだから仕方ないね、と割り切るのですが、それでも長い。 いつまで同じ話題にああだこうだと言い続けるのだろうと思いながら見ています。 またそれらを省いて、ニュースやブログを読んでもポジティブな気持ちになれなくなりました。

  • 有名コメンテーター(?)のコメントに人気票(スター)がつくようになることでだんだん意見が偏ってくる
  • 好きなものを絶賛するあまりからか批判記事に対するコメントのバッシングが厳しくなる

誰か何かを叩き、誰か何かを吊るしあげないといけない世の中なのかな。 なんかもう放っておいてあげればいいのに、どうしてそこまで言わないといけないのかな。 最近は特にその印象が強くて、読んでるだけで胸が苦しくなるし、そういうことを平気でする人たちに怒りを覚える。 でも結局感情的に読んでしまってイライラしているのは一人自分だなと思い、読むのをやめることにしました。

つくづくネットに向いてない自分だなと思います。 でもネットのニュースは早くて面白いものが多い。 ためになることも多い。でもその反面、読んでて辛いことも多い。 どっちをとるかを考えた結果、はてブを読むことをやめました。 きっと今の自分はあらゆることに無関心になることが大切だと考えています。 普通にテレビの色んなチャンネルのニュースをぼけーっと見ることにします。

はてブのブックマークは消さないし、はてなブログも辞めるつもりはありません。 一個人としてはてブを読むことをやめる、それだけのことです。 ただ、はてブは良いサイトだし、現状のネットのこのよくない流れがどこかでいい方向に変わっていかないかなーと願っています。

C++を使った簡単なゲーム作りに挑戦しました

社会人3ヶ月目のうるるです。 今は楽しく研修をこなしております。

当社の研修にある「OJT(On Job Training)」は、全ての部署に1週間ずつ 配属され、部署独特の雰囲気を味わいながら、実務に近い仕事を行ったり、実務ではないけど今後の仕事に必要な知識を得るための課題に取り組んだりしています。 その中でも希望部署でもある技術系の部署では4日間かけてゲーム作りに取り組みました。

言語はC++、今回は統合開発環境(C++ Builder)を利用しました。 といってもほとんどC言語で作っているようなものです。 C言語は大学時代に学び、統合開発環境も学部時代にVisual Studioを使って券売機を作成したこともあり、先輩社員からのプレッシャーも感じながらの制作でした。

またグループでiOSアプリとしてのゲームは制作したことがありましたが、ひとりで一からゲームを作ったことがありませんでした。 なので現在の知識と経験でどのくらいゲームが作れるかを試すよい機会でした。

コンセプト

せっかくゲームを作るなら、私の好きなゲームである「FINAL FANTASY」っぽいゲームを作ろう、と考えました。 そしてFFを象徴するものといえば「ATB(Active Time Battle)」だと思いました。

基本的には敵・味方共に一定の時間が溜まったキャラクターから行動を選ぶ仕組みである。ほとんどの作品で、次の行動選択可能までの時間を表したATBゲージが味方キャラクター1人1人に表示され、時間の流れを視覚的に捉えることができる。(Wikipedia: アクティブタイムバトルシステム)

このATBの対義語は「ターン制バトル」で、ドラクエなどRPGの戦闘の多くはターン制バトルです。 ターン制バトルとは敵のターンと味方のターンを(基本的に)交互に行う戦闘形式のことです。 よって自分のターンは敵は襲ってこないので、じっくりと次の行動を考えながら戦闘することになります。

しかし、実際に敵が襲ってきた時に自分のターンなんて言っている暇がありません。 そしてこのATBの「リアルタイムで戦うおもしろさ」を体感してもらおうと作ったのが

f:id:hsmdlily:20160612214154p:plain

「ターン制バトルに甘えるな勇者よ」

です。 (Windowsアプリのキャプチャをすると色がすごいチカチカする。)

ゲーム内容

通常戦闘

f:id:hsmdlily:20160612214157p:plain

ゲーム内容は一言で言うと「出てくる敵を倒すゲーム」です。 ただ、それだけだと「もぐら叩き」と同じなので、RPGのバトルっぽく属性の相性に合わせて攻撃する方法にしました。 これはATBで苦労する点のひとつとして「まほうを選ぶ」ことがあるからです。

例えば「火の攻撃が弱い敵にフォーカスを当て、その敵に『まほう』から『ファイア』を選ぶ」という操作は意外と面倒です。 この面倒さが少しでも伝わるようにと思い、(本来ならPopup Windowで出てくるのですが)TreeViewを使った実装にしました。 敵に合わせた適切な攻撃方法を選択しないと減点になります。

さらに敵に攻撃される緊迫感を体感してもらうべく、敵は時間が経つにつれ、どんどん近づいていき味方ユニットを攻撃します。 攻撃されても減点になるので、できるだけ素早く、適切に敵を倒すようにしました。

ボス戦闘

f:id:hsmdlily:20160612214200p:plain

通常戦闘も大変ですが、ボスになるともっと大変です。 一回の攻撃では倒せず、色々な方法でボスを倒さなくてはいけません。

そこでボスはいくつかの行動を行うことで倒せるように実装しました。

画面右下のウィンドウにある「このとおりに こうげきしろ!」の指示に従って、正しい順番で行動をとります。 もし、順番と違った行動をとってしまうとボスは逃げてしまいます。 また、ボスも近づいて強力な攻撃してきます。

こだわった点

主に2つのことを考えた実装にしました。

  1. ATBっぽさを表現し、リアルタイム戦闘の苦労を教えたい
  2. 1.以外のところはユーザ・エクスペリエンスをよくしたい

そして細かく4つのことを考えました。

1.1. ATBっぽく、行動を選択する度にTreeViewが折りたたまれる

ATBは行動をするごとに行動の画面が閉じます。 それっぽさを出すために行動をする度に、「まほう」のツリービューが折りたたまれるように設計しました。 ただコマンドの記憶は固定です。

1.2. ボスバトルで複数行動パターンによる攻撃方法を採用

ボスバトルは単純な行動で倒せないことを強調したかったので、ランダムに行動を指定して、その行動通りに選択するとボスが倒せるようにしました。

2.1. 敵の位置を毎回変えたり、ダメージ表示を出す

ユーザが行った行動、敵の行った行動が反映されるように行動を行う度に画面に変化をつけるようにしました。

2.2. 行動を選択する度に味方ユニット上に行動を表示

ユーザの行った操作にレスポンスをつけるべく、行動をするごとに味方ユニットの上に選択した行動が表示されるようにしました。 また敵ユニットが味方ユニットに攻撃した際も、味方ユニットの上に攻撃されてスコアが減ったことを表示されるようにしました。

苦労した点

  • Sleep関数の利用

本当はゲーム終了時に画面にそのまま「Finish」の画面を数秒間出したかったのですが、Sleep関数の挙動が不明で断念しました。 ただ、結果としてFinishを時間差でポップアップ風に出すことで、ENTERキー連打によるキーボード操作の暴走を止めることができました。

  • ボタンやツリービューの初期位置の設定

新しい画面が出てきた時に、キーボード用にボタンやツリービューの初期位置を設定したかったのですが、その設定に苦労しました。 また、敵を倒した時もツリービューの選択項目を初期位置「たたかう」に設定したかったのですが、それもうまくいかなったので、ツリービューを強制的に閉じるようにしました。

  • ランキングの設計

ゲームは毎回新規で呼び出されるのに対してランキングのスコアの配列は保存しなければいけない。 本当はポインタを使って場所だけ指定してランキングの配列を呼び出せばよかったのですが、あまりポインタは得意ではなかったので、フォーム同士の受け渡しによって実現させました。

本当はやりたかったこと

  • 複数敵の登場

複数敵の場合は「敵を選択→行動を選択」をしなければいけませんが、敵の動きなどを考慮すると結構大変そうだったので、今回は諦めました。

  • ランキングに自分の名前を入れる

ランキング機能をこれ以上追加すると死ぬし、コードが汚くなる。

感想

「一人でゲームを作る」ということをしたことがなかったので、4日間真剣に取り組むことができ、非常に楽しかったです。 コーディングしている時間も楽しかったのですが、家に帰ってお風呂に入りながら「こういうのを入れたら面白そう」など考えている時間も楽しかったです。

実際の業務はゲームほど楽しくはいかないと思いますが、このような考える癖を身につけられるようにしていきたいです。

それにしてもまだまだ汚いコードを書いている気がするので、関数やポインタを使った綺麗なコードを書けるように努力していきたいです。

使用した素材

1ヶ月の研修を終えて

f:id:hsmdlily:20160504163353j:plain

社会人2ヶ月目のうるるです。 無事に、特に何事もなく1ヶ月を終えました。 今のところ5月病にもかかっている様子もなく、のんびりと楽しく有給のとれない途切れ途切れのゴールデンウィークを過ごしています。 せっかくの休日なので、この1ヶ月でどんなことを意識しながら研修に臨んでいたかをメモしていこうかと思います。

(ちなみに上の新入社員啓発本を頂きましたが、ほとんど読んでません。)

出勤時間は余裕をもって

どうせ長い社会人生活。 最初ぐらいはまじめに早い時間に会社に到着しようと思いました。 人事の方からは「無駄に早く来ても困るし10分前でいいよ」と言われました。 ただ、朝というのは何が起こるか分からないことの連続。

  • 気分よく起きれない
  • 朝のう○こが出ない
  • 電車のダイヤが乱れる
  • 急にお腹が痛くなって途中下車する
  • 駅で人とぶつかってトラブルになる

いや、ここまでないとは思いますが一応念のため。 私は腹痛持ちなので、トイレのことはやっぱり心配になります。 なので、余裕をもって20分前には会社に到着するようにしています。 今だけでもできるだけ余裕をもった朝を過ごすようにしています。

朝の掃除は会社周辺の環境を楽しむ

週に1回、朝の掃除があります。 簡単な会社の周りの掃き掃除です。 何も考えずに掃除するのも退屈なので、周りの景色や歩いている人の様子とか見ながら掃除しています。

もちろん先輩社員もいらっしゃるので、どんな人がいるのかなーと確認しながら挨拶もすることで、できるだけ顔を覚えてもらいます。 また会社の近くには保育園か幼稚園があるみたいなので、歩いている子供の様子を微笑ましく見ています。 これは事案にならないように気をつけたいと思います。

あとはお坊さんになった気分で「どうやったら舞ってしまう落ち葉が効率よく集まるのか」を考えながら掃除するのもまた面白いです。

挨拶は目線を大事に

新入社員なので朝は各部署にご挨拶するのですが、挨拶する際はできるだけ目線を配らせながら挨拶するようにしています。 朝は眠いし、まだ気分も上がっていませんができるだけ微笑みの表情で挨拶をすることで、よい印象を持たせられるように努めています。 「元気」というより「愛想よく」って感じでしょうかね。

研修はできるだけ何でも質問する

新入社員の特権その1「知らないことは何でも尋ねていい」

ということで自分がちょっとでも知らないと思ったことは研修後の質問で必ず尋ねるようにしています。 初めての社会人なので会社のことなんて全然わかってない。 理系の人間なので経理とか営業とかよくわかってない。 ならば「ggrks」と言われるまで全部聞けばいいじゃないか!

幸いにも研修担当している先輩社員のみなさまには「ggrks」と言われることなく、非常に親切に優しく質問に答えてくださって、本当に感謝しています。 また質問することで研修担当の先輩社員も「授業に興味を持ってくれてる」と感じてもらえているみたいなのでWin-Winですね!

あと「何尋ねようかなー」と考えられるので研修中の居眠り防止にもなります。

研修は先輩社員を知るいい機会

研修はもちろん学ぶ場でもありますが、どんな社員がいるのかを知る場でもあるような気がします。

部署の説明をするときには所属部長がいらっしゃいますし、役員の方のありがたいお話を聴くこともできます。 きっと仕事を始めると、下っ端からスタートなので、しばらくは直接お話する機会もないと思います。

また色んな部署の方が研修にいらっしゃいます。 きっとひとつの部署に配属されたら、こんなに他の部署の方ともお話する機会も多くないと思います。

そういった意味で全員は覚えられませんが、「こんな方がいらっしゃるんだなー」といった感じで、どんな先輩社員がいらっしゃるのか、どんな方なのか、どんな能力をお持ちなのかを観察しています。

逆に質問をすることで、先輩社員からも顔を覚えられ、後々コミュニケーションも取りやすいかな、とか思いながら質問しています。

できるだけ怒られる

新入社員の特権その2「何でもやってみて怒られてもいい」

今のうちに何でもやってみて怒られようかと思っています。 実は先日、学生気分で少しだけやらかしてしまいました。 その時、人事の方に警告・注意というより忠告・アドバイスを受けました。

「きっとうるるさんはもっとこうしたことを意識するといいかもしれない」

もちろん、人事の優しさもあると思います。 ただ、新入社員という名の免罪符もまだ存在しています。 もちろんやりすぎはよくないですし、同じ失敗を繰り返すのもよくないです。 それでも学生から社会人になるとわからないことだらけです。 ならば色々やってみて、ダメなら怒られようという意識で取り組むことにしました。

私自身、怒られることにもあまり慣れてなく、どうしても萎縮したり反発したりする面があるので、そういうのもできるだけ和らげられたらいいなと思います。

疲れたら早く寝る

お家帰ったら、できるだけ早く寝るようにしています。 特に日曜日

サザエさん症候群」というのもあるように日曜日が一番憂鬱です。 そして憂鬱は夜が進むにつれてひどくなります。 ならばとっとと寝たほうが吉でしょう。 平日も同様にマイナスのことを考えそうになったら早く寝ましょう。

そういえば研修の予定が書かれた紙はずっと会社に置いています。 もしかしたら前日の夜に次の日の研修内容を見ず、当日の朝に知るのが憂鬱にならない秘訣なのかもしれません。

最後に

偉そうなことを言っていますが、これも全ては

できるだけ意味のある毎日を過ごすため

に取り組んでいることです。 学生の頃から社会人の憂鬱な呟きを見るたびに、自分はできるだけこういうことにならないようにしようと考えていました。 楽しいことはもちろん、辛く苦しいこともありますが、その全てを今だけでも楽しめるようにしていきたいと思います。

4年間の研究室活動を終えました

f:id:hsmdlily:20160329225110j:plain

はじめに

大学は4年間、大学院は2年と1年。 就職活動がうまくいかず1年留年しましたが、昨日無事に学位をいただき、卒業することができました。 もう今週末から4月、新年度、社会人です。

ということで、学生と社会人の間にいる今のうちに今年度を振り返ろうと思い記事を書くことにしました。 また卒業ということなので、軽く自分の大学・大学院生活も振り返ってみようと思います。

前期の就職活動(4月〜9月)

余分にはみ出た1年というのは辛く苦しい戦いでした。 前期の半年は休学をいただき、就職活動に専念しました。 先の見えない就職への不安と、迫り来る就職活動の期限に常に迫られていました。

「いつ就職できるの?」

「今年は就職できそうなの?」

「面接は順調?」

これらの言葉がとても怖く、心臓を握りつぶされる思いでした。 ただ幸いにも周囲にはそうプレッシャーをかけてくる人がいなかったので、昨年度とは視点を変えて就職活動に取り組めたと思います。 その結果、夏には内定をいただき、後期は就職について心配することなく研究室活動に専念することができました。

後期の研究室活動(10月〜3月)

後期はとにかく「直接、研究室活動に関わらないようにする」という思いで活動していました。 やはり現役(というのも変ですが)の修士1,2年の学生がしっかり学部4回生の指導をしてほしいので、後期も最初は週に1,2回程度訪れて、ゼミやミーティングに参加していました。

しかし、秋から冬に変わる頃、研究も本格的に始まる頃にだんだん研究室内に広がる溝を感じ始めました。 この原因は「昨年度が非常に良い環境だったから」ということからでした。

確かに昨年度は私の4年間の研究室活動上で良い環境と人がいたように思います。 今年度もその環境を維持したいという思いから現役の修士生が一生懸命考えて、昨年度にやっていたことを取り入れて、学部生となかよくしようとしていました。 しかし、その時の学部生は「イマドキの若者」のように、そういう手厚い歓迎をむしろ嫌厭していたようにも見えました。 そして研究室にあまり来なくなり、研究室に来ても誰にも疑問をぶつけることなく、1人で悩み、そそくさと帰ってしまうようになっていきました。 修士生はできる限り指導をしたいけど、コミュニケーションが取りづらい、そもそもコミュニケーションすらとれない状況で、指導できない腹立たしさを抱えていました。

さすがにその辺りから(大げさかもしれませんが)研究室崩壊の危機が見え始めたので、私も動くことにしました。 といっても、今まであまり関わりがなかった学部生と他愛のない話をすることから始まりました。 あとは修士生には「ミーティングで自分の後輩の話をしっかり聞いてあげる、理解してあげる」ことを大事にすることを伝えました。

卒論が近づくと、私は学部生の実験にとことん付き合いました。 実験をすることで(本当はよくないのですが)どのような研究をしているのか、この実験からどのような結果を得たいのかを知ることができたからです。 もちろん、実験は何も考えずに純粋な気持ちで参加しました。 そこから卒論を読んで、教授に言われる前に書き方の説明、何を伝えたいのかを本人たちに丁寧に、ひとつずつ確認させることで、卒論をどのように書いていけばいいかを”段階的に”説明することにしました。

昨年度の私は後輩に一度に1から10を説明していたような気がします。 もしかしたら最初から5ぐらいまで飛ばして説明していたのかもしれません。 でも最初から10まで理解できる人はなかなかいないということに気付きましたし、もし自分が説明を受ける立場ならほとんど分からないだろうなと思いました。 そこで、今年度は最初は1,2程度、次は3,4…と段階的に教えることで理解しているかどうかを会話で確認しながら次のステップに進むことができました。 また後輩の様子を見ながら"どの段階にいるのか"に気付くことができました。 これも塾講師のアルバイトをやっていたからかもしれませんね。

指導もしながらご飯を作りました。 みんなが気付かないことを率先して取り組むことで、信頼を得ることもできたように思えます。 その結果、学部生は全員無事に卒論を出し終え、最初はあまり好きでなかった研究室も「来年の修士もここにいたい」と言ってくれるようにまでになってくれました。

当たり前ですが研究室に在籍する学生は毎年変わります。立場も変わります。 なので研究室の色も変わります。 青に黄色を混ぜると緑になりますが、必ずしも次の年の色も青になるとは限りません。 研究室の色をじっくり観察し、それに合った色を混ぜることが大事になると痛感させられた後期だったように思えました。

大学・大学院生活を振り返って

7年間大学にいましたが、正直大学の3年は単位を取るだけに通っていたような気がします。 その証拠に一般教養の授業なんかまるっきり覚えてない。 覚えているのはC言語の知識だけのような気がします。 まぁそれさえ残ってちゃんと成熟してくれれば全然問題ないんですけど。

やはり後半4年の研究室生活が自分の人生をガラリと変えてくれたような気がします。 と言うと書ききれないほどたくさんあるので、ここでは割愛します。 でもひとつ言えることは「これまでの人生の中で最高の環境だった」ことだと思います。 同期にしろ、先輩後輩にしろ、先生にしろ、自分がやりたいことはやらせてくれた。 自由に色んなことができて、その結果たくさんの経験を手に入れることができました。

小中高大と学校があまり楽しくなかったのですが、研究室に入って苦労しながらも自分の中では本当に楽しむことができたと感じています。 私が4回生の時の修士2回の先輩から、今の4回生の後輩まで。 そして4年も面倒見てくださった先生方には感謝の気持ちでいっぱいです。

ようやく社会に出ます。 私は意識高い学生ではないので

「世の中を変えてやる!」

とは言いません。 自分の会社の中で改善できそうなことをどんどん改善していこうと思います。 現在、内定者アルバイトで平日はフルタイムで働いているのですが、社内の様子を見ていると

「ここ、いつか自分の手で直せるようにしたい」とか

「これきっともっとこうすればいいのにな」とか

思うことがあります。 どうせ社会人は長いので、直せるときにゆっくり直していこうと思います。 とまぁこんな気持ちで取り組んでいこうと思います。

「よそはよそ。うちはうち。」

と最近誰かが言っていたような気がします。 確かに隣の芝生は青いのかもしれません。 でもまずはうちの周りから、自分の手で綺麗にしていくことで、よそにもこっそり自慢できるような会社にしたいなと考えています。

そんなわけで、うるるさん大学院卒業です。

就職前のアカウント整理

f:id:hsmdlily:20160315233305j:plain

きちんと、整理整頓を。

うるるです。 無事に就職先が決まって春から社会人です。 社会人ということで入社に向けて、準備を進めていかなくてはいけません。 春に提出する書類に今年からはマイナンバー書類も入ったため、マイナンバーの確認も忘れないようにしないといけませんね。 また春から一人暮らしをされる方は借りるアパートのことや、必要最低限の家具の準備もあって大忙しです。 ただ私の就職先は実家から通える範囲にしたので、しばらくは一人暮らしの準備は必要なさそうです。 あとは年金や奨学金など、支払うお金に関しても当たり前ですが自分で管理していかなくてはいけません。 早いうちに自分の収入と支出のバランスを考えたほうがよさそうです。

今回はそれ以外に「自分のアカウントの整理」をすることにしました。

背景

私の彼女がアカウント整理を行ってたから、の一言に尽きるのですが。

「身辺整理、というほどでもないけど、自分がいつ死んでも余計なものが残らないようにしたいし。」

ネットの世界は自分で作った黒歴史がたくさん残ってしまいます。 誰にもバレなければそれはただの廃墟になるのですが、そうはならないのがインターネット。 見つからないと思っていたものが簡単に見つかり、簡単にどこかに保存されてしまい、永久に晒され続ける。 特に悪い言動をした際のネットの詮索能力は計り知れないものです(いや、悪いことはしちゃダメですよ)。

そうでなくても社会に出ると自分の上司が突然どこから入手したのか、数年前のTwitterのつぶやきを出して、

「君、こんなこと言ってたんだねー。」

とか言われるだけもめんどくさい。そんな何年も前の発言なんか覚えてないし、その時とはモノの考え方も違うし。 とか言ってもきっと通用しない。

じゃあそんなことを言われる前に消してしまおう。

というのが今回の背景です。

やること

自分のアカウントを消し続ける。それだけです。 しかし、以外にも自分で作成したアカウントというのは山ほどあります。 それを見つけるための糸口として、以下の要素を参考にしました。

1.ブックマーク

まぁこれは大丈夫ですよね。 ただブックマークいえども、だんだん見なくなるブックマークもあります。 そういうものもついでにブックマークから外しておくことでブックマーク整理もできるかと思います。 ここまで書いて「はてなブックマーク」の整理もしておこうかと思いました。

2.保存したパスワード

あまり使わなさそうなアカウントは、忘れないためにもブラウザでパスワードを保存するかと思われます。 これらを確認しながらアカウントを消していくと、「こんなの作ったっけ!?」みたいなアカウントに出会うと思います。 ちなみにブラウザがGoogle Chromeだと

「設定」→「詳細設定を表示」→「『パスワードとフォーム』にある『パスワードを管理』」

で、そこからパスワードが記録されてある「passwords.google.com」に飛ぶことができます。 サイト名やURLを確認しながらどんどん消していきましょう。

3.メールアドレス

これもできるだけ数を減らしたい。 個人的には「仕事用」と「プライベート用」の2つのGoogleアカウントだけでいいんじゃないかなと思ったので、それ以外のメールアカウントは消しました。

4.SNS

使ってないSNSアカウントは消したらいいのですが、使っているSNSもできるだけリセットした方がいいと考え、リセットしました。 例えば私の昔のTwitterは大学生からたくさんつぶやいてきた思い出のあるアカウントでした。 しかし、いい思い出ばかりでもなかったので、この際リセットすることにしました。 最近はツイート数、RT、ふぁぼに興味をなくしたので、特に後ろ髪を引かれることなくリセットすることができました。 もし、昔のツイートをまた見たいと思うのなら、現在のTwitterはツイート履歴を保存することもできるので、それを利用してローカルに置いておくのもよいでしょう。 ただ、TwitterとかFacebookとか消しても30日ぐらい保存されてるから、うっかり前のアカウントでログインすると復活するから困る。

気をつけること

SNSのアカウントを消す際は、それまで仲良くやってきた人とのつながりも消えます。 そのような人たちを少しでも減らすべく、消すときにはなるべく猶予をもたせましょう。 私も、あるアカウントでもうすぐいなくなること、これからネット上のどこにいるのかをお伝えし、1ヶ月ぐらい残してから消すことにしました。 そうすることで、少しでもつながりが消えてしまう人を少なくできるのではないかと思いました。 その結果、放置アカウントで数年経ってから、改めてつながりを取り戻せた人もいたのでよかったです。 それでも気付かない人は気付かないので、他に連絡の手段がなければその程度だったと思って諦めましょう。

結果

こんなに自分はアカウントを作っていたんだ、とびっくりしました。 でも、それらを消去することですっきりしました。 昔の日記やつぶやきなどを見て、懐かしさや若さを感じましたが、やはりこれらをネット上に残しておくのは危険だ、とも感じました。 しかしまだまだありそうな匂いもするので、引き続き見つけ次第即削除していきたいと思います。 せっかくの社会人、これからずっとお付き合いしていく社会人なので、できるだけ、新鮮な気持ちでスタートさせたいですね。

就活を終えて思うこと

お久しぶりです。

まず遅くなりましたが私の1年半に及ぶ就職活動は7月末を持ちまして、内定獲得という形で終了しました。 これは多くの皆様から助言や協力をいただき、それが十分に活かされた結果だと考えています。 心配してくださった方、応援してくださった方、夜中のスマブラに付き合ってくれた方。 本当にありがとうございました。

さて、本当は偉そうに今年度の就職活動記録を残そうかと思ったのですが、 それは研究室内で行われているナレッジプールで資料と共にお話しました。 その資料はSlideShareに載せたので、就活意識の低い人は是非読んでみてください。

ただ、これは後輩たちが就職活動をする際に一般的に注意すべきことです。

ここからは自分自身の能力・性格から感じた就職活動、大げさに言うと自分の人生の反省をしていきたいと思います。 悲観的な意見が続きますが、これが誰もが当てはまるわけでもないので注意してください。

自分はできる人間だと勘違いしていた

この一言に尽きるかと。 この大きな勘違いが私の長く苦しい就職活動を引っ張ってきた最大の要因だと思っています。

私は国公立大学のそこそこできる大学院生である

でも実際にはその地域の人たちだけが知っていて、別の地域に行くと

「へぇー…なんとか大学…」

で終わりましたよね。 実際には名前も知らない大学で書類で落とされた、みたいなのもあったような気がします。 ネームブランドのある大学、強い。

学会に参加・発表した実績がある

ただ、研究の実績も積み上げてきました。 国内学会に参加し、賞を貰いました。 国際学会にも採択され、参加しました。 しかし、それは面接をする上でほとんど話題にならなかったような気がします。 研究やってない人からは「ふーん」レベルなのかな。

自分は技術力があると思っていた

私の研究室の同期・先輩方はゲーム会社に入った実績がある。その人たちはこう言いました。

「私は別に何もしてないよ。でもゲーム会社受けたら内定貰った。」

そう言ってたから私も頑張ればゲーム会社から内定貰えると思っていました。 でも、そうじゃなかった。 昨年受けたゲーム会社はどこも自分を認めてくれませんでした。

そこで改めてゲーム会社に行った人たちの研究を思い出してみると、その人たちは毎日のようにコツコツとコードを書いていたことを思い出しました。 多分自分の知らないところで地道にプログラミングの勉強をしていた気がしますね。

それに対して自分はどうか。 自分はネットでちょちょいと調べてコピペしただけの糞雑魚情報学生だった。 確かに研究に関しては熱心に取り組んでいたけど、私の研究は主にアイデア勝負だったので実装よりも評価実験が多い研究でした。 なのでコードに関しては基本放りっぱなしでした。

ゲームに対する情熱は誰にも負けないと思っていた

やめたほうがいいよ、そういう発想。 就活でズタボロに引き裂かれていくから。 というぐらい自信をなくしたような気がします。 ゲームプランナーとして応募したこともありましたが、ありきたりなゲームばかり考えて、企画書作ったら落とされます。

「FFやドラクエにかわるRPGを作るならどうする?」

「パズドラやモンストにかわるソシャゲ作るならどうする?」

この辺りを熱く(厚く?)語れないと無理です。

自ら進んで勉強する気はなかった

研究以外でも十分にプログラミングを勉強する時間はありました。 そこで本を買って、新しい言語を取得しようとしましたが誰にも評価されず、1人黙々と作業するのがつまらないので3日で終了しました。

hsmdlily.hatenablog.com

ハッカソンにも参加しました。

hsmdlily.hatenablog.com

楽しかったです。でも、ハッカソンも最初は就職活動に役立つかな?と思って参加しただけだったので、その後は結局どこにも参加しませんでした。

というわけでどれも3日坊主で終わりました。 ただ分かったのは「誰かに成果物の評価をされるとやる気が出る」ということは分かりました。 そんな話をどっかの会社でやったら

「は?エンジニアは孤独にコードと向き合うんだよ。」

と笑われたこともありました。まぁ確かにそうっちゃそうなんだけど。

その辺りからそんな自分ができることはなんだろうと考え、自分はできない人間と認め、これまでやってきたことを一生懸命アピールするようにしました。 プログラミングは色々できる!(書けるとは言ってない)ぐらいでアピールしました。 そして無事に内定をいただくことができました。

意識の低い私がこれからできること

さて、これから私にできることはなんでしょうか。

就職留年したけど単位は揃え、論文は書き終え、特にやることがなくなり、毎日のようにモンストをやってます。 色んな人に話を聞いてみると

「ハッカソン出たら?」「なんかアプリ作ったら?」「留学したら?」「勉強したら?」

と色々言われたのでやろうかと思ったのですが、なんせそんな意識高いやる気が起こらない。 後々自分の能力になることは分かっているけど、そんなの今つかないと分からない。 色々考えてみた結果、

「暇を持て余す」

ことにしました。

なぜかというと、いつも通っている美容院のお兄さんがこういったからです。

「暇って羨ましい。社会人になったら少なくとも40年くらいは暇な時間がなくなる。それなら今のうちに暇を楽しむべきだ。」

確かに社会人になったら嫌でも働く。 ならば今のうちに暇なりに色々やってみようと思いました。 今はお家で家事(料理・洗濯・掃除)しながら、研究室に顔を出したり、おいしいパンケーキ食べたり、ゲームしたり、ゲームしたりしています。 そのついでに無理しない程度に勉強やイベントに参加できるといいかなと思いながら日々を過ごしています。

社会人になったら、研修でもう一度ゼロからプログラミングを学ぶことになると思います。 それでいいです。 大学で6年以上情報の学生やってきましたけど、もう一度謙虚な気持ち、新しい気持ちでプログラミングに取り組もうと思っています。

だって私はできる人間ではないから。

糞雑魚エンジニアとしてコツコツ頑張れるようにしたいです。

第7章「タスクB:検証とユニットテスト」

こんばんは。 今日は昨日に引き続き、本の第7章を進めていました。 というか進められませんでした。

モデルのユニットテスト

まずは「depot/app/models/product.rb」から

class Product < ActiveRecord::Base
  # Title, Description, Image_urlが空でないことを検証
  validates :title, :description, :image_url, presence: true
  # Priceが1以上であることを確認(Priceには小数点以下2桁しか保存されないため)
  validates :price, numericality: {greater_than_or_equel_to: 0.01}
  # 名称の重複がないか確認
  validates :title, uniqueness: true
  # Image_urlがgif,jpg,pngであるか確認
  validates :image_url, allow_blank: true, format: {
    with:    %r{\.(gif|jpg|png)\z}i,
    message: 'はGIF,JPG,PNG画像のURLでなければなりません'
  }
end

「depot/app/controllers/products_controller.rb」もちょこちょこ変更してさぁユニットテストだ!と軽快にスタートしました。 しかし、「depot/test/models/product.rb」をいじってる最中でした。

  test "product price must be positive" do
    product = Product.new(title:        "My Book Title",
                          description:  "yyy",
                          image_url:    "zzz.jpg")

    product.price = -1
    # ここが10行目
    assert product.invalid?
    assert_equal "must be greater than or equal to 0.01",
       product.errors[:price].join('; ')

    product.price = 0
    assert product.invalid?
    assert_equal "must be greater than or equal to 0.01",
       product.errors[:price].join('; ')

    product.price = 1
    assert product.valid?
  end

rake test:units

を実行すると…

Run options: --seed 12156

# Running:

F

Finished in 0.034827s, 28.7134 runs/s, 28.7134 assertions/s.

  1) Failure:
ProductTest#test_product_price_must_be_positive [.../depot/test/models/product_test.rb:10]:
Failed assertion, no message given.

1 runs, 1 assertions, 1 failures, 0 errors, 0 skips

これだけ通らない。本来なら「3 assertions」になるはずなんですがね… おんなじような悩みを抱えている人もいるみたいですが、解決方法がよく分かってない。

Rails, Failed assertion, no message given - Stack Overflow

なんかずっと悩んで調べていたのですが、小手先のコード変更だけではどうしようもならなかったです。 あとの「ImageのURLテスト」や「フィックスチャデータの使用」では普通に通った。 ということはPriceに問題あるのかなーと思ったのですが、どうなんでしょうかね。 この部分を飛ばせばひとまずこの章はクリアしました。

まだまだ先は長い。