時代に翻弄されるエンジニアのブログ

ゲームプログラマをやっています。仕事やゲームや趣味に関してつらつら書きたいと思います。

受動脳から抜け出せない

f:id:tkymx83:20200620145641p:plain

*文章を書くリハビリのための記事です。

この世の中には2つの脳の状態がある。それは、受動脳と能動脳だ。

受動脳になるためには手段がある。それは受動的になにかをおこなうことだ。良い例はテレビや動画を見ることである。長い時間テレビや動画を見ていると脳の報酬系はインプットを受け取ることが当然と受け取る。寝ることは頭の整理だということをよく聞くが、受動脳のときは夢にまでテレビや動画で見たことが出てくるので、以下にインプットを素直に受け取っているかがわかる。この受動脳の状態ではいくつか不都合がある。

まずは、自分から発信ができなくなってしまうことだ。受動脳はインプットするのはちょうどよい。インプットすることに対して快楽を感じるように脳が流れを作ってしまうからだ。情報を取り込んで自分に入れ込む流れを脳中につくることで効率的にインプットできるがそこに自分の思考は入らない。思考が入らないということはアウトプットができないということだ。

イメージとしては頭の中に川が流れており、情報が水だと考えると良い。流れる水の中を上流に進むように動くことは難しい。まさにこの状態が受動脳の中で頑張って能動脳に移動しようともがいている状態である。そのため、生半可なことではこの受動脳から抜け出すことができない。

受動脳から抜け出す方法はいくつかある。まずは環境を変えることだ受動脳担っている状態はその環境に依存することが多い。決まった場所(例えばリビングなど)で決まった内容(テレビなど)を見るとその場所でその状態になった時に受動的な快感が与えられることを想像してしまう。そのため、快感をえようとテレビなどの動画をみて、受動脳を加速してしまう。そのため、お出かけするなど普段は行かないようなところに行くことで脳の流れが変わる。

次に、アウトプットの強制決行である。アウトプットと言っても簡単に考えると日記を書くなどである。受動脳はインプットの流れだと言ったように能動脳もアウトプットの流れである。つまりは強制的にアウトプットの流れを作ってあげることが大切だ。例えば日記を書くなである。そうでなくても今思っていることをメモ帳に書くだけでも能動脳に近づく

自分もこの文章は能動脳にするためのきっかけとして書いている。そのため、いつものように誰かに見てもらうことを考えていない。受動脳や能動脳は流れなので、それを並行して行うことは難しい。そのため、どちらかの脳のメリットをしっかりと享受して、切り替えたい時に切り替える手を見つけることが大切だ。

PS:受動脳は陥りやすいので、積極的に能動脳にする手段を見つけていきたい。

強いエンジニアが身近にいたので特徴を3つまとめてみた

f:id:tkymx83:20200604001549p:plain

こんにちは、タクという名前でブログをやっています。

最近エンジニアとしての成長ってなんなのかな?と思うことが多いです。

僕の職場にもすごいエンジニアがいます。いろいろな実装を手掛けていて、それらひとつひとつがみんなに求められているものを作っています。社内表彰もなんどかされて、そのエンジニアがいるチームは技術的にもハッピーになる。

そんなエンジニアはどんな能力をもっているのか?今日はそれをまとめていきたいと思います。

僕と同じように、エンジニアとしての成長を感がている方に対して少しでも気づきになればと思い書きたいと思います。

すごいエンジニア

アンテナ力がすごい

アンテナ力が高いとは、知識を見つけてくるチャンネルが多いことを言います。有益なニュースサイトを知っているだとか、ものしりな友だちがいるだとか、何かしらオンラインサロンに入っていて情報に触れる機会が多い人のことです。

アンテナ力が高い人は、他の人の作った技術を心理的抵抗なく受け入れられる人です。何か問題があった時に普通の人だったら自分でなんとしたいと思うものです。ですが、自分ひとりだけでは限界があります。そのため、他人の作ったものや提案されているものを受け入れる力が必要なのです。

とりあえず試している

新しいプログラミング言語や、新しい技術を文章で学ぶことはできます。ですが、実際に使ったことがある人は細かな仕様だったり、メリットデメリットを肌で感じています。つまり、新しい技術をとりあえず試している人は、なにか問題にあたった時にできる選択肢が多いということとになります。この選択肢の多さがエンジニアとして成長だと思います。

もし知識だけを持っているエンジニアがいたとしたら、新しいことへチャレンジする時にスピード感が鈍ってしまいます。それは、使ったときの具体的な成果物の想像ができないからです。ある技術をつかったら何をどう解決できるかということを身をもってい体感しているエンジニアは強いです。

