ひよこインフラてっく!

ひよこインフラエンジニア「ひよこ大佐」による技術ブログ的なもの。インフラ技術や仮想化、Pythonなど。

@ITにTwitter転職を取材されました

どうも、ひよこ大佐です。 Twitterをご覧になっている方はもうご存知かと思いますが、Twitter転職について取材を受けました。 まだご覧になっていない方は、下記からご一読いただければ幸いです。

ひよこ大佐、私もTwitterで転職できますか? (1/4):教えて! キラキラお兄さん - @IT

こういった形で取材を受けるのは初めてですが、自分の思いを記事にしていただけたかなと思います。自分の顔写真が出回るのはなかなか恥ずかしいものですが、概ねポジティブな感想をいただけれているので、嬉しい限りです。

Twitter転職をしてみて

Twitter転職は、僕自身は以前の記事でも言及した通り、Twitterで転職しようという強い思いをもって活動していたわけではありません。 hiyoko-infratech.hateblo.jp

ただ、転職の手段としてはアリだとおもいますし、従来のエージェントを使った転職にない利点も、欠点もあります。 ですので、従来の転職活動と併用したり、いいところをうまく活用し、欠点を他の手段で補っていくのがよいと思います。 以下は、自分がTwitterで転職活動をして、また他の方の事例を見て感じた大事だと思う考え方です。

ポジティブかつ敬意を持って接する

Twitter転職は、「人と人とのゆるいつながり」による転職活動になります。 ですから、お互いに誠実に、敬意をもって接する必要があります。(転職活動に限らずですが) 横柄な人間と働きたいと思う人はいません。

スキル・経歴を整理する

140字という限られた字数のなかでいかに自分ができること、自分がやりたいことを伝えるかを考えるのは非常に難しいです。そのためには自分の今あるスキルの整理をしておく必要があります。 どちらにせよ、職務経歴書などは提出する必要があるので、それと同時に自分ができること、経験してきたことが整理できていれば理想的だと思います。

今後のキャリアロードマップを持つ

どこかへ進むためには、進みたい方向を理解している必要があります。IT業界だけでもいろいろな仕事があり、どこに向えば正解というものはありません。その中で、「自分がやってきたこと」をベースに、「次は何をしたいのか」という志向が明確に決まっていれば、転職活動もやりやすいですし、自分の中での判断基準を持つことができます。

転職活動を楽しむ

つらい転職活動は、地獄です。楽しい方がいいに決まってますよね? 自分がやりたいこと、キャリアの未来を考える機会として、転職活動はまたとない機会です。楽しみましょう。

偉そうに書いていて恥ずかしくなってきたので、ここらへんで終わりとさせていただきますが、皆様によりよいキャリアが訪れることを願っています。

Interact 2018に登壇しました

どうも、ひよこ大佐です。 @Pyromaniaxxx さんにお誘いいただき、Interact 2018というイベントでお話しさせていただく機会がありました。

interact.connpass.com

マイクロソフトさんのセミナールームをお借りして、同時に60分間のセッションを6枠、4回にわたって開催する非公式ながら非常に規模の大きいイベントでした。

300名近い参加者の方に来場いただき、大盛況でした。私自身も「Ansible x Windows: AnsibleではじめるWindows自動化」と題して60分の枠をいただきました。 スライド資料に関してはSpeakerDeckにアップロードしてありますので、ご確認いただけたらと思います。

speakerdeck.com

登壇してみて

実際に会場に入ってみると、まさかの満席! いままでこういった大人数の前でしゃべることはなかったので、ガチゴチに緊張してしまいました。 その結果、まさかの20分以上時間を余らせる事態に……!

(緊張して早口で喋りすぎました)

しかし、結果的にはいいレスポンスを頂き、課題も明確になったので、ぜひ機会があればまた登壇してみたいと強く思うようになりました。 ツイッターでは「わかりやすい」と言っていただいている方もいたので、普段なじみのないAnsibleでのWindows自動化をある程度は啓蒙できたのかなぁと思います。 リベンジのために、また来年もぜひ呼んでください!!

