むち打ちエンジニアおじさんのブログ

未来技術に関する調査記事を書きます。

【ほぼ資料のみ】IT業界俯瞰してみたー

IT業界の俯瞰したスライドを仕入れたので公開しようと思います。結構わかりやすく整理されているなーといった印象。参考までにどうぞ。

 

 

f:id:rinAtoZ:20170405001623p:plain

僕が属しているのは、左下BtoBです。受託開発ではなく、パッケージ開発です。

f:id:rinAtoZ:20170405001628p:plain

適当に挿入したけど、何ぞこのスライド笑 何が言いたいんやら笑

f:id:rinAtoZ:20170405001634p:plain

この図からすると実際に開発を行うのは4次請まで下がるのかー。そして、人月単価はMAX90万円。これが売上になるので4次請の会社の20代のMAXでの月収は30万くらいになります。

f:id:rinAtoZ:20170405001642p:plain

BtoCのWEBサービスのビジネスモデルです。広告モデルは事業規模が大きい会社が存続しているイメージ。課金系、仲介系のビジネスモデルはベンチャーでも比較的始めやすいイメージがあります。

f:id:rinAtoZ:20170405001647p:plain

僕はBtoBのパッケージ開発、webエンジニアでこのグルーピングに該当するのかな。

f:id:rinAtoZ:20170405001652p:plain

ウォーターフォール経験したこと無いからわかんねえww 僕のプロジェクトはアジャイルかな(いちよう)

f:id:rinAtoZ:20170405001656p:plain

このくくりだと、受託開発がSEの仕事なのかー。受託開発じゃ無いから、俺はPGなのか??

f:id:rinAtoZ:20170405001702p:plain

こういった遷移でITアーキテクチャが変化したのか。初めて知りました。。。。

f:id:rinAtoZ:20170405001708p:plain

ちょっと技術系の話に偏ってきたww マシン依存系のOSに携わったこと無いから汎用機系はイメージできないなあ。そもそもマシン依存系のOSって何で依存する設計になるの????

f:id:rinAtoZ:20170405001712p:plain

ライセンスってつえーーーーーー。そりゃ世界的な企業になりますわ。IBMの請負から脱却してOSをライセンス販売してなかったらこれだけの世界的な企業にならなかったのだろうなー。

f:id:rinAtoZ:20170405001716p:plain

ここが僕の一番の苦手分野です。。。SQL難しいなあ。。。

f:id:rinAtoZ:20170405001724p:plain

おおお、勉強になります!!!

f:id:rinAtoZ:20170405001723p:plain

業務ではスクリプト言語しか触ってないから、javaとかも触ってみたいなー。

 

以上、IT業界?(結構込み入った技術系のスライドもあったけど)の俯瞰したスライドの紹介でした。

フロントエンドの処理は軽くしちゃいなぁ

フロントエンドの処理は軽くしちゃいなぁ

 

最近はフロント側での処理に凝りすぎて、サーバーサイドに盲目になっていたのでメモ。

 

そもそもwebアプリケーションにおいて、レスポンス速度は本当に大切。そんな事も忘れてjsで複雑な処理を書いて満足していた。サーバーサイドでも出来るような事をも。

今日実感したのは、

 

サーバーサイドで出来ることはぜんぶそっちでしちゃって、フロントエンドでは最小の処理で済ませるべき。

 

改めて書いて見ると当たり前だし、恥ずかしくなるけどjsに夢中になり過ぎてこんな事も忘れてた。今では1つ1つの処理を引数に変数をおいてajax通信してたけど、この引数が確定してる事からそれらを配列に格納して引数として渡し、通信を一回きりに抑える。

たまには、codeigniterに夢中になってみるのも良いのでは??

 

あ、それと最近はコーディングの速度を上げるように意識してる。コードの行数で測るのはどうかとも思うが、1番定量的に見れそうなのでメモしておく。

 

12/19 327行

12/22 289行

12/23 380行

 

まぁ、会議とか話し合いとかあるし、改修作業なので書いた分減らしてるからこの程度かな、と。何よりも迷わず、バグも無しに書けるようになりたいなぁ。

 

意識している事としては、

  • 集中力
  • タイピング速度の向上
  • コーディング前にロジックを整理する

 

他にアドバイス等あればお願いします。

 

以上です。

 

 

今日の良記事まとめ

qiita.com

javascriptのthisの概念を簡単に4種類に分けてくれた。読んだけど、半分くらいしか理解できなかった。。 

qiita.com

やっぱりもともとの概念理解しないとコード書けない。クラスベースとプロトタイプベースの違いを勉強しなければ、、、。

 

即時関数のメリットと主な用途|もっこりJavaScript|ANALOGIC(アナロジック)

これは本当にそう。しっかりとメリットを理解して使い分けないと!まあ、javascriptみたいにスコープ定義が曖昧だからこそのコードだけども。

 

