Meaningless days

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

【本の感想】エンジニアの知的生産術を読んだ

Twitterなどで結構言及される人が多くてずっと読みたいと思いつつもなかなか読めていなかった、「エンジニアの知的生産術」を昨日(2/2)に購入して一通り読んだ。これは備忘録を兼ねてまとめておかねばと感じたので感想を書き留めておこうと思う。

ざっくりした内容紹介

この本は、1章にてエンジニアが実践している知的生産という行為を

  • 具体的な事象の積み重ね

  • 事象の抽象化、モデル化

  • 抽象化した内容の検証

というサイクルと定義したうえでこのサイクルを回していくのに必要な内容が下記のように書かれていた。

  • 2章やる気を出す

    • GTD(Getting Things Done)を用いたタスク整理によってモチベーションを保つためのタスクの分け方を習得する
  • 3章記憶を整理する

    • 記憶のメカニズムを簡単に解説したうえで、長期記憶に定着させるためにはアウトプットを通じて思い出す、忘れたころに思い出すといった行為を繰り返したほうがよい
  • 4章効率的に読む

    • 文章の難しさによって読書のスピードを上げ下げしても理解の量が変わらない読書法
  • 5章考えをまとめる

  • 6章アイデアを思いつく

    • イデアを思いつくフェーズを「耕す」「芽生え」「育てる」という3フェーズに分けた

    • 「芽生え」は管理困難なので「耕す」と「育てる」ことについて詳しく解説

そして、最後の7章にて「何を学ぶべきか」を解説するとともに自分の経営戦略を考えていこうという体裁となっている。

感想

自分の行っている業務を客観的に見直すことができた

自分の担っている業務を日常とは異なる視点で再度整理できた意義は大きいと思う。なんとなく「業務がうまく回っていない」と感じた際に見直す際の良いフレームワークになるのではないかと思う。  

よいアウトプットを出すための技術を知ることができた

これについても大きいと感じた。2章のGTDや5章6章のKJ法については、名前は知っていたが具体的な実践方法を知らなかったので今後具体的に実践していければと思う。また、逆に4章の読書法は断片的にやっているもののもっと改善する方法が見つかったし、思い切って「読む部分を捨てる」勇気が持てたことはスピードを上げて効率的なインプットを実現していく上で有用だと感じた。

エンジニアだけでなく似たような業務を行っている人に役立ちそう

おそらく、著者がエンジニア出身なので「エンジニアの」というタイトルがついたのだと思うが、これは例えばコンサルだったりといった何かの知識をモデル化してそれを適用していく職業についている人にも役に立ちそうだと感じた。あるいは、まだ大学生が論文やレポートを書く際の戦略を立てる上でも非常に良い指針になると思う。

まとめ

今後、何かの知識を使った仕事についていく人にとってはとても有用な内容であると思う。自分もここで解説されている方法を参考にして何かしてより効率的に「知的生産」が実行できればと思う。

同一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

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