スライドに関する質問やフィードバックがあれば、ぜひぜひTwitterでリプライを飛ばしていただければ励みになります! (このイベントでAnsibleしゃべってほしいなぁというご相談もありです)

インフラ勉強会 半年記念イベント(東京会場)に参加してきました

おひさしぶりです。ひよこ大佐です。

6/23に渋谷で開催された、インフラ勉強会半年記念イベントに参加してきました。 イベントの詳細については、TECH PLAYのイベントページを参照ください。

techplay.jp

インフラ勉強会については下記記事にて取り上げていますので、よろしければご一読ください。

hiyoko-infratech.hateblo.jp

会場

渋谷駅から徒歩数分の綺麗なビルの中にありました。

会場はさながらカフェのような凝ったインテリア。噂には聞いていたのですが、想像以上に綺麗な会場でした。 広さも100人ぐらいは余裕で収容できるぐらいあり、設備も整っているようでした。 f:id:hiyokotaisa:20180627172929j:plain f:id:hiyokotaisa:20180627173044j:plain あまりのオシャンティさに驚きながら、会場の隅に着席。

用意いただいていた名札がTシャツにうまく張り付かず、急遽名札をGimpでパパっと作成、近くの100円ショップで名札入れを買ってコンビニで印刷しました。 f:id:hiyokotaisa:20180705192633j:plain

12時を過ぎると、続々と別の参加者の方々が。 普段オンラインで話す方でも、こうやって直接会う機会はほとんどないので、非常に新鮮です。 広いと思っていた会場も、これだけ人が集まると狭く感じます。 f:id:hiyokotaisa:20180627173507j:plain

勉強会開始

佐々木康介さんの挨拶からイベントがスタート。煽りで英語を覚えた煽りのプロことinductorさんによる「インフラ勉強会の振り返り」があり、場が盛り上がったところで大阪会場のゆたかさんのセッション。 コミュニティ主導のイベントで東京・大阪同時開催というのはなかなかなかった試みですが、非常に低遅延かつなめらかな配信が実現されていました。

スタッフの方々の多大な努力と準備があってこそだと思います。本当に感謝です。

休憩を挟んだあとはパネルディスカッション。インフラ勉強会に参加されている方はお馴染の顔ぶれによるディスカッションは、笑いあり、考えさせられるコメントありで大いに盛り上がりました。

懇親会&LT

お待ちかねの懇親会がスタート。実は前日の22時過ぎに「LTやりませんか」とお声がけいただき、いつの間にか私自身も登壇することになっていました。

盛り上がる話、真面目な話からここでは書けないようないろいろな意味で「ヤバい」話など、バリエーションに富んだLTに、お酒もあり会場はどんどんヒートアップ。 私もお酒を飲みながら話しかけていただいたり、エンジョイしつつもついに自分の出番となりました。

LTでは何を話そうか悩んだのですが、せっかくなのでTwitter転職のその後について、前職と現職の違いやそこで感じたことなどをLTしました。 結果的にはLTは成功だったと自分では思っています。スライド自体については公開する予定はありませんが、いい経験になりました。

イベントを通して感じたこと

非常に熱量の高いコミュニティでありながら、Discordでの活動が主体で参加のハードルが非常に低い、稀有なコミュニティだと感じています。 イベントもスタッフの方が主体的にすべて準備いただき、当日はノートラブルで終えることができました。 (準備会のチャンネルに入っていたのに、何もできていなくて本当にすみません)

また、1年記念イベントが予定されているので、その際はぜひまた参加したいと思います。 参加された皆様、本当にありがとうございました!

いまからはじめるAnsible#1を開催しました

皆様、おはようございます。ひよこ大佐です。

大雪に見舞われた東京も、徐々に雪が溶けはじめました。ただ今週末にまた雪が降るかもしれないとの予報で、今から憂鬱な気分です。

インフラ勉強会