問題意識を持っている

問題意識とは、世の中の問題であったり、職場でのちょっとした問題だったりいろいろな問題にきづける能力です。世の中の事業というものはほぼなにか問題の解決です。そして、その解決のために技術が使われています。問題も解決策が一つあるわけではなく、いろいろな解決策の中から最も良い解決策を模索していく必要があります。そのため、エンジニアも課題に対してどのような技術が解決に導くのかを模索できる必要があります。

実際に問題意識を持っているエンジニアは、その問題を解決するために技術を覚えます。より大きな範囲を解決している技術を常に探すことになります。もし、問題意識を持っていない場合は、現状から進化しません。はじめに習ったことを自分のできる範囲で使うようなエンジニアになってしまいます。

まとめ

強いエンジニアがチームにいると、業務がどんどん改善していったり、みんなが得をするような仕組みがどんどんと増えていきます。

ただ、エンジニアにも方向性はあります。基礎的な技術をとことん突き詰めて、何かを実装するときの設計力や実装を進める力が強いエンジニアもいれば、ビジネス感覚をもって事業課題を考えつつ技術を使っていくエンジニアもいます。

しかし、共通しているのは今回挙げた要素だと思います。

余談:そんなエンジニアになりたいなと思いつつ、意識や姿勢をつけるのは難しいです。実際に課題解決をしないといけない場面に遭遇したり、とりあえず試してみないと進まない場面に遭遇したりなど、強いエンジニアにならざるを得ない環境に身を置くことが大事です。

リモート開発がはじまって 健康になった話

f:id:tkymx83:20200601010801p:plain

こんにちは、タクという名前でブログをやっています。

皆さん、緊急事態宣言が解除されましたが、未だリモート開発をしていますか?僕はしています。

リモート開発をしていると、出社していたときと違い色々なメリットを享受するできると思います。二番煎じになりますが、今日は僕がメリットに感じることをまとめたいと思います。記事を読んでくれる方に新しい気付きがあればと思い書きたいと思います。

はじめに結論を書いておくと、一番のメリットは「 病院に行く心理的障壁が下がり健康になる」ことだと思います。

リモート開発のメリット

病院に行く心理的障壁が下がり健康になる。

まずは病院との心理的な距離が近くなって健康になったとおもいます。これは自分的にはかなり大きいです。気になった瞬間に行くことができるからです。

いままでは、電車に乗るとどうしても動きづらくなるので仕事モードのときにはどうしても病院に行くのが億劫になっていました。しかし、日常と仕事の境界があいまいになって、「朝ちょっと病院に行ってみようかな」という感じに心理的な障壁は減りました。

仕事に身が入らないのではないか?といった問題もあるかもしれませんが、それは別問題で。。(むしろ、スケジュールが縮まるわけではないので成果物はかわらないとおもいます。)

家族との絆が深まる

仕事をしていると、仕事の責任を果たすことに一生懸命になってしまいます。それはそれで大事なことですが、仕事をする理由は家族を守るためです。少なくとも僕はそうです。

リモートが始まって、毎日ご飯を一緒に食べられるようになりました。今までは帰るのが遅くて一緒に食べられなかったので、もどかしく感じていました。仕事が遅くなるともうしわけなくなります。

家で仕事をする事もできるので、リモート中は常に一緒にいることができます。何かあった時に家族の話題に対応できるので、仕事か家庭を選ぶのか?その選択肢すら曖昧になるとお思いました。

仕事のスタイルを試すことができる。

最後に自分似合った作業スタイルを確立できることです。会社によっては昼寝をできない会社もあるし、寝転がれない会社もあるとおもいます。

しかし、昼寝をすることは効率の面でも良いと科学的に証明されています。この矛盾を家の中では感じずに堂々と昼寝をして、効率よく仕事をできるのが大きなメリットです。

まとめ

リモートのメリットは二番煎じで多くの人が記事にしています。

それでも書こうと思ったのは、「病院に行く心理的障壁が下がり健康になる。」につきます。リモートが始まってから今までに気になっていた、耳、目、歯の不調を全て治すことができました。特に目や耳に関してはたまになる症状だったため、なかなか病院に行くきっかけが見つかりませんでした。

しかし、リモートが始まって症状が出た時に病院に行くことができ、効率よく治療を行うことできました。健康は何にも変えることができません。そのため、健康になったのがリモートの一番のメリットだと思っています。

レベルデザインが 上手い人に共通すること

f:id:tkymx83:20200531005641p:plain

こんにちは、タクという名前でブログをやっています。

ゲームのレベルデザインをしたことはありますか?僕は絶賛苦戦しています。

