Meaningless days

自分が書きたいことを適当に書くだけ

SESを退職してSIerに入社した話

この記事は退職者アドベントカレンダー7日目の記事です。(https://adventar.org/calendars/2878)

昨日はtakashiskiさんの記事でした。(http://takashiski.hatenablog.com/entry/2018/12/06/000000)

概要

  • SESだけど案件ガチャが大当たりでよかったぞ
  • でも誠意は言葉ではなく金額なので転職するぞ
  • 次も頑張るぞ

目次

退職した会社へ入社した経緯

私は「中途未経験」で今の会社に入社しました。退職した会社に入社する前は新卒で事務系の仕事をしておりましたが入社した会社選び、職種選びを誤ってしまい「上司のパワハラ」「大量のサービス残業(50h/月)」「仕事の内容が合わない」という三重苦に耐えかねて半年で退職してしまいました。次の仕事に迷う中で「中途未経験でも専門的な知見を身につけてステップアップ出来そうな仕事」であると考えてITエンジニアを目指しました。一応ITパスポートは取得しましたが、未経験だったので就活は苦戦して入社しました。入社した会社は何社か受けた中で唯一の内定でした。およそ今から2年ほど前のことでした。

退職した会社について

入社した会社は社員数100名「SIerを謳っているSES」で主に三次請〜四次請で仕事をしておりました。その中で私はMS系のソリューションの導入支援という形で最初は先輩社員と、慣れて来ると一人でSIerさんやエンドユーザーさんのところへ常駐して設計や構築、一部運用も含めて多様な仕事をさせていただきました。

良かったところ

自分が今の会社で良かったと思ったのはお客様や上司に恵まれていた点です。よく「案件ガチャ」「上司ガチャ」と言われることが多いですが、案件面ではOffice365やWindows10といったモダンな製品に携わることができ、残業時間も20hまでに収まる程度で適度に忙しい感じだったかと思います。また、所属会社が持っている案件は決まったことをやってるだけの運用や監視が多い印象でしたが、その中で設計や構築の仕事もさせていただけたのはありがたいというか運に恵まれていたのかなと思っております。所属会社では、上司に「会社で勉強会とかあったらいいのになー」って言ったところから部署内勉強会が始まり最終的に他の部署に広まっていったのはよかったです。自分自身も常駐先ででgitを使う機運ができたりAzureADを活用する流れができる度に「勉強会駆動開発」ちっくに登壇させていただき知識を整理するなどできたと思います。(残念ながらいずれも仕事では使えなかったですが…)

なんで会社を辞めたか

当然辞めた以上、上記のような良い点だけでなく以下の悪い点があってすぐに解消されないと考えたため退職しました。

給与が低い

一点目は給与が低すぎる点です(これが一番大きい理由です)。自分が妻帯者であることもあり、入社当時から給与が低いことに悩み一度転職先を用意した上で「誠意は言葉ではなく金額。1円でも高い方にいく*1」と交渉して給与を増額させたこともありました。しかし、そういった姿勢を快く思わず仕事の邪魔をされたり、本来知って然るべき契約情報を隠されたりするなどされ不信感を持ったこともあります。

経営陣の考えていることがよくわからない

二点目は会社の経営陣がダメだと感じたためです(俗に言うベンチが(ry*2。退職した会社の経営陣は事あるごとに「脱SES」「脱下請け」といった威勢の良い事を言ってました。しかし、結局社内にはそんなことができる人材はおらず、社長も年頃の娘息子を抱えていることもあり、リスクを取って何かをしようとする動きは(自分の観測範囲では)なかったです。結局、この会社で動くよりかは「下請けに甘んじていない」会社に移る方が早いだろうなと考えて転職した部分もあります。

もっとレベルが高いところでやりたい

三点目としてはこのままでは自分が異常に持ち上げられて「聖域*3」になる気がして、もっとレベルが高い世界でやってみたいと思い退職いたしました。 いつも、社外の勉強会やTwitterや常駐先の「すごい人」を見る度に自分の至らなさを痛感する一方で、社内では自分が一年目に基本情報、応用情報の資格を取っただけで異様に持ち上げられたりする中でこのままでは「あのお肩(44)*4」「かっぱ(に失礼)(37)*5」のような「聖域」になってしまう可能性を感じ、「もっとレベルの高い世界に身を置いて頑張りたい」と思った結果退職いたしました。

転職活動について

上記の理由を踏まえて転職活動の軸は

  • 年収をあげる(最優先)
  • 優れた技術を持ったエンジニアがいる

といったことを軸にして転職活動を行いました。私も某ひよこの方*6みたく華麗にTwitter転職できれば良かったのですが残念ながらスキル不足で叶いませんでした。 そのため、普通に転職エージェントと面談→会社さんに書類を出して面談という形を取りました。今回の転職活動ではエージェントの方との相性を重視してある意味受ける会社と同じくらい慎重に相性が合う方を選んだつもりです。全体の応募数はうろ覚えですが30社ほど受けて書類通過が8社ほど内定は2社でました。数字だけみると普通の転職活動くらいの数字に落ち着いたかなと思いつつも、一部の企業で最終面接の足並みが揃わず選考を辞退した会社があったのは残念かなと思ってます。次回転職するときはスケジュールは気をつけたいです。(おい)

ただ、個人的には上記で挙げた二つの条件を概ねいずれも満たしている転職先だと思うので概ね満足です。また、自分のように「文系かつ入社から2年で退職を考えているかつ得意(経験)分野がニッチ」といわば「地雷人材」でも「頑張って勉強してるアピール(資格とか自分で検証してる内容を職務経歴書に書いた)」でそこそこ良い会社から内定が取れたので今年退職しそびれた人は検討しても良いかもしれないと思います。

ぶっちゃけ入った会社どうなんだ?

新しい会社は所謂「SIer」で正直「SI」という文字を見るだけで親でも殺されたんかいってレベルで批判をする方もいらっしゃいますしある面では批判は事実だと思います。ただ、今の所属部署についてはフレックスでいつ出社していいし、潤沢な検証環境を独り占めしてるし、部署の人は技術面もビジネス面もかなりレベルが高いしでネットでよく見る「SIer糞糞*7」みたいな部分はあまり当てはまらないように思います。上司からは入社後最初の1on1で「再来年には昇進してリーダーになって〜」みたいなことを言われて期待されている実感があるので頑張らないとという気持ちが大きくなっております。まだ新しい会社に慣れるのでいっぱいいっぱいで心身の余裕ができてないですがそろそろ少しずつ朝晩の読書や検証の時間を作っていければと思ってます。自分は文系出身でCSの知識が足りないなと思うのでこれとかを参考にCSの知識とか数学とか英語とかを勉強して次の転職でさらに飛躍できる土台作りに努めたいなと思います。(あかん) 以上取り留めもなく書いていきましたが、退職したいけどできなくてモヤモヤしてる人はともかく動いてみるのが吉だと思います。この記事を見て少しでも退職する人が増えて最終的にエンジニアの市場価値が高まれば嬉しいです。

明日は、shin_semiyaさんです。お楽しみに。 ​

同一OUに複数バージョンのWindows 10クライアントが存在するときの管理について

お前誰やねん

  • 主に都内(と神奈川)でWindows系のインフラの設計や導入支援をおこなっている人で、世間的に言うとインフラエンジニアという仕事をしている人だそうです
  • 最近はWindows 10のデバイス管理が主な仕事になっております。

複数バージョンとはどういうことか

Windows 10はWindows as a Service(以下WaaSと記載)というポリシーに従って半期に一回機能更新プログラム(通称Feature Update,以下FUと記載)を適用していく必要があります。そのFUによって行われる更新によって半年に一回機能追加が随時行われていくことになります。

FUを適用するごとに機能が追加されるということは察しが良い方は想像に難くないのかもしれませんが、その機能に関連したグループポリシーも追加されることになります。そのため、IT管理者はFUの適用を行うごとにグループポリシーの設定をどうするか考えないといけないのです。ちなみにこちらのページにて各バージョンごとのグループポリシーテンプレート(admxファイル)が配布されております。

さらにややこしいことに。。。

上記のリンクにて配布されているバージョンごとのグループポリシーには細かい差異があり、場合によっては「これまでのバージョンで設定していたグループポリシーがいつのまにか消えてしまっている」という事態も想像できます。また、半年に一回FUを一斉に適用させるのはネットワークの帯域なども含めてかなり困難かと考えられます。なので、少なからずどのような環境においても「一部のPCは1709(Fall Crators Update)の状態、一部のPCは1803(April 2018 Update)の状態」といった場面がみられるかと思います。

じゃあどうするか

では、ドメイン内にて二つのクライアントバージョンを存続させつつ、異なるadmxファイルに基づくグループポリシーを適用させるにはどのようにすればよいかというと下記の二つの手段を用いて設定すると二つのadmxファイルを共存させた状態で設定することになります。 - リモートサーバー管理ツール(RSAT)を用いたバージョン別のadmxファイルを用いたグループポリシーの作成 - WMIフィルターによるGPOの適用先の区別

今回の検証環境

※各クライアント端末にはリモートサーバー管理ツール(RSAT)をインストールしておくこと

RSATを用いたバージョン別のグループポリシーの作成

  1. 各端末にてあらかじめインストールしておいたRSATツールに含まれている「グループポリシーの管理」を起動するf:id:doich0508:20181029191306p:plain
  2. 「グループポリシーオブジェクト」にて右クリックして「新規」からグループポリシーを作成する(今回はグループポリシーの名前をそれぞれ「GPO_1709」「GPO_1803」とした)」)f:id:doich0508:20181029191306p:plain
  3. 各バージョンごとに設定するグループポリシーを編集する。今回は1803の端末には「管理用テンプレート>WindowsコンポーネントMicrosoft Edge」から「書籍ライブラリ構成の更新を許可する」を、1709の端末には「管理用テンプレート>WindowsコンポーネントMicrosoft FIDO認証」から「FIDOデバイスを用いたサインインを有効にします」を設定した。(いずれも1803, 1709に固有な項目である)

1803に設定した項目f:id:doich0508:20181029191548p:plain

1709に設定した項目f:id:doich0508:20181029191552p:plain

WMIフィルターを用いたGPOの設定先の変更

このままでは作成したGPOが両者とも適用されてしまうのでWMIフィルターを用いた適用先の区別を行う

  • 先ほどまで開いていたグループポリシーエディターから「WMIフィルター」を右クリックして「新規」を選択する

f:id:doich0508:20181029191627p:plain

  • そして、名前とWMIフィルターで用いるクエリを1709用のGPOには「Select * from Win32_OperatingSystem where Caption like "Microsoft Windows 10%" and Version = "10.0.16299"」、1803用のGPOには「Select * from Win32_OperatingSystem where Caption like "Microsoft Windows 10%" and Version = "10.0.17134"」と入力する。f:id:doich0508:20181029191732p:plain
  • 再度先ほど設定したGPOの画面を開いて下のWMIフィルターからそれぞれ適用させたいWMIフィルターを選択して設定する。f:id:doich0508:20181029191705p:plain

以上で設定は終了です。

結果

下記の画像の通りに1803の端末に対しては1803用のGPOが1709のGPOに対しては1709用のGPOが適用されました。

1803端末におけるグループポリシーの適用結果 f:id:doich0508:20181029191924p:plain 1709端末におけるグループポリシーの適用結果 f:id:doich0508:20181029191929p:plain

また、サーバー(ad01)からは下記の画像の通りにみえており、該当するGPOがないものについてはレジストリの値が直接指定されるようです。 f:id:doich0508:20181029192018p:plain

以上です。ご覧いただきありがとうございました。

【資格】GAIT受けてみた

きっかけ

  • 転職活動中にとある企業から受験のお願いをされたため受験することにしました。

受けた人のスペック

  • 仕事はWindowsというかMS系のプロダクトの導入支援を行なっているいわゆるインフラエンジニアというやつらしいです(社会人になってから中途未経験で業界に入って二年ほどが経過しております)。
  • 普段はWindows 10と戯れたりたまに気が向いたらPowerShellスクリプトを書いて自動化してみたりしております。
  • あとは趣味で少しPythonなんかを使ったり使わなかったりしてます。

対策

  • 初めて受ける試験なので対策がないか調査したが書籍などによる対策法は存在しないようです。
  • ただ、色々なサイトを見ると「ITパスポート~応用情報くらいの試験内容+各ベンダー試験の基本的な部分」という記載が多かったので前日に家に転がっていた応用情報の参考書を一通り確認して、計算問題以外の過去問を時間が許す限りやって(といっても全体の1/10もできなかったと思う)試験に臨みました。

試験について

  • 本来は176問を65分間で回答するような形式なのですが団体受験だったので今回は132問を52分で回答する形式でした。
  • 事前にリサーチした通り基本情報〜応用情報位の問題とベンダー固有の知識を問うような問題で構成されてたので少しは勉強した成果が出せたのかなと思います。
  • 時間が足りないということはないです。
  • ただ、じっくり考えている時間はないので分からない問題はその場でスルーしないと時間が足りなくなる印象なので詰まったらとりあえず飛ばして後から回答すれば良いかと思います。

結果について

  • 結果は0~990点のスコアとゴールド(990~700)、シルバー(699~480)、ブロンズ(479~0)のランクで示されます。
  • 自分は527点でシルバーランクを獲得しました。
  • 全体的に半分強くらいの点数を満遍なくとれてましたが、自分があまり仕事で携わっていないストレージだったりアプリケーションの実装については点数があまり取れなかった印象です。

感想

  • 全体的に満遍なく出題されていて自分の現状時点の確認にちょうど良かったと思います。
  • ただ、ベンダー固有の試験問題についてはMS系のプロダクトに関する問題はもう少し点数を取りたかった一方でその他のプロダクトについては思ったより点数を獲得することができてびっくりしました。

Python3.7でScrapyが動かないことから始まるアレコレ

Python3.7でScrapyが動かない

今更ながらPython3.7が先日リリースされました。リリースされた際の資料は以下になります。 (https://www.python.org/downloads/release/python-370/)

外部モジュール系のアップデート対応はに関してTwitterとかの情報で「〇〇が動かない!」的な話がなかったので大丈夫だろうと思ってましたが、どうやらPython3.7+Scrapyについては依存している外部モジュールに不具合があるようでチュートリアルを動かしてみると以下のようなSyntaxErrorとなってしまうそうです。

/Users/ComputerName/Virtualenvs/scrapy_env/lib/python3.7/site-packages/twisted/conch/manhole.py", line 154
    def write(self, data, async=False):
                              ^
SyntaxError: invalid syntax

Python3.6に戻したい

自分の環境はOSXのHighSierraで基本的に環境構築はHomebrew+Python標準のvenvを用いてプロジェクトごとに仮想環境を作成して管理しておりました。自分は標準モジュールのvenvでもかつてのpyenvと同様にPythonの任意のバージョンを入れることができると勘違いしていましたができないようでした。

そこで、Homebrewで下位のバージョンがインストールできないのかなと思って調べたところ下記のコマンドでインストールできました。

brew switch python [欲しいバージョン]
python3 --version # 3.6.6になりました

これで改めてチュートリアル通りコードを記述して以下のコマンドを実行します。

scrapy crawl quotes

そうすると今度はきちんとコマンドが終了して、スクレイピングが終了しました。

やったね!

以上、皆さんも楽しいスクレイピングライフを!

【日記】JTFに参加してきました

7/29の日曜日にJuly Tech Festa 2018が開かれました。そちらに私も参加しましたので感想をシェアします。

イベントのリンクはこちら

私は所用で午後から参加して以下の4つのセッションを聞きました。

  • 副業で収益化を目指す!月数百円から始めるWebサービスの立ち上げから運営まで
  • 明日から実践できる!運用自動化に必要な「テスト」にまつわる技術
  • Cloud Nativeな俺のCI/CD環境 〜 GitLab x Rancher で夢見るイケてる世界 〜
  • イゼルローン要塞攻略に学ぶ、エンジニアの戦略思考

以下それぞれの感想です。

副業で収益化を目指す!月数百円から始めるWebサービスの立ち上げから運営まで

スピーカー紹介(https://2018.techfesta.jp/speakers#B20

lingomineという語学学習サービスを個人で立ち上げた時の知見をシェアするという内容でした。 「フロントエンド(html,css,js)ゼロからやりました」という 内容には見えなかったです。 セッションの中で何回も出てきたフレーズが「問題は解決するのではなく避ける」「面倒臭い」でした。世界の9割以上のウェブサービスがリリース出来ず消えて行くそうです。自分も正直世の中にリリースしたサービスはないのでその難しさはよくわかります…(ローカル上の屍鬼累々を見ながら……)。

セッション内で直接の言及はなかったと思いますが、おそらく以下の思考回路でそうなるのかなと思いました

  • 問題に真正面から取り組んだ結果
  • めんどくさくなって
  • その結果リリースできない

これを避けるための方策として「趣味なんだ」という意識を持つという話もあり、モチベーションの保ち方が大事なのかなと思いました。

明日から実践できる!運用自動化に必要な「テスト」にまつわる技術

スピーカー紹介(https://2018.techfesta.jp/speakers#A30)

Azureを中心に「運用テストの自動化」というよりも「構成管理をどう行うか」みたいな話が中心であるように感じました。 個人的には「クラウドなんだからテストの自動化のために本番環境と同じ環境を立てて壊すことでコストを削減しよう」みたいな意識を改めて持つことができたので良かったです。

Cloud Nativeな俺のCI/CD環境 〜 GitLab x Rancher で夢見るイケてる世界 〜

スピーカー紹介(https://2018.techfesta.jp/speakers#G40)

GitLabとRancher、そしてKubernetesを用いて素早くアプリケーションをリリースしていこうみたいな内容でした。 個人的には業務でGitLabを使い出してるけど今はコード管理機能しか使ってない状態、もしかしたらCI/CDができそうだけどRunnerってなにそれ??みたいなレベル感の至らなさでしたので難しく感じました。 そろそろDocker(Kubernetes)も本格的に知らないといけないんじゃないかなと思う今日この頃なのを強く感じました。

イゼルローン要塞攻略に学ぶ、エンジニアの戦略思考

スピーカー紹介スピーカー紹介(https://2018.techfesta.jp/speakers#G50)

イゼルローン要塞攻略」って世界史で習った記憶ないなあと思ってたら銀河英雄伝説というアニメ(?)のネタでした笑

とはいえ、中身は割としっかりとした戦略論の話でした。私は経営学部出身なのですが専攻が会計学で今回のお話で出たような戦略論的な話はやってなかったのでとても参考になりました。

「戦略の失敗は戦術で取り返しがつかない」 「話をしている相手が見ているレイヤーを意識する」

といった話は普段どうしても技術を扱う仕事をしているため陥りがちな「技術が目的化してしまう」という点に対して柔軟に考える視野を与えてもらったという点においてすごく参考になるような話かなと思います。

短い時間ですが、(仕事だけでなく)今後の人生に活かしていきたいという思いを強く抱きました。

まとめ的なもの

全てに参加できたわけではないですが、全体の印象として普段一緒に仕事をしないRedHatとかの方から現状の最先端の話を聞けたこと、技術やトレンドの移り変わりの早さを目の当たりにしてその中でどう身を処して行くかみたいなことを考えられたことは貴重な体験だったのかなと思います。

あと、普段から話し慣れてるような仕事をされてる人(大学で講義を持ってるとか…)はやっぱり話が上手に感じました。では、自分はどうかというと全然アウトプット出来てない実感はあるのでちょっとずつで良いので頑張りたいです。

【日記】Interact2018にいってきました

久し振りの日記になります。 2018年6月30日に日本Microsoft社にて行なわれた、MSInteract2018というイベントにいってきました。 イベントページはこちら

今回はその振り返りを行いたいと思います。

行こうと思ったきっかけ

いつもはお仕事でMS系の製品を扱ったソリューションなどをさせていただいており、

  • 気になる最新の情報や活用事例を知る
  • スピーカーの話し方などを覚える

という二つの目的を持って参加しました。

実際の話を聞いて

私は以下のセッションに参加しました。

  • Microsoft 365 で NoOps を考える
  • Logic Apps で戦うデータ変換戦線
  • Ansible x Windows: AnsibleではじめるWindows自動化
  • Power BI の可能性?見(魅)せてやるよ!!!その本気ってやつをな('ω')

どのセッションも無料のイベントとは思えないくらい熱量の入ったもので、自分も明日から使いたいと思えるものばかりでした。スピーカーの方の話し方デモの見せ方にも魅せられたし今後参考にしていきたいです。各セッションの詳しい内容については公開NGなもの以外は登壇された方から資料が公開されるのでそちらに譲るとして、受講したセッション全体を通して、以下の流れを実感しました。

  • 製品単体で考えるのではなくそれをうまく組み合わせて何かのソリューションを提供する
  • (時にはコーディングも含めた)面倒な作業をPaaSやSaaSに任せる
  • 作業を自動化することでオペミスなどが入る余地をなくす

しかし、その一方でこのようなことを行うにはIT管理者や経営者が理解して(お金を含めて)積極的に支援ができる体制、環境を作り上げていく必要があると思いました。 ある意味では、上記の環境を作って新しいものを禁止するのではなく良い使い方をユーザと一緒に考える体制を作り上げて行かないと、どんどん置いて行かれたり、デジタルネイティブな世代とうまく仕事ができないのかなという危機感も感じました。

そして、そのためには

  • 新しい技術をよく知り、「正しく」怖がる姿勢
  • 新しい製品を導入して組織を改善して行きたいと思える情熱

の二点を絶えず持ち続けることが必要であると思いました。

仕事が忙しかったりすると、このようなイベントに参加するのが大変になりますがとても良い刺激になったし、今後もうまく活用して行きたいと思いました。

Ubuntu18.04でPython環境構築

先日、Ubuntu18.04LTSがリリースされました。早速、Windows 10のVirtualbox上にUbuntuをインストールしてPythonの環境構築を行ったので知見をメモしておきます。

pipのインストール

下記のコマンドを実行します。

sudo apt-get install python3-pip

pipのアップデート

以下のインストール時のpipが9.0.1(最新は10.0.1 2018/05/04現在)だったのでアップデートします。

pip3 --version # pip 9.0.1
sudo pip3 install --upgrade pip # pip 10.0.1

venvのインストール

仮想環境構築に用いるvenvも入っていなかったのでapt-getをインストールしていきます。

sudo apt-get install python3-venv

これで最低限の実行環境が整ったかなと思います。

おまけ

以下はおまけでVSCodeをインストールしてPython拡張機能を追加します。

VSCodeのインストール

Pythonのコーディングに用いるエディタはPythonの特性上、何でも良いですが、個人的な好みでVSCodeをインストールします。 下記の記事を参考にインストールしていきます。

https://vscode-doc-jp.github.io/docs/setup/linux.html

ただ、記事に書いているコマンドそのままだとパッケージの依存関係でエラーが発生するので下記の順番で実行します。

sudo apt-get install -f
sudo dpkg -i [ダウンロードしたインストーラーのパス].deb
sudo apt-get install -f

これでインストールが完了して、

code

で起動するようになります。

Python拡張機能のインストール(CUI)

以下のコマンドを実行すると一発でPython拡張機能をインストールすることが可能です。

code --install-extension ms-python.python

これでコーディングできそうな感じですね。