勉強会に参加されるエンジニアの方は非常に多く、ConpassATNDをちらりと眺めただけでも数え切れないほどのさまざまな勉強会が開催されています。

 

そんな中にあっても「インフラ勉強会」が他と一線を画すのは、そういった対面での勉強会と異なり、場所の制約を受けないオンライン限定のコミュニティであるということです。

 

Discord上でLinux、Networkからセキュリティ、コンピュータアーキテクチャの話に至るまで、インフラに関わる多様な領域を議論するチャンネルが存在し、日々議論、情報共有や雑談、LT、勉強会を開催しています。

 

今回私は1/28(日) 21:00から1時間ほどAnsibleの概要や初歩的な使い方を説明する勉強会を開催しました。

 

GitPitch + 画面共有 + Discordのボイスチャット

Discordにはボイスチャットチャンネルが存在するので、超多人数のボイスチャットが実現可能です。そのシステムとテキストチャットによるコミュニケーション、画面共有ツール「join.me」で参加者にデスクトップを共有し「GitPitch」を使ってGitHub上に作成したMarkdownのドキュメントをスライドとして表示させました。

 

実際に使用したGitPitchのスライドがこちらです。

https://gitpitch.com/hiyokotaisa/ansible-101/draft

Githubはこちら。

https://github.com/hiyokotaisa/ansible-101/blob/draft/PITCHME.md

 

この方式であれば、配信者も手軽にいつでも配信でき、参加者もDiscordのVC(ボイスチャット)を聞きながらスライドを眺めるだけでよく、ラジオ的に聞き流すことも可能で、非常に参加のハードルが低いのが利点です。参加できなかった方も、WikiページにスライドのMarkdownをベースに補足したものを参照すれば勉強会で触れた内容、デモの手順まで把握できます。

 

当日は参加者がjoin.meの上限である50人を上回ってしまったため急遽参加者の方に多重配信していただいたり、draftからmergeし忘れたりなどのトラブルはありましたが、概ね好評をいただけたようで非常によい体験ができました。

 

今後の勉強会のあり方

勉強会はいままで、ハードルが高いものでした。発表者にとっても参加者にとっても、時間も場所も制約を受けてしまい、なかなか忙しい合間を縫って参加することができない方も多く、大きな機会損失がありました。その制約を受けずに参加できるのがオンライン勉強会です。

いわゆるWebinarと呼ばれる形式の勉強会は、大企業が主催する勉強会などでは存在していました。ただ、インフラ勉強会のようにコミュニティから生まれ、草の根的に広がりつつあるこの動きに、非常に大きな可能性を感じます。今後も、この動きがますます拡大していくことを願っています。

 

 

クリスマスプレゼントの御礼と2018年の抱負

こんばんは、ひよこ大佐です。 気がつけば2017年もあと数時間。時が経つのは早いものですね。

クリスマス前、軽い気持ちでTwitterでクリスマスプレゼントを募集したりしました。

結果、こうなりました。

大量の技術書やトイレットペーパーやトイレットペーパーや食料、本棚や机(!?) などが続々と届いております。 皆様本当にありがとうございます。

以下、頂いたもののリストです。

技術書

  • Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス
  • Azureテクノロジ入門 2018
  • 詳解 Linuxカーネル 第3版
  • コンピュータネットワーク 第5版
  • Pythonチュートリアル 第3版
  • マスタリングTCP/IP 応用編
  • マスタリングTCP/IP ルーティング編
  • インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
  • ふつうのLinuxプログラミング 第2版

読み物

  • 数学ガール (数学ガールシリーズ 1)
  • 世界を動かすプロジェクトマネジメントの教科書 ~グローバルなチャレンジを成功させるOSの作り方
  • ITエンジニアのロジカル・シンキング・テクニック 新装版

日用品

  • エリエール イーナ トイレットティシュー シングル(100m) 12ロール 華やぐフローラルの香り パルプ100%
  • ネピア おしりセレブ トイレットロール 4ロール ダブル (2枚重ね 35m巻) 無香料
  • ネピア ロング トイレットロール 8ロール シングル (90m巻) 無香料
  • ネピア 鼻セレブ ティシュ 400枚(200組)×3個パック