レベルデザインは誰にでもできる作業ですが、ゲームの面白さを作っていく部分なのでそれ相応の知識と経験が必要です。僕の職場にもレベルデザイン専門の企画はいますが、皆さん経験豊富な方が多いです。

今日は、自分の知識のまとめもふくめて、良いレベルデザインをする人の特徴をまとめて行きたいと思います。

そもそもレベルデザインとは?

レベルデザインはゲームの難易度調整です。マリオで言うなら、マップと敵の設置です。ステージを複数作ることでゲームが完成します。

ゲームの難易度は徐々に難しくなるように設計しないと途中でクリアできずに飽きてしまうため、各ステージがどのレベルの人にクリアしてほしいかを考えて作る必要があります。

ここが、レベルデザインの難しいところです。

レベルデザインが上手い人の特徴

ここで、レベルデザインが上手い人の特徴をまとめていきたいと思います。

狙いがはっきりしている

マップの配置をする時にユーザーにどのように遊んでほしいか、狙いがはっきりしている方が多いです。

例えば、炎で敵を倒せるアイテムを活かしたいステージだったら、近づきにくいという問題があるが炎で攻撃したらすぐに倒せるような敵を配置すると行った形です。

面白いレベルデザインをしっている

これは、おもしろゲームを数多くこなしていて、それぞれどんなところが面白いかを噛み砕いて理解している人に多いです。

例えば、移動速度が早いキャラクターのレベルデザインをする際に、今までの引き出しから面白いステージの構成を引っ張り出してこれるようなプランナーです。

ステージの緩急がしっかりしている

どんなゲームでも常に難しいゲームが面白いかと言われるとそうではありません。単調なゲーム展開はユーザーに飽きを与えてしまいます。

ゲームに飽きるタイミングでボーナスステージを入れるなどの工夫をすることでこれを回避するのですが、そのタイミングが絶妙なプランナーは優秀です。

おわりに

今日はレベルデザインがうまいプランナーについてまとめてみました。まとめて思ったのですが、これらの項目は共通点でもあり、レベルデザインに必要なポイントでもあります。

他にも色々なポイントがあると思いますが、自分なりに知見としてまとめてゲームを作るときの指針にできれば、統一感があって面白いゲームができると思います。

余談ですが、結構経験がものを言う職業だと思います。ロジカルに作ることもできますが、あっと驚くような感動を与える面白さは自分がその面白さを体験した人にしかできないと思います。なのでいっぱいゲームをやって自分が作りたいゲームに合わせて切り貼りできれば更に面白いゲームができると思いました。

何でも質問するのではなく、何でも質問できる人を見つけるべき

f:id:tkymx83:20200528232405p:plain

こんにちは、タクという名前でブログをやっています。
日々の気づきを「一言知見」としてまとめるシリーズはじめました。

仕事をしていると、「わからないことを聞いてね〜」とよく言われると思います。特に新卒のときはその言葉に従って何でも質問すると、「ちょっと自分でも調べてから聞いてね〜」と言われ、どっちなんだよ!と悩むこともしばしばです。

しかし、質問をすることは重要です。というよりも質問できる環境を作ることはとても重要だと思います。何かわからないときに質問ができなければそこで止まります。止まった末に行き着くのは場当たり的で非効率な結果です。例えば、エンジニアでコーディングをしている場合は、場当たり的に書かれたコードは冗長になり、のちのち負債になっていきます。

でも上司に質問しづらいということもあると思います。僕はそんなときは質問がしやすい人を見つけるべきだと思います。質問しやすい人は誰でも良く、知識がない人でも同僚でも良いです。

質問というのは自分の頭の整理でもあります。ただ闇雲に質問するとしても相手に対して自分が何に困っているかを伝えなければいけません。その中で結果にたどり着くこともありますし、思ってもみない考え方を見つける可能性もあります。また、その人がわからなくても他に知っている人につなげてくれることもあります。

要は質問をして結果を得ることだけが良いことなのではなく、質問すること自体が良いことなのです。つまり、無理に上司に質問するのではなく、質問をしやすい人を作るべきだと僕は思っています。

ライフプランを立てることと ものづくりは同じだった話

f:id:tkymx83:20200528002715p:plain

こんにちは、タクという名前でブログをやっています。

あまり年齢については触れていなかったのですが、そろそろアラサーが近いので最近自分のライフプランのシミュレーションを行ってみました。そのとき、ライフプランを立てることと、ものづくりの計画を立てることは似ているなと思ったので、少し書いてみたいと思います。

ライフプランを立ててみて、将来不安だな〜と思ったことがある人は一度読んでいただきたいです。ものづくりに例えることでちょっと不安な気持ちを解消できればと思って書きました。