VScodeをまだうまく活用できていなかったので、、、。英語の説明書読みますか。。

 

qiita.com

グローバル変数減らそうと思ってクロージャーに書き換えようとしたけど、いたるところに散らばりすぎて結局断念。うまい方法ないのかね、、const,letも使えないし、、。

 

developer.mozilla.org

これは良記事!しっかり読み込みまする!

 

以上。

土日はNode.jsにでも挑戦しようかな!

javascript脱初心者を図るための記事一覧

chuckwebtips.hatenablog.com

これによると僕は完全に初心者でした。。。

 クロージャーやアロー関数の勉強になった。スライドだから凄いわかりやすい!

qiita.com

 禁止事項とかが書いてあってわかりやすい。なぜ禁止されてるのか、等の理由があればなお良かった。

 

何にせよ、jsは最近本格的に勉強し始めたばっかりだしわかんない事だらけ。関数式と関数宣言、クロージャーとかアロー関数の上手い使い分けも出来てない状況。スコープの範囲もあまり見れていないし。(最近になってやっとconstの定数定義をつかうようになった笑)

 

引き続き勉強続けます!

煩雑化したコードを整理してみる

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等試してみた)。

bitcoin.org

https://www.ubereats.com/tokyo/

www.airbnb.jp

情報収集はqiitaとかブログとかまとめサイトとかです。ごく在り来たりなものばかりですが、以下に示しておきます。

qiita.com

gigazine.net

newspicks.com

itpro.nikkeibp.co.jp

また情報をinputするだけでは意味がないと僕は思っています。仕事に通じるように持っていく、例えば実際使用してみたフレームワーク等をプロジェクトに導入してみるとか、ブログやLTで発表してメンバの意識や知識の底上げを図るとか。。。。outputに使用しているツールは以下に示します。※これを実践してエンジニアレベル B

やっと東京でも飯を食っていけるようになれるはず、、。

rinatozz.hatenablog.com

www.slideshare.net

 

ド文系新卒エンジニアが考えるキャリア論【前半】終了

 

 

*1:エンジニアレベル C<B<A<S

むち打ちエンジニおじさんの週末

f:id:rinAtoZ:20170109220523j:plain

『アイ ハブ ア 花』

 

『アイ ハブ ア 団子』

 

『んっっ! 花より団子』

 

『アイ ハブ ア 信長』

 

『アイ ハブ ア 協奏曲』

 

『んっっ! 信長協奏曲(のぶながこんちぇると)』

 

花より男子〜』

 

信長協奏曲(のぶながこんちぇると)〜

 

『んっっ!』

 

『ポイっ』

『まーきのっ』

f:id:rinAtoZ:20170109221029j:plain

 

最近、はまっています。お笑い芸人・おばたのお兄さん。

今回の記事は3部構成です。

  1. 遊戯王(アプリ)をシステムの面から考察してみる。
  2. 怒らない技術という本を読んでみた感想。
  3. rasberry PiでLチカやってみた。

遊戯王(アプリ)をシステムの面から考察してみる。 

最近こんなアプリが出ました。

 初代遊戯王のゲームです。僕が小学生の頃に始まった大人気カードーゲームです。今回はこのゲームをむち打ちエンジニアおじさんの視点(IT)から考察していきたいと思います。このアプリの大きな特徴は以下のようになっています。

  1. 課金ゲーである。
  2. アプリサイズは100M以内に抑えられている。
  3. 通信が発生する。(多分httpのみ)
  4. 大量のユーザーが集中的にアクセスする可能性がある。

まず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千万円になります。ここから初期開発、繰延資産の必要経費や宣伝費、営業費等が上乗せされます。

結構かかりますね、、。赤字覚悟でしょう、、。

まあ、パズドラのようにヒットすればぼろ儲けでしょう。なんせアプリケーションなので原価はほとんどかかりません。以上、アプリ遊戯王の考察でした。

 

■怒らない技術という本を読んでみた感想。

コンビニでこんな本を見つけたので思わず買ってしまいました。

www.amazon.co.jp

仕事、プライベートで感情的になることが最近多く感じていたので、試しに読んでみました。漫画でわかりやすく解説しているので、スラスラ読めました。一言でようやくすると、「感情的になってもいいことないよ、感情をコントロールして仕事をうまくやっていこ!」でした。。いや、当たり前だけど常に実行できていないので自分を俯瞰するのにはちょうど良い本でした。まあ、感情をコントロールしすぎて「本心は何??」って言われそうですけど。。。

 

■rasberry PiでLチカやってみた。

raspberry pi3を購入したので、早速電子工作をやってみました。

www.raspberrypi.org

初めての電子工作だったので難易度の低い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/

 

長くなりましたが、以上です。また書きます。