食品

  • カゴメ 野菜生活100 Smoothie マンゴーピーチスムージーMix 330ml×12本
  • ハウス プロ クオリティ ビーフカレー 辛口 4袋入
  • 低温製法米のおいしいごはん 北海道産ゆめぴりか 180g×5パック

雑貨

  • ステッドラー ボールペン 多機能ペン アバンギャルド 927 ブラストブラック AG-BB
  • サンワダイレクト トラベルポーチ 充電器ポーチ PC周辺小物整理 収納ポーチ 旅行 グレー 200-BAGIN006GY
  • BONTIME クリーニングクロス 超極細繊維/マイクロファイバー【カメラレンズ/スマホ/ メガネ/ 液晶/楽器対応】ギフト 20cm×18cm(8枚セット/個別包装)グレー&ブル
  • Amazonベーシック ジェルマウスパッド ハンドレスト付き

家具

その他

皆様、本当にありがとうございました! 頂いたものはすべて有効に活用させていただきます!

2018年の抱負

来年は、自分にとって「アウトプット」の年にしたいと考えています。 転職を成功させることももちろんですが、技術的にも幅広く吸収しアウトプットしていきたいと考えています。

これだけの技術書をすべて読み切るのは相当な時間が掛かります。 皆様からこれだけのご支援を頂いていますので、すべてを責任を持って読み切ります。

また、そこから得た知識やエンジニアとしての成果はできるだけコミュニティに還元していければと思います。 このブログを含めて、来年は勉強会やコミュニティへのコミットなど、もっとアウトプットできる機会を増やしていければと思います。

来年もどうぞよろしくお願いします!

AnsibleでDockerコンテナを操作してみよう

こんにちは、ひよこ大佐です。 いよいよ2017年も今日が最後の日となりました。皆様いかがお過ごししょうか。 大掃除もようやく終わり、無事今年も新年を迎えることができそうです。

そういえば、大掃除という習慣ですが、その起源は神道の「煤払い」から来ているとのことです。

jinja.jp

家を綺麗にし歳神様をお迎えする習わしが、その宗教的意義が薄れ年末の恒例行事として定着したもののようです。 何気なくやっている新年の恒例行事も、調べてみるといろいろな発見がありますね。

Ansible Connection Pluginについて

さて、今日はAnsibleの記事です。 実はAnsibleからDockerコンテナにたいして操作をすることが可能です。 Ansibleには「Connection Plugin」というPluginの一種として、ターゲットノードへの接続方法を拡張することができます。

通常Ansibleはターゲットノードと接続する際にSSHを使用しますが、それ以外にも現時点で下記の方式で接続することが可能です。今後も拡張が予定されています。

  • buildah - Interact with an existing buildah container
  • chroot - Interact with local chroot
  • docker - Run tasks in docker containers
  • funcd - Use funcd to connect to target
  • iocage - Run tasks in iocage jails
  • jail - Run tasks in jails
  • libvirt_lxc - Run tasks in lxc containers via libvirt
  • local - execute on controller
  • lxc - Run tasks in lxc containers via lxc python library
  • lxd - Run tasks in lxc containers via lxc CLI
  • netconf - Use netconf to run command on network appliances
  • network_cli - Use network_cli to run command on network appliances
  • paramiko_ssh - Run tasks via python ssh (paramiko)
  • persistent - Use a persistent unix socket for connection
  • saltstack - Allow ansible to piggyback on salt minions
  • winrm - Run tasks over Microsoft’s WinRM
  • zone - Run tasks in a zone instance

Connection Plugins — Ansible Documentation

AnsibleでDockerコンテナを操作する

さて、実際にAnsibleからDockerコンテナを操作してみましょう。 今回はAWS上のCentOS 7にdockerとansibleをインストール、CentOS7のdocker imageからコンテナを作成し検証しています。

