未経験からエンジニアになるには?(34才からエンジニアになったケース)

はじめに

この記事は ジーズアカデミー Advent Calendar 2018 の25日目です。

ジーズPro1期卒業生のやまもとです! ( 去年もジーズのアドベントカレンダー書きました )

今までこのブログは日々、気づいた技術的な内容(些細ですが、自分の頭の整理のため) を書き留めてました。

が、ジーズ在校生の方から 未経験からエンジニアになるには? という質問をよく受けるので、自分が簡単にエンジニアになった経緯、エンジニアになるためにするべきことを書こうと思います。

経歴

元々は製鉄会社に勤めていた

経済学の大学院を卒業し、鉄鋼メーカー(JFEスチール)というところで 6年ほど勤務した後、退職。ジーズに入りました。

退職した理由はいろいろとあるのですが、もっと小さな組織で働くことに興味があったり、大学院へ戻りたいなーと漠然と考えて退職いたしました!

ジーズに入った経緯

一言で言うとジーズの人の熱気に押されてといったところでしょうか。 さらに(2016年4月から)新しくエンジニア転職を前提としたコースが刺激的で面白そうだったので勢いで入学しました。

エンジニアになった経緯〜現在

エンジニアになった経緯

今のジーズの全日コース(Lab)と違い、当時の全日コース(Proと呼ばれていた) はjavascriptPHP学習後から卒業制作まではスケジュール的に余裕があったので何気なく、求人サイトからエンジニア(データ分析系)の応募をしたところ、運良くエンジニアとして採用されることが出来ました。

現在

スタートアップかつFintechの会社でエンジニアをやっています。 エンジニアとしては3年目なのでまだまだ若手です(年はベテランですが爆)

未経験がエンジニアとして就職するには?

で。本題となります。

IT未経験の方の履歴書は参考程度です。

まずはエンジニアとしてどのレベルなのか面接官にわかってもらうことに注力すべきです。

具体的には以下のことが出来ていれば、なんとかなると思います。

ブログやQiitaの技術記事

内容は自分が勉強した内容(教科書)や、調べたことを書き留める位のレベルでも問題ないと思います。 面接する側からしてもブログがあれば、どういった趣向か、技術レベルかなどなどわかることができます。

重要なこと は継続的にアウトプットしていくことだと思います。(継続的にアウトプット出来る人は非常に少ない!)

サービスやライブラリ作り

一番手っ取り早く技術が伸びるので、オススメです。 ちなみに今働いてる会社はウェブ系の会社で、転職の際に自分で2本しっかりめのサービスを作っていたことが評価されて入社することが出来ました (それまでに働いていた会社とは分野が違う、かつ経験年数が不足していたので普通に受けてれば落ちてたと思います。)

(余裕があれば)面接へ行ってみる

面接に行くことでマンネリ化を防げること、自分が興味ある技術分野・事業を考える良いきっかけとなります。

もしかしたら、面接受けた会社の人手が少なくて職を得られるかもしれません。

補足 ジーズ卒業前でも、(可能であれば)仕事をしながら、卒業制作した方が外部からの刺激・ノウハウを得られるので、より早く良いサービスが作れると考えてます。

以上となります!

【Python Ruby】組み合わせ

最近、暇な時にアルゴリズムの本( プログラマ脳を鍛える数学パズル) 読んでいます。 その際、順列(組合わせ)のメソッドがあることを知りました。 以下備忘録として書いておきます。

Ruby

RubyではArrayクラスのcombinationメソッドが 使えるようです。

ary = ['1', '2', '3', '4']
# 組み合わせの重複なし:1,2,3,4の中から2つの数字を選ぶ
ary.combination(2).to_a
# 戻り値 [["1", "2"], ["1", "3"], ["1", "4"], ["2", "3"], ["2", "4"], ["3", "4"]]
# 順序の重複なし
ary.permutation(2).to_a
# 戻り値  [["1", "2"], ["1", "3"], ["1", "4"], ["2", "1"], ["2", "3"], ["2", "4"], ["3", "1"], ["3", "2"], ["3", "4"], ["4", "1"], ["4", "2"], ["4", "3"]]

Python

Python では itertoolsモジュールのcombinationsメソッドが 使えるようです。

import itertools
ary = ['1', '2', '3', '4']
combinations = itertools.combinations(ary, 2)
print(list(combinations))
# [('1', '2'), ('1', '3'), ('1', '4'), ('2', '3'), ('2', '4'), ('3', '4')]

