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

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

【ほぼ資料のみ】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行

 

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

 

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

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

 

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

 

以上です。

 

 

『来週の部会で新人のプレゼンあるから、、』

今日上司から、『来週の部会で新人のプレゼンあるから、それが新人賞の一次先行になるよ』と。

唐突でびっくりした。僕の会社には、その年一番の新人を表彰する文化がありそれが新人賞というものだ。もちろんそれを目指して1年頑張ってきた。最近は意識せず、ただ目の前の目標や業務だけを追いかけていた。だから今日唐突に新人賞のプレゼンを知らされて驚いた。

 

流石に新人の中で自分の立ち位置くらい、わかる。僕が感じているレベルとしてはまぁ、真ん中くらい。資格も人より多く取ってるわけでも無ければ、これといった成果も残せていない、と思う。

今日上司からプレゼンのことを告げられた時、悟った。

 

新人賞とれないだろう、と。

 

そして少し悲しくなった。別に勉学をさぼっていた訳でもないし、むしろ他より勉強した方だと思う。電車の移動中は本やブログを読んで勉強し、業務も遅くまで残って取り組んだ。休日の2日に1日はサーバーを立てたり、プログラムを動かしてみたりしていた。

それでも同期との差はそこまで縮めることが出来なかった。

 

志半ばで退職した同期で、親友が僕には1人いる。そいつに言った事が頭の中に過ぎる。

 

『新人賞取れんかったら会社辞めるよ。』

 

やっぱり才能無かったのかな、、、。

そう思ってしまうと辛いから、少しでも自分の事を慰めることにする。

まず、レベルたけーよ。同期と言っても4年、6年プログラム書いてた理系にそんな簡単に追いつけるわけない。むしろ、そいつらのレベルまで近付いた事を褒めて欲しいくらい。まぁ、実力主義の社会でそんな事言ってられんけれど。

次に、僕だって一定の成長と成果残した。新人賞を取るという意味では運は悪かった。3ヶ月やってきたiOSの開発は頓挫して無くなったし、その後未経験のWEB開発にうつった。慣れるだけで時間かかるのに、直ぐに成果なんて出せないわ。そんな中でも、もう2つの機能は実装できた。しかも今では、チーム内で一番ロジックが複雑な機能の開発をしてる。実装スピードもチームのメンバーにだんだんと追いついてきた。スピード感でいうと、メンバーの0.8倍くらいだ。システムの構成も理解してるし、派遣社員さんの質問にも難なく答える事はできる。スキルはこの3ヶ月相当に伸びた。伸び代でいうと同期の中でもトップレベルだと思う。

最後に、好きには敵わない、とほんとに思う。周りの同期と比べて思うのが、コーディングが、システムのアーキテクチャを考えるのが大好きで、僕はそこまで好きではないという事だ。やっぱり好きなものには勝てないと、今になって思った。

 

この半年の学びを纏めようと思う。

・モバイルアプリのUI設計をした。

・基本、詳細設計を作成した。

iOSで一機能開発した。(swift)

・小売業界の知識に詳しくなった。

・バーチャルマシンの構築、開発機環境の移行を行えるようになった。

・機能から逆算してDBを設計できるようになった。

・GITでのバージョン管理を行えるようになった。

JavaScriptPHP環境でWeb側の2機能を作成した。

・スコープを意識して、クロージャーや即時関数等使えるようになった。

jQuery,その他ライブラリを用いて開発を行えるようになった。

・同期、非同期の違いを理解して、機能を設計する事が出来るようになった。

・同じ処理を1つに纏めたりしてコードの軽量化を考えれるようになった。

DHCPFTP等サーバーの役割を理解出来るようになった。

・まじ、わんちゃん等の非ビジネス用語を使用しないようになった。

・決算書を大枠で読めるようになった。

基本情報技術者資格を取得した。

・自宅でLAN環境を構築して、raspberrypi でwebサーバーを立てて、簡単なアプリケーションを動かした。

phpフレームワーク、codeigniter を使えるようになった。

・ライブラリーとフレームワークの違いを説明出来るようになった。

・最近のフロントエンドの流行り(リアクト、アンギュラーとか)を知っている。

・シェルコマンドを叩いて簡単なネットワークの設定等できるようになった。

 

 

 

配属されて7ヶ月。僕の成長はこんなもんか、、と思う。来週から新人賞プレゼンが始まる。不安、憂鬱になっても仕方がないので今日も仕事をする。

 

以上です。

 

今日の良記事まとめ

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