Dockerのコンテナを作成する

※dockerのコンテナイメージは事前にpullしておきます。

$ sudo docker run -itd --name test-01 centos /bin/bash
$ sudo docker run -itd --name test-02 centos /bin/bash

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
220b31f3c7c0        centos              "/bin/bash"         3 seconds ago       Up 2 seconds                            test-02
1be95b60e618        centos              "/bin/bash"         59 seconds ago      Up 58 seconds                           test-01

inventoryとplaybookを定義する

以下のようにinventoryとplaybookを定義します。

test_inventory

ローカルのdockerコンテナへの接続となるので、コンテナの名前のみをinventoryに記載しています。

[test_servers]
test-01
test-02

docker_test.yml

playbookの内容は非常にシンプルで、ディレクトリとファイルを作成しているだけです。 ここでのキモは、「connection: docker」という行。 これにより、dockerコンテナへの操作であることを定義しています。

---
- hosts: test_servers
  connection: docker
  tasks:
    - name: create directory
      file:
        path: /home/test/
        state: directory
        mode: 0755

    - name: create file
      file:
        path: /home/test/test.txt
        state: touch
        mode: 0644

Playbookの文法チェックをする

下記コマンドで実行前にPlaybookの文法をチェックすることができます。 実行した際に文法エラーで弾かれることを未然に防ぐ事ができるため、Playbookを作成および変更した際には必ず実施しましょう。

$ sudo ansible-playbook -i ./test_inventory ./docker_test.yml --syntax-check

playbook: ./docker_test.yml

ansibleでテスト実行する

実際にAnsibleで実行する前に、テスト実行します。 --checkオプションをつけることで実際に実行することなくどのように変更されるのか確認できます。--diffオプションで変更後の差分も表示可能です。

$ sudo ansible-playbook -i ./test_inventory ./docker_test.yml --check --diff

PLAY [test_servers] ********************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [test-01]
ok: [test-02]

TASK [create directory] ****************************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/",
-    "state": "absent"
+    "state": "directory"
 }

changed: [test-01]
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/",
-    "state": "absent"
+    "state": "directory"
 }

changed: [test-02]

TASK [create file] *********************************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/test.txt",
-    "state": "absent"
+    "state": "touch"
 }

changed: [test-01]
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/test.txt",
-    "state": "absent"
+    "state": "touch"
 }

changed: [test-02]

PLAY RECAP *****************************************************************************************************************************
test-01                    : ok=3    changed=2    unreachable=0    failed=0   
test-02                    : ok=3    changed=2    unreachable=0    failed=0   

実際に実行する

Playbookを実行する準備ができました。 早速実行してみましょう。

$ sudo ansible-playbook -i ./test_inventory ./docker_test.yml --diff

PLAY [test_servers] ********************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [test-01]
ok: [test-02]

TASK [create directory] ****************************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/",
-    "state": "absent"
+    "state": "directory"
 }

changed: [test-02]
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/",
-    "state": "absent"
+    "state": "directory"
 }

changed: [test-01]

TASK [create file] *********************************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/test.txt",
-    "state": "absent"
+    "state": "touch"
 }

changed: [test-01]
--- before
+++ after
@@ -1,4 +1,4 @@
 {
     "path": "/home/test/test.txt",
-    "state": "absent"
+    "state": "touch"
 }

changed: [test-02]

PLAY RECAP *****************************************************************************************************************************
test-01                    : ok=3    changed=2    unreachable=0    failed=0   
test-02                    : ok=3    changed=2    unreachable=0    failed=0   

問題なく実行できました。

ファイルが存在することを確認する

$ sudo docker attach test-02
[root@220b31f3c7c0 /]# 
[root@220b31f3c7c0 /]# 
[root@220b31f3c7c0 /]# cd /home/test/
[root@220b31f3c7c0 test]# ls -ltr
total 0
-rw-r--r--. 1 root root 0 Dec 31 09:58 test.txt

test.txtファイルが存在していることが確認できます。

おわりに