permutations = itertools.permutations(ary, 2)
print(list(permutations))
# [('1', '2'), ('1', '3'), ('1', '4'), ('2', '1'), ('2', '3'), ('2', '4'), ('3', '1'), ('3', '2'), ('3', '4'), ('4', '1'), ('4', '2'), ('4', '3')]

参考

permutation (Array) - Rubyリファレンス

10.1. itertools — 効率的なループ実行のためのイテレータ生成関数 — Python 3.6.5 ドキュメント

docker image 全削除

はじめに

dockerでいらないimageが最近、増えてきた。 一括で削除する際、dockerに良いコマンドないかな〜と思って調べてみた。

コマンド

一番お手軽なのは、docker image一覧を出力して、xargsで出力した結果をdocker削除コマンドに引数に渡して削除すれば良い。

# docker images [options] : -a all-file , -q image IDのみ出力
# docker rmi: イメージ削除
$ docker images -aq | xargs docker rmi -f

【Swift】Segueを使わない画面遷移

はじめに

Swiftでiosアプリ開発を勉強しているのですが、 Segueを使わないで画面遷移する方法を勉強したのでメモします。

初期設定

xcode version

今回は ver10を用いました。

ファイル構成

f:id:jesushill:20181021161629p:plain

上記の写真のように以下のようなフォルダ構成にします。

  • StoryBoard

    • Initial
    • Next
  • Contoroller

    • InitialViewController
    • NextViewController

それぞれの名前に対応したStoryBoardとControllerが対応する形としています。 (例えば、InitialViewControllerなら StoryBoardのInialに対応)

Info.plistの設定

通常、Single View appなど、Xcodeで新規プロジェクト作成をした場合、 エントリーポイントが初期設定 Main になるので、下記のキャプチャにある通り、 Main storyboard file base nameInitial を参照するよう、修正を行いました。

f:id:jesushill:20181021161825p:plain

初期画面

以下のボタンを設定しました。

f:id:jesushill:20181021163003p:plain

このボタンを押せば次の画面へ遷移する仕組みを今回は記述しました。

プログラム

画面に設定したボタンを押したら、画面遷移をするように 以下のようなプログラムを設定しました。

class InitialViewController: UIViewController {
   # 略

   @IBAction func didTouchNextButton(_ sender: Any) {
        let storyboard = UIStoryboard(name: "Initial", bundle: nil)
        let viewController = storyboard.instantiateViewController(withIdentifier: "next")

        self.present(viewController, animated: true, completion: nil)
    }
}

画面遷移先のInitialには対応するInitialViewControllerを紐づけ、Storyboard IDに next と設定すれば完了です。

ネットでググってみると、画面遷移先のコントローラーを指定した以下の記述 let viewController = storyboard.instantiateViewController(withIdentifier: "next")as! NextVIewController と型変換を入れている人もいますが、指定した先が対応していれば、 書かなくても大丈夫です。

メモ 徹底理解ブロックチェーンを読む【ch14】

トランザクション格納の仕組み

  • ブロックチェーンデータ構造

    • 順序を持ったブロックと呼ばれる単位で構成
  • ブロックは以下の要素で構成

    • ブロックヘッダー(前のブロックヘッダーを参照)
      • ハッシュ参照されている。
    • マークル木(トランザクションデータが含まれている)

徹底理解ブロックチェーンを読む【ch13】

ブロックチェーンでのデジタル署名の仕組み

トランザクションの署名

トランザクションの検証

  • トランザクションデータ(署名除く)のハッシュ値を作成
  • 譲渡する側のアカウントの公開鍵を用いて、デジタル署名を復号
  • 上記の2つの値を比較し、同じならば秘密鍵の所有者によって承認されている。

なぜうまくいくのか

徹底理解ブロックチェーンを読む【ch12】

暗号化の仕組み

  • 概略 暗号(鍵)を使ったデータの保護と保護の解除には、それぞれ暗号化と復号という用語を使う。 暗号化されたデータは暗号文と呼ばれる。

  • 対象鍵暗号 データの暗号化と復号に同じ鍵を利用

  • 非対称鍵暗号 暗号化と復号に違う鍵を利用

現実世界での非対称鍵暗号

非対称鍵暗号を用いる際は、それぞれの鍵に名前を用いる。 一般に、公開鍵(すべてのユーザーに公開)・秘密鍵暗号(公開しない)と呼ばれる。

ブロックチェーンでの非対称鍵暗号