そもそもライフプランって?

ライフプランとは、人生において、いつ、いくらお金をつかうのかをまとめることだと思ってください。自分で作ることもできるし、ファイナンシャルプランナーの方に頼んで作ってもらうこともできます。

自分で作る場合は、以下のサイトで、簡単にライフプランのミュレーションができるようです。
www.zenginkyo.or.jp

僕の場合は、ファイナンシャルプランナーの無料相談のサービスを利用して作ってもらいました。自分で作るよりもファイナンシャルプランナーの方に作ってもらったほうが時間短縮になるし、細かな設定もしてくれるので便利です。特に教育費や生活費などを細かにヒアリングしてくれて、わからないところは平均値で補ってくれるので便利です。

ファイナンシャルプランナーに頼む場合は今はオンラインでやっているところも多く、以下のようなサイトで登録できます。相談の最後にいろいろな商品をすすめられますが、オンラインならしつこい場合も断りやすいです。
okanenokozuchi.com
fp.moneyforward.com

ライフプランを作るメリット・デメリット

ライフプランをつくると、自分のやりたいことを現実的に考えることができます。例えば、家がほしいとざっくり思っていても今の収入から本当に家を買えるのかはわかりません。ローンをするにしても家を買って毎年趣味の旅行にも行けるのかは不安ですが、シミュレーションをすることで大体の感覚がわかります。

また、思いもしなかった出費を知ることができます。僕の場合は車をほしいと思っていたのですが、車の維持費や車の買い替えについてはあまり考えていませんでした。10年おきに車を買い換えるにしても40年あれば4回車を買い換えることになります。大きな目で見れば出費としては大きいことがわかります。

ただ、シミュレーションにも限界があります。

それは、本当に将来そのとおりになるわけではないということです。今の生活をそのまま続けていくならシミュレーションは簡単ですが、家を買ったり子供ができたり、職業が変わったりすると収入も支出もぜんぜん違うものになってしまいます。夢を見つけて沖縄に引っ越して自給自足の生活する可能性もあります。そうなったときにシミュレーションは全く意味のないものになります。

また、一番デメリットに感じたのは、シミュレーションは平均値や相場で補うこともおおいので、実際よりもちょっと割高になってしまい、場合によっては大きな赤字になってしまうこともあるということです。僕の場合、子供を3人作ると50歳で赤字になってしまいました。シミュレーションだけを信じると子供を3人作れるのか心配になります。

ライフプランはものづくりと一緒だと思った

なぜ、不安を感じるのか?それは、実際の経験をしていないからです。子供ができたときの生活を体験していないので、実際何にいくらかかるかが全くわからないということです。そんななかで、シミュレーションをしても、実際よりも多めに見積もってしまいます。そして、現実とはかけ離れた結果をみて不安になってしまいます。

話は変わりますが、ものづくりでも計画をするときは、不明確な部分を考慮して計画を立てていきます。今回、ものづくりとはゲームづくりのことを想像しています。初めて実装する場合は、どれくらい工数がかかるかわかりません。そのため、はじめはざっくりとプロトタイプやαやβの時期だけをきめて、あとは、ある程度作ってから次の設計を行っていきます。

ライフプランでもこれと同じだと感じました。細かく計画しても実際に生活を始めると計画通りにうまく行かないこともあります。そのため、大きなイベントとその時期だけをざっくりと決めて、それまでは毎日できることを行う。そして、1年ごとに今の現状から次の1年の計画を立てるくらいのほうが現実的だし、気持ち的にも楽だと思います。

何があるかわならない将来を不安に思いながら日々を過ごすよりも、今明確な部分を堅実に実行していったほうが先もわかるし、気持ち的にも楽だということです。

最後に

ライフプランを立てることは、いろいろな気付きになるのでとても良いと思います。ですが、あまりに決めすぎると不安な気持ちも大きくなります。

そのため、ものづくりと一緒で、ざっくりとした目標をきめるためにライフプランを使い、その目標に向かって日々できることを行っていくのが良いと思います。そして、ある程度生活したら、今の生活が目標に向かっているかを確認し今後の計画を調節していくのが良いと思いました。

僕の場合は日々の節約をしつつ、ゲームをリリースする目標にむかってゲームを作り続けていくしかないと思いあす。あだできていないゲームが面白いかを嘆くよりも、今面白いと思う仕組みを作っていくということですね。(不安な気持ちは拭えないが。。。)

基本情報処理技術者試験を3回落ちた話

f:id:tkymx83:20200526233624p:plain

こんにちは、タクという名前でブログをやっています。