最後までお付き合いいただきありがとうございます。 Ansibleは様々な環境にたいして操作をすることが可能な柔軟性を兼ね備えています。 いろいろなことがあった2017年。 2018年は、Ansibleをもっと活用してみませんか?

ご意見、ご感想など、コメント欄やTwitterでリプライいただければ励みになります! 2018年も、ひよこ大佐をよろしくお願いいたします!

それでは、良いお年をお迎えください!

ツイッターで転職したいと呟いたらバズった話

これは、「転職 Advent Calendar 2017」24日目の記事です。 クリスマス・イブ、いかがお過ごしでしょうか。このたび初めてAdvent Calendarの企画に参加しました、ひよこ大佐です。

11月末、私はふとこんなツイートをしました。

するとあれよあれよという間に大量のいいねやリプライをいただき、いわゆる「バズった」状態に。

Togetterにもまとめられ、気がついたら記事にもなっていました。この件からフォロワーさんが一気に増えたので、印象に残っている方もいるかもしれません。

今回の記事では、自分の転職経験やプロフィールについてご紹介し、今後のエンジニアとしての転職のあり方や必要とされていくであろうスキルについて考えていければと思います。

プロフィール

私自身はもともとコンピューターサイエンスを専攻していたわけでもない、文系の学生でした。ただ、小さい頃から機械や電子機器を見たり触れたりするのは大好きでした。家族は別段エンジニアだったりするわけではないのですが、もともとオタクっぽい気質があったのかもしれません。

中学生時代に富士通のノートPCをゲームやりたさに、親にねだって買ってもらいました。シングルコアのCeleronと256MBのメモリしかないWindows XPのマシンです。それでも当時は20万円は下らない、高額な買い物でした。 最初はWindowsでネットゲームやブラウジングなどをやっているだけの「高機能なゲーム機」ぐらいの感覚でしたが、ある日ふとLinuxの存在を知り、興味を持ちました。「世の中のOSはWindowsだけではない」ということを初めて知った瞬間です。 知的好奇心を抑えられない私は、Vine Linuxをインストールしました。そこにあったのは、完全に未知の世界です。それまで「自分はパソコンがわかる」と思いこんでいた中学生に襲いかかったのは、黒いTerminal、全く分からないbashのコマンド。そして消えてしまったWindowsでした。慌ててLinuxの本を図書館で借りました。

どうやらこの黒い画面にコマンドを打ちこむといろいろできるらしい。Linuxというのは狭義にはカーネルのことを指し、そのカーネルは「C言語」というので書かれているらしい。 私はLinuxについての基礎と、C言語を勉強することにしました。 非常に複雑怪奇な代物に思えましたが、サンプルコードを動かしてみると非常にワクワクするのです。実際に作ったのは本当に簡単なコードばかりでしたが、変数やポインタ、関数、メモリやCPUの概要、APIの概念について、多くの基礎的な知識を学ぶことができました。今となっては忘れてしまったもののほうが多いですが、無駄ではなかったと思います。 しかし、僕自身は「自分はプログラミングも全くわからないし、とてもじゃないがプログラマとしてやっていける域にない」と考えていました。プログラミングは楽しい。だけど数学も苦手で基礎知識もない僕はプログラミングを仕事としてできるレベルまで昇華できるはずがない。それよりも別のことを学ぼう。そう考えるようになっていきました。

高校時代にはHTMLやCSSを勉強したり、Fedoraの翻訳プロジェクトに参加したり、Ubuntuを使ってみたりしていましたが、高校でより数学が嫌いになった私に「エンジニアになる」という選択肢はありませんでした。 それよりも元々好きだった文学の世界に没頭する日々が続きました。

