煩雑化したコードを整理してみる
JavaScript の煩雑化したコードを整理する手段をまとめてみた。
現在はjQueryで直接DOM操作を行なっている。ロジックが複雑化するほど、1つの関数内の記述が長くなったり、変数が多くなる。その頃にはもう、頭の中がぐちゃぐちゃになってしまう。ここでは、新卒エンジニアがその煩雑化したコードを整理するために実践している事を書いていく。
・紙に書く
とにかく何でも良いから紙に書いてみる。不思議と考えがまとまって何をすれば良いのか分かってくるようになった。ちなみに僕は4日に一冊のペースでノートを消費している。
・コーディングする前にロジックを日本語で書く
これも有効な手段だと思う。特に僕はコーディング力ゼロだし、書く前に日本語でロジックを整理しないと思考が停止してしまう。例えば、あるボタンを押した時の制御は以下のようになる。
ボタンを押す
↓
選択された店舗を変数に格納する
↓
その配列を回して店舗の種類の一致判定を行う
↓
一致していなければエラーメッセージを格納する
↓
格納されたエラーメッセージを表示する
↓
処理を抜ける
・コードを短くする
時間の余裕があればこれもやるべきだと思う。ここで言うコードを短くするとは、余分な変数を使用しない、関数の再利用性を高める、繰り返し文は纏める等ということ。特に関数の再利用を図ることはコードを簡略化する有効な手段で、僕が書いたコードを見返す度に簡略化できる箇所が見つかる。何度も考えが変わりながら書いてきたコードはそんなもので、修正が非常に大変だ。なので可能であれば機能を画面ベースまで落とせる設計をしてから実装に移るのが望ましい。
以上。
ド文系新卒エンジニアが考えるキャリア論【前半】
ド文系新卒エンジニアが考えるキャリア論
今回の記事では、ド文系の新卒エンジニア(僕)のこれからのキャリアに関してと、そのために意識している事を書こうと思います。
ちなみに、技術力、文章力は非常に低レベルなので寛大な心を持っている方のみ以下を読み進めていってください。あと偉そうに書いていますが、ご了承ください。もし誤字脱字、間違った事を言っていたらお気軽にご指摘してください。
今僕はwebアプリケーションエンジニアとして社会人一年目のキャリアを過ごしています。今後数年システムエンジニアとしてキャリアを積んでいくわけですが、どうやったら価値のあるエンジニアになれるのか、自分の考えを書いていこうと思います。ちなみにここでは、何を実践するとどのランクのエンジニアになれるか勝手な想像で書いています。ランクはC〜Sまで4段階で分けています。*1
※ここでのランク分けは独断と偏見で決めています。まあ年収で図ると価値判断が分かり易いのかなと思ったので、C(~500万)、B(500~700万)、A(700万~1000万)、S(1000万~)と分けました。
まずは、エンジニアとしてモノの仕組みを理解する必要があります。ここでのモノの仕組みとは、例えばPCってどうやって動いてるの、インターネットってどういう仕組みで繋がっているのとかです。そして、今の僕にとってはそれがシステムにあたります。
1、システムがどのように動いているか理解する
会社ではwebアプリケーションエンジニアとしてがっつりコーディングをしています。そこで気をつけていることが、そのアプリが動いている仕組みを理解しようとすることです。日々の業務を何の疑問を持たずにこなすのではなく、例えば僕はPHPのデバックにxDebugという拡張モジュールを使用しているのですが、その中でも一つ掘り下げて「このデバッガってどうやって動いているんだろ?」と疑問を持ち、調べ理解することが大切だと考えています。フレームワークやライブラリが変われど、大きな仕組みは変わらないはず、と思っています。それこそ、毎日のように、googleで「○○○ とは」で調べたり、画像検索で図解してるものを探してノートに書き写したりしています。あとは、ブログ書いたり、実際に自宅でサーバー立てたりネットワーク構築したりですね、、。多分これを実践し続ける事で並弱のエンジニアにはなれるような気がします。
(※これを実践してエンジニアレベル C)
2、情報のキャッチアップは素早くinput&output
次に、何よりも新しいサービス、ニュースなどはできる限り早くキャッチアップしようと心がけています。可能ならば実際使ってみます。最近興味を持って勉強として始めたものは、ビットコイン(仮想通貨)の運用やrasberryPi3でのセンサー系の電子工作等(少し前だとUberEats、かなり前だとAirbnb等試してみた)。
https://www.ubereats.com/tokyo/
情報収集はqiitaとかブログとかまとめサイトとかです。ごく在り来たりなものばかりですが、以下に示しておきます。
また情報をinputするだけでは意味がないと僕は思っています。仕事に通じるように持っていく、例えば実際使用してみたフレームワーク等をプロジェクトに導入してみるとか、ブログやLTで発表してメンバの意識や知識の底上げを図るとか。。。。outputに使用しているツールは以下に示します。(※これを実践してエンジニアレベル B)
やっと東京でも飯を食っていけるようになれるはず、、。
ド文系新卒エンジニアが考えるキャリア論【前半】終了
*1:エンジニアレベル C<B<A<S
むち打ちエンジニおじさんの週末
『アイ ハブ ア 花』
『アイ ハブ ア 団子』
『んっっ! 花より団子』
『アイ ハブ ア 信長』
『アイ ハブ ア 協奏曲』
『んっっ! 信長協奏曲(のぶながこんちぇると)』
『花より男子〜』
『信長協奏曲(のぶながこんちぇると)〜』
『んっっ!』
『ポイっ』
『まーきのっ』
最近、はまっています。お笑い芸人・おばたのお兄さん。
今回の記事は3部構成です。
- 遊戯王(アプリ)をシステムの面から考察してみる。
- 怒らない技術という本を読んでみた感想。
- rasberry PiでLチカやってみた。
■遊戯王(アプリ)をシステムの面から考察してみる。
最近こんなアプリが出ました。
初代遊戯王のゲームです。僕が小学生の頃に始まった大人気カードーゲームです。今回はこのゲームをむち打ちエンジニアおじさんの視点(IT)から考察していきたいと思います。このアプリの大きな特徴は以下のようになっています。
- 課金ゲーである。
- アプリサイズは100M以内に抑えられている。
- 通信が発生する。(多分httpのみ)
- 大量のユーザーが集中的にアクセスする可能性がある。
まず1つ目課金ゲーです。僕は昨日と今日で6700円課金しました。すごいですね、課金ゲーを考え出した人。ps4のソフトが1本買えちゃいます。こんな記事がありました。参考程度に、非ITですが、、。
次に、2です。このアプリはアプリサイズが100M以内に抑えられています。これはwi-fi接続なしでもiOSアプリをダウンロードできるようにしている工夫です。また初回バトル後にリソースをダウンロードさせています。これも比較的軽かった印象です。まあ、実際遊んでみたところアニメーションは比較的少なめでした。バトルに集中できるのでそちらの方がいいかなあ。
3です。当たり前ですが、通信が発生しています(プレー中にも)。ここでは多分httpの通信が行われています。遊戯王のアプリがインストールされているiPhone(クライアント)から、外部サーバーにリクエストが投げられてそのリクエストによって様々なレスポンスデータが返ってきます。これはwebページを見るのと同じ仕組みで、そこではリクエストがURLになり、レスポンスが表示されているデータになります。遊戯王にはフレンド同士の通信対戦機能があるが、ここにはリアルタイム通信という機能が使用されています。仕組みは、webページを見るのと同じでサーバ/クライアント型になっています。全通信端末がクライアントとなり、ネット上にある専用のサーバに接続して通信を行っています。
そして、最後に4です。大量のユーザーが一度にアクセスする可能性があります。故に、大規模なサーバー構成で対処しなければなりません。一つのサーバーに対し許容数以上のアクセスをさせない為に、サーバーを複数台用意してロードバランサーで処理を割り振らなければなりません。また、サーバーが故障してもデータを失わせない為にRAID構成で情報を分散させます。この規模のシステム構成だと運用費で月500万円以上かかります。初期開発費は5000万~1億円くらいでしょう。プロジェクト自体は4、50人程度、クライアントサイド、サーバーサイド、グラフィック、インフラの担当に分かれます。宣伝費は500~3000万円かかると言われているそうです。以上の仮定の上での年間のシステム維持費は500万*12+50人*100万(人件費)*12=6億6千万円になります。ここから初期開発、繰延資産の必要経費や宣伝費、営業費等が上乗せされます。
結構かかりますね、、。赤字覚悟でしょう、、。
まあ、パズドラのようにヒットすればぼろ儲けでしょう。なんせアプリケーションなので原価はほとんどかかりません。以上、アプリ遊戯王の考察でした。
■怒らない技術という本を読んでみた感想。
コンビニでこんな本を見つけたので思わず買ってしまいました。
仕事、プライベートで感情的になることが最近多く感じていたので、試しに読んでみました。漫画でわかりやすく解説しているので、スラスラ読めました。一言でようやくすると、「感情的になってもいいことないよ、感情をコントロールして仕事をうまくやっていこ!」でした。。いや、当たり前だけど常に実行できていないので自分を俯瞰するのにはちょうど良い本でした。まあ、感情をコントロールしすぎて「本心は何??」って言われそうですけど。。。
■rasberry PiでLチカやってみた。
raspberry pi3を購入したので、早速電子工作をやってみました。
初めての電子工作だったので難易度の低いLEDランプを制御して点灯させてみました。raspberry piのGPIOピンとLEDをブレッドボードにさした抵抗器とシャンパンワイヤーでつないでみました。制御プログラムは赤LEDの電源ON→0.1s待機→赤LEDの電源OFF→0.1s待機→白LEDの電源ON→0.1s待機→白LEDの電源OFF→0.1s待機を100回ループさせるといった簡単なロジックをscratchのGUIで組みました。以下に動画で載せています。
https://www.instagram.com/p/BO891qlBR4j2KIK7mLEIBY5Qu6UA39V8E5GFMw0/
長くなりましたが、以上です。また書きます。
むち打ちエンジニアおじさんビットコインに泣く。
えー、ビットコイン大暴落です。笑 まあ、勉強のための少額投資でレバレッジも効かせてないため大きな損失ではありません。(まだ売りにも出してないから損失とも言えないけど)
昨日の夜から朝にかけて、ビットコインの価格はうなぎ登りに上昇してました。初の15万円台を突破したそうで、、。
そんな矢先の大暴落です。
巷で騒がれているビットコインですが、それを支えてる技術がエンジニアの中でどうも注目を浴びてるようです。ブロックチェーンという技術。どうやら調べてみると、ネットワークに台帳を分散させて信頼を担保する技術の事だそう。。。(あんまりわかんね。)
いままでは、例えば銀行の口座情報はガチガチのセキュリティで固められたデータセンターのデータベースの中に格納され、守られてきた。これを中央集権管理といい、この存在が信頼を担保していた。逆の言い方をすると、この存在が危うくなれば(例えば、まずあり得ないが不正アクセスを受けてデータを書き換えられたりする)、信頼は消失する。
そのような仕組みを抜本的に変えるのがブロックチェーンで、この仕組みは情報を中央に集めず分散させる。その分散させた台帳はどこからでも参照可能になっていて、書換える事も出来るそう。ただし、不正に書き換えられた台帳は分散させられたその他の台帳と比較され不正に書き換えられた事を検知、修正できる。このブロックチェーンの仕組みをハックするには、同時に全世界のネットワークが停止する必要があり、そんな事は不可能とされているので、理論的に完全なセキュリティを誇ると言われている。
はぁ、疲れた。。これが僕が理解出来ている限りのブロックチェーンの仕組みです。
ビットコイン難しい。。頑張って勉強します、、、。次回ビットコインを取り上げる時までには、マイニングや、分散型台帳(ファイルサーバー等)の説明が出来る状態でいたいと思います。。
どーんっ!むち打ちエンジニアおじさんの2017年にやりたいこと!
今週のお題「2017年にやりたいこと」
明けましておめでとうございます。
皆さんは良い年始をお過ごしですか?僕は30日から昨日まで実家がある神戸に帰っていました。湊川神社に参拝した際に、去年が本厄であることが判明し妙に納得してしまいました。そんな苦労、苦悩があった去年でした。
さて、今年は後厄ということで健康面に注意をしなければならないようです。すでにディズニーランドでむち打ちになっておりますので、これが悪化しなければ良いのですが。。。
今回は新たな年明けとともに僕の2017年度の目標を書いていこうと思います。(やってみたいこと、挑戦してみたいことですね。)
・ブロックチェーンの理解を深めたいので、ビットコインを運用してみる。
年末からビットコインは急上昇ですね。そのビットコインを支えるブッロクチェーンはインターネットと並ぶくらいの発明だとされています。今後中央集権が不明確になる中で、確かな信頼に繋がる仕組みになりそうなのか、気になります。
・webサイトの構築・運用
これはマストでやらなければならないと実感しています。やはり会社でできるコーディング、テスト、設計等はどれも規模が比較的大きくwebの仕組みをマクロで捉えることは難しいです。実際に一人でwebサイトを構築・運用することで環境周りから開発、運用まで幅広く知ることができるのかな、と思います。何かwebサイトを作って欲しい方がいらっしゃればご連絡、又はコメントよろしくお願いします。
・財務諸表、決算書(PL、BS)くらいは読めるようなビジネスパーソンになる。
当たり前ですよね。newspicksを読んで経済を分かったような気になっていました(笑)レベル感としてはこの人の記事を違和感なく読めるくらいにしたいと思っています。決算が読めるようになるノート (shibataism)|note
・rasberry Piで電子工作してみる。
流行りのIoTの第一歩かな、と考えています。どうも朝が苦手なもので、目覚まし時計でも作ってみようかなと思います。これならオフラインでできるので。。時間に余裕があれば、目覚ましが鳴ると共にベットが起き上がり強制的に起こしてくれる。そんなものでも作れたらいいなあ。。
・社外で友達を作る。
本当に作りたい。。若手で最新の技術に興味があって実際作ってる、作ってみたいと思うようなプライベートで時間を割いてくれるような人募集中です。連絡待っています!
以上、むち打ちエンジニアおじさんの2017年にやりたいことでした。