ネットサーフィンしていたら、基本情報処理技術者試験が話題になっていました。

anond.hatelabo.jp

僕自身も、実は高校生の時に基本情報処理技術者試験を3回受けて、合格した経験があるので色々思い出していました。今日は、情報処理技術者試験を3回受けたときのことを振り返って、どんな勉強をしたのか、なんで受からなかったのかを書いてみたいと思います。

基本情報処理技術者試験を3回受けた話

はじめは何も考えずに受験

僕が試験を受けようと思ったきっかけは、学校の支援制度があったからだと記憶しています。たしか、受験するといくらか受験料が返ってくるといった制度で、この機会だからと受けてみました。また、当時はまだまだ資格を持っている人が強い時代だったので国家資格は持っていて損はないなと思って受けました。

ここで僕は失敗をやらかします。まず僕が試験を受けるにあたって、ネットでの検索をしてみました。そしたら、いろいろな記事で、基本情報処理技術者試験は簡単だから勉強しなくてもいいといった内容の記載がされていました。僕は、これを鵜呑みにして、そんなに勉強をしなくていいのかと勘違いしていました。

実際そのおかげで一回目の試験は惨敗です。合格点の半分ぐらいの点数だったと思います。やった勉強もテキストを買ってきて、サラッと読んでノートにまとめていただけでした。ここで痛い目をみたので、2回目は頑張ろうと意気込んだのを覚えています。

二回目は勉強して受けたけど、1点足りなかった

試験にはお金がかかるのもあり、流石に1回目の結果から反省して、2回目は勉強の工夫を行いました。まず1回目の結果から以下のうような反省をしました。

  • 知識を覚えるだけでは応用的な問題を解くことはできない。
  • 試験には、特有の問題の形があり、その形式に対応できていなかった。

応用的な問題というのは、計算問題や、違うものを選ぶような問題です。これは、基本情報処理技術者試験特有の問題とも関わってくるものです。僕の勉強法では、単語の意味そのものは覚えられても、その単語とそれ以外のものを比較して覚えることはできませんでした。

この課題を解決するために僕が行ったのは過去問を使った学習です。過去問を使った学習というと、一通り問いて、間違った部分を復習すると言った勉強法が普通かと思います。僕が行ったのは過去問の一つ一つの選択肢についてなぜこの選択肢ではないのかを覚えることを行いました。

基本情報処理技術者試験では、先程も述べたとおり、「当てはまらないものを選びなさい」といった問題がよく出題されます。この形式の問題は、その単語の知識があるだけでは似たような選択肢でどちらを選択するか間違ってしまいます。なので、その単語と近い別の単語との意味の違いで覚える必要があるのです。

このように、2回目は過去問を使って勉強したのですが結果は、なんとあと1点で合格でした。このときはちゃんと勉強をしていったのでかなり悔しかったのを覚えています。

3回目は過去問を主に勉強してクリア

3回目は2回目で解説した、過去問を使った勉強法を10年分行って挑んだので難なく合格できました。
はじめから、過去問を使って勉強していれば。と、いうより、ネットを見て変な知識をつけて受験していなければよかったなと思います。

基本情報処理技術者試験を受けて思ったこと

僕は3回受けてやっと合格しました。そこまでして受ける必要があったのかといわれると、わからないですが、少なくとも高校生時代のIT知識がないときに受けたのは将来に対して意味があることだと思いました。

理由としてはまず、幅広い知識に触れられたことです。当時はパソコンの仕組みはある程度知っていましたが、論理演算でPCが動いていることやインターネットが7層にわかれていて、それぞれプロトコルが決まっていることなど基礎ではあるが勉強しないとわからないことをがわかっていませんでした。そのような基礎知識を網羅的に勉強できたとおもいます。実際、インターネットを使ったプログラムを作ろうとしたときに、使用するAPIが具体的にどんな動きをしているか想像できたので役立っていると思います。

もう1つは、勉強をする過程で技術を比較する能力がついたことです。IT技術というのは、いろいろな技術の積み重ねで成長してきています。ある技術よりも少し良い技術が生まれその連鎖で成長しているということです。そのため、似たようなちょっと良い技術が乱立しています。技術者はそのなかで自分たちが使用するべき技術を選択するのですが、そのときに技術の比較が必要になります。試験勉強ではいろいろな単語がそれ以外の単語とどんな違いがあるかを覚える必要があったので役になっていると思います。

基本情報処理技術者試験について、色々言われていますが、個人的には知識に関してもそれを覚える過程に関しても学べる部分は多いと思います。なので、IT初心者が今後の技術力をつけていく上でのベース作りには良いと感じました。