文系の大学に進学し就活を始めた当初は、製造業の営業などを志望しており、ITエンジニアになろうとは全く考えていませんでした。数学もできない、理系でもない自分がエンジニアになれるとは到底考えられなかったのです。しかし結果はことごとく不発に終わり、60社以上受けた時点で内定はゼロでした。 当時私はアルバイトとしてWebメディアのテクニカルライターをしており、そこでライターとしてやっていこうとぼんやりと考えていました。ただライターの仕事は出来高で安定する仕事ではありませんでしたし、どこかまだ自分のなかでこの先の生き方について納得しきれないものがあったのだと思います。結果が出ずとも就活自体はずっと続けていました。

ある時、ハローワークが主催する新卒向け合同面接会で、「未経験でもITエンジニアになれる!英語も使える!」という会社が目に止まりました。インフラのSES事業と開発を手がける小さな会社でした。その時は英語は話せるという域には達していないレベルでしたが、話を聞くうちに「この会社、良さそう!」と思い、中学・高校時代のLinuxに触れていたエピソードを話したところ、まさかの即日内定が出ました。私はこの時、SESという事業がどのようなものなのか、全く理解していなかったのです。ただ、そこには諦めていたエンジニアへの憧れがありました。 入社時にCCNAとLPIC1を取り、晴れてエンジニアとしてデビューすることになったのです。

1社目

最初に配属されたのは、大手企業の海外の事務所を含めたネットワーク監視やヘルプデスクを行っている現場でした。 アラートや問い合わせを受け、通信キャリアやベンダーと原因を調査し解決するのが主な業務です。ときおり翻訳なんかもやっていました。

海外ベンダーへの問い合わせ、お客様への報告は電話もメールも全て英語でした。当時そこまで英語力のなかった私は死に物狂いで英語を勉強し、ベンダー窓口のインド人の訛りのある英語に苦労しながらも、半年も経つと英語でのやり取りはほとんど問題なくなっていました。 ただ、この現場に所属した1年半ほどのあいだ、技術的なことはほとんどできていませんでした。深いトラブルシュートなどをするわけでもなく、ただひたすらアラートを元に電話をし、エスカレーションしつづける日々が続きました。 自分自身は自力でトラブルシュートをしたうえで、それでも解決しないことについてはエスカレーションをするように毎日意識していましたが、周りは別に技術的なことをしたいという意識もなく、ただメールを右から左に流すだけ。そんな環境に嫌気がさし、私は転属を上長に願い出ていました。

1社目(転属後)

転属が決まったのは入社して1年半が経った時でした。SI事業を本格的に始動させるために人が足りず、技術的な基礎があり学ぶ意欲がある人材を投入してSIチームを発足させる動きがあり、私に声がかかりました。 そこで初めてSIでの構築という経験を積みました。チームといいつつ3名ほどの小さなチームでしたが、学ぶことは多々ありました。そこでサーバー、ネットワーク問わずインフラエンジニアとして様々な環境での構築経験を積むことができたのは貴重だったと思います。 ただ、少人数で業務を回しているうえ、自分のスキルに見合わない内容を営業が受注してしまったりしていたので、業務はホワイトとは言い難く、案件によっては本当に辛いものもありました。給与も低く、いい環境とは言いづらいですが、それでも割と楽しく業務をこなしていたと思います。

社長との対立

SIチームに配属されてから1年とちょっと。ある日社内でパラメータシートを書いていた私は、社長に呼び出されました。 内容は、「エンジニアとしてではなく、英語がわかる要員として製造業の現場に行ってほしい」というもの。私はその申し出を断りましたが、社長は「これは社長命令だから」と取り合ってもらえませんでした。 私自身、インフラエンジニアとして積んできた経験を投げ出したくはありませんでしたし、その場で辞める旨を伝え、会社を退職しました。 SIでやってきたことはどれも勉強になりましたが、SI事業そのもの、ひいては私の成果は社内では全く評価されていなかったのです。それ以外にもいろいろな要因はありましたが、このままこの会社に居続けることはできない、と感じました。

初の転職を経験する

転職の経験がない私は、とりあえずエンジニア向けの転職サイトに登録しました。 そこでふと見つけた今の会社に、半ば何も考えずに入社しました。 私としてはSIでの構築ができれば楽しかったので、同じようなSIerへの派遣を行っている会社がいいと考えていました。 そういう意味では、現在の会社は私の理想とぴったりでした。そこで提示されたのは300万円台の給与。 前の会社ではもっと少なかったため、私は特に何も思うことなくその提示額を呑みました。

現職で

現職では前と同様に設計・構築を中心に担当していますが、設計範囲や規模がより大規模になりました。 インフラエンジニアとして前職よりももっと幅広く、かつ正確な知識を求められるため、さらにステップアップにするには最適な環境だと感じています。 ただ、SESの会社の正社員として働く意義は、完全に見失っていました。自社では帰属意識を求められますが、ただ人を送り込むだけの会社にどうすれば高い帰属意識を持てるのでしょうか。所属する同僚との人間関係に不満はありませんでしたが、周りのベンチャー外資系で働くエンジニアと交流するうちに「外の自由な世界はいいなあ」と、感じるようになっていきました。

そして、あのツイートをすることになります。

2回目の転職を決意したきっかけ

もともと転職については抵抗感はなかったものの、そこまで本気で転職を考えていたわけではありません。せいぜいLinkedInに登録して、いいオファーがないかなぁとメッセージをチェックする程度の、転職活動とも呼べない転職活動をしている状況でした。 現在のSIerでの業務は嫌いではありません。オンプレを中心に様々な環境に触れ、設計構築フェーズに関わるのは非常に勉強になりました。ただ、SESの会社に居続けること、SIer業界が本当に自分にとって最も適した環境とは思えませんでした。 旧態依然とした体制、最新技術への対応の遅さは、どんなに先鋭的になろうとしても企業文化として根付いてしまっています。また、資格をなにより重要視するSES業界の常識に疑問を抱いているのも事実です。 そういった中で、「もっと違う環境で働いてみたい」という思いは、ここ最近はずっと持ち続けていました。

現在の状況

外資系を中心に10社を超える方から直接ご連絡をいただき、そのうちとても興味を持った数社にこちらからご連絡させていただきました。 選考状況はまちまちですが、この機会に自分のスキルを発揮でき、それが評価される環境に身を置くことができればと思います。

エンジニアとしてどうしていくか

もともと私自身は「1つのスキル」に特化したエンジニアではありません。なので知識も中途半端で、器用貧乏なところがあると思っています。 しかし、私のエンジニアとしての理想像は「スキルの掛け算ができるエンジニア」です。 例えばある特定の技術分野に秀でたエンジニアが10わかることについて、6ぐらいまでしかわからなくても、多少なりともわかる分野が沢山あれば、どのような状況においても調べたり自分の手を動かしてやってみることで対応できる。それぞれのスキルが掛け算のようにお互いの知識を補完しあい、そのなかで秀でたものが出てくればそれを中心に全体的に伸ばせばよいという考え方です。

人によって「優秀なエンジニア」の定義は様々だと思います。その中で自分が少しでも近づくためにどうすればいいのか。 インフラの世界も、クラウドの台頭などによって大きく様変わりしようとしています。そんな中で、幅広いレンジのスキルとしっかりとした基礎知識があれば、柔軟にその時の状況に適応していくことができます。

エンジニアとして若手から中堅へ成長するなかで、しっかりとした基礎知識の重要性を痛感しています。 今後エンジニアを志す学生や若手の方々は、ぜひしっかりとした基礎知識をつけて、そのうえで食わず嫌いをせずに好奇心のおもむくままいろいろ触れていってほしいと思います。

今後のITエンジニアの転職

現在売り手市場と言われる転職市場ですが、我々ITエンジニアにとってはまたとないチャンスだと考えています。 もともとIT業界は転職に対してネガティブな業界ではありません。現在の状況を改善したいと考えているエンジニアにとって、もっと気軽に転職という選択肢を選べる風潮になっていくと思いますし、そうあるべきだと思います。

長々とお付き合いいただき、ありがとうございました。この記事が皆様の転職や、ITエンジニアとして更なる飛躍のための一助となれば幸いです。