2016/07/11

大変遅くなってすみません。7/2(土)、札幌で開催されたCLR/H #clrh101で行ったセッション、「PowerShell の概要と 5.x 新機能のご紹介」の資料を公開します。

札幌は涼しくて、何もかも美味しくて良かったです。夏の関西は人間の生存に適した気候とはとても言えないので、しばらく札幌に滞在していたかったですね。

さて、登録ページでのタイトルと若干違いますが、間もなく(8/2に)Windows 10 Anniversary Updateの登場とともにPowerShell 5.1の正式版が利用できるようになるということで、今回、5.0に加えて5.1の新機能もご紹介することにしたためです。(スライドは5.1の新機能の部分以外は、基本的にこれまでの内容と同様です。ご容赦ください。)

なお、PowerShell 5.1は現在のところ、Windows 10 Insider PreviewかWindows Server 2016 TP5で試すことができます。

PowerShell 5.0の登場からWindows Server 2016正式リリースまでの期間がけっこう空いたことと、ラピッドリリースの方針もあって、5.1が短期間で登場することとなりました。なのでどれが5.0でどれが5.1の機能かというのは割と曖昧ですけど、5.1で一番大きく変化するところは、PowerShellのエディションがDesktop EditionとCore Editionに分かれるところだと思います。

PowerShell Core Editionは従来のPowerShellのサブセット版となり、Windows Server 2016のインストールオプションの一つで、フットプリントを軽量化し、Windowsコンテナ技術に最適化された、Nano Serverで動作させることを目的として作られました。

Core Editionでは一部のコマンドレットのみのサポートとなりますが、基本的にNano Serverの管理はリモート経由でPowerShellを直接的あるいは間接的に用いて行うことになるため、当然ながら必須のコンポーネントとなります。

なお、PowerShell Core Editionは先日、1.0リリースを迎えたばかりの、.NET Core上で動作します。.NET Coreとは.NET Frameworkのサブセットで、マルチプラットフォームで動作し、OSSとして開発されています。

.NET Framework上で動作する、従来のフルセット版PowerShellも、Desktop Editionとしてこれまで通り利用可能です。

PowerShell 5.0、5.1の新機能はMSDNでまとめられているのでそちらもご参照ください。

Windows 管理フレームワーク (WMF) 5.0 RTM のリリース ノート概要 | MSDN
WMF 5.1 Release Notes (Preview)

追伸。Microsoft MVP for Cloud and Datacenter Managementを7月付で再受賞いたしました。おかげで今回のイベントで「関西MVP3人が集結」という触れ込みが嘘にならなくて良かったです。そして同じ分野でCLR/Hのスタッフでもある素敵なおひげさんも受賞されました。おめでとうございます。

2015/12/15

この記事はPowerShell Advent Calendar 2015の15日目の記事です。

はじめに

前々回前回は、PowerShellによるWebスクレイピングの具体的手法についてまとめました。ただ、スクレイピングはあくまで最後の手段であり、Webから何らかの文字列情報を取得するには、Web APIを用いるのが本道かと思います。

今回はPowerShellでWeb APIを用いるお話です。

Web APIとは

Web APIというのは、その名の通り、プログラムからWeb上のデータを取得したり、何らかのサービスの機能を実行したりするための、呼び出し方式を定めた規約です。

Web APIでは、HTTPリクエストに呼び出したい機能の内容を指定し、結果をHTTPレスポンスとして受け取るというのが一連の流れになります。

Web APIの主な実装方式としてはSOAPとRESTがありますが、このうち、XMLでリクエストを組み立てるSOAPは最近は廃れてきた感じです。

(PowerShellではSOAP APIはNew-WebServiceProxyコマンドレットで対応しています。が、今回は略。参考:PowerShell: ◆空港の場所と天気を調べる(New-WebServiceProxy)

最近はWeb APIといえばREST(REpresentational State Transfer) APIを指すことが殆どです。REST APIでは操作の対象となるリソース=URI(エンドポイントという)、呼び出し方式=HTTPメソッド(GET:データの取得, POST:データの作成, PUT:データの更新, DELETE:データの削除)、操作に対するパラメータ=クエリストリング(GETの場合)もしくはリクエストボディ(POSTの場合)、結果の返却=HTTPレスポンス(JSON、XML等)となるのが基本です。

また、RESTの呼び出しは基本的にステートレスなものとなります。要はセッション情報を持たない≒cookieを使わない、ってことです。

PowerShellではREST APIを簡便に利用するためにInvoke-RestMethodコマンドレットが用意されています。(ただしPowerShell 3.0から)

Invoke-RestMethodコマンドレットのパラメータ指定

Invoke-RestMethodコマンドレットのパラメータについては、実は前々回に取り上げたInvoke-WebRequestコマンドレットと同じです(IEのパーサーを使うことはないので、-UseBasicParsingも無いですが)。ただしREST APIの形式は前述の通りなので、利用するパラメータは限られてきます。具体的には

データ取得の場合

$response = Invoke-RestMethod -Uri エンドポイント(パラメータを含む) -Method GET

データ作成、更新の場合

$response = 
 Invoke-RestMethod -Uri エンドポイント -Method POST -Body パラメータ(連想配列あるいはJSONやXML等)

となるかと思います。

その他にOAuth等の認証情報を指定する場合は、-Headers @{Authorization="認証情報"}のような指定も必要になることがあります。

Invoke-RestMethodコマンドレットのレスポンス

Invoke-RestMethodコマンドレットがInvoke-WebRequestコマンドレットと異なる最大のポイントは、レスポンス文字列の種類によって、自動的に出力オブジェクトの型が切り替わるところです。

私の調べた限りでは以下のような対応になっているようです。

レスポンス文字列の種類 出力型
XML XmlDocument
RSS/ATOM XmlElement
JSON PSCustomObject
プレーンテキスト string
利用の具体例
AED検索

Microsoft MVPのはつねさんが公開されている、AED検索はREST APIでAEDの所在地情報を検索し、JSONで結果を得ることができます。

例えば兵庫県芦屋市のAED一覧を取得するには、

$response = Invoke-RestMethod https://aed.azure-mobile.net/api/aedinfo/兵庫県/芦屋市/
$response | Format-Table Latitude, Longitude, LocationName,
    @{L = "Address"; E = {
        "$($_.Perfecture) $($_.City) $($_.AddressArea)"
    }} -AutoSize

のようにします。

ここで$responseには、JSON形式のデータをパースしてPSCustomObject化したデータが格納されるので、あとはFormat-Tableコマンドレットで見やすい形で出力してあげれば良いでしょう。

結果はこんな感じです。

image

AED検索APIと、去年のアドベントカレンダーで紹介した、Windows 位置情報プラットフォームを用いて現在位置を取得するGet-GeoCoordinate関数を併用して、「現在位置の最寄りにあるAEDをGoogle MAP上で表示する」なんてこともできます。

$location = Get-GeoCoordinate
$response = Invoke-RestMethod "https://aed.azure-mobile.net/api/NearAED?lat=$($location.Latitude)&lng=$($location.Longitude)"
Start-Process "http://maps.google.com/maps?q=$($response.Latitude),$($response.Longitude)"

ここではREST APIにQueryStringでパラメータ(経度、緯度)情報を渡しているところと、レスポンスから生成されたオブジェクトのプロパティ値をマップ表示の際のパラメータとして利用しているところに注目してください。

RSS取得

RSSやATOMもREST APIの一種と考えて良いと思います。

ここではこのブログのRSSを取得する例を示します。

$response = Invoke-RestMethod http://winscript.jp/powershell/rss2/
$response | select @{L = "Title"; E = "title"},
    @{L = "Url"; E = "link"},
    @{L = "PublishDate"; E = {[DateTime]::Parse($_.pubDate)}},
    @{L = "Description"; E = {
        ($_.description -replace "<.+?>").
        PadRight(50).Substring(0,50).TrimEnd() + "..."
    }}|
    Format-List

Descriptionの加工がやや適当(HTMLタグっぽいところを削除して50文字に切り詰めてるだけ)ですが、少し見やすくしています。結果は以下のように表示されます。

image

RSSの結果は、1エントリがXMLElement型のオブジェクトとして出力されるので、データの取扱いが比較的楽だと思います。

レスポンスがXMLなREST APIの良い例がなかったので省略してますが、基本的には前回取り上げた、XHTMLをXMLとしてパースする方法と同じやり方です。ただInvoke-RestMethodの場合は[xml]型アクセラレータによる変換は不要で、いきなりXmlDocumentオブジェクトが得られます。

現状の問題点

レスポンスがコールバック関数つきのJSONP形式であるとかで、JSON、XML、RSS/ATOMのいずれの形式にも適合しない場合はプレーンテキストとして出力されてしまいます。

その場合は、出力文字列を適宜加工した後に、[xml]型アクセラレータや、ConvertFrom-Jsonコマンドレット等により手動でオブジェクト化するようにしてください。もっとも、その場合は敢えてInvoke-RestMethodを使わずInvoke-WebRequestで充分ですが。

あとWeb APIというのは大抵(特にPOSTの場合)、認証を要するのですが、最近よくあるのはTwitter等でもおなじみのOAuth認証です。ところがOAuth認証は結構めんどくさい処理で、何らかのライブラリを使わないとしんどいです。残念ながらPowerShellの標準コマンドレットには存在しないので、自前で頑張って書くか、既存のライブラリやコマンドを利用することになるかと思います。

今回そこまで説明できませんでしたが、また機会があれば。

2015/04/14

JPPOSH(Japan PowerShell User Group)主催の、第5回PowerShell勉強会を5/9(土)に開催します。大阪での開催は3回目になります。会場はMicrosoft関西支店です。

セッションはお昼1時から4セッションあり、PowerShell大阪勉強会主催のwakaさんによる、「スクリプトの書き方」、私による「PowerShell 5.0 新機能」、ALM MVPのPosauneさんによる「C#er的Powershellの使い方」、岩城さんによる「PowerShellで行うOffice365の管理&メンテナンス」とのラインナップになっています。

今回は開発者視点の話が中心になりそうですが、基本的なスクリプトの書き方から実務への応用、そしてそろそろ全貌が見えてきた次バージョンの話まで、幅広く対応できる内容かと思います。ご興味のある方は、ぜひ、ご参加くださいませ。

今回の開催日は、アメリカで開催される大型カンファレンスである、Build 2015およびMicrosoft Igniteの直後ということもあって、私のセッションでは可能な限り両イベント開催中に新しく発表された情報を反映していこうと思っています。

先日発表になったばかりの、Windows Serverのコンテナ実行環境である、Nano Serverの詳細や、その上で動作するPowerShellの話なんかが出てくるんじゃないかなぁと思っていますが、どうでしょうね? お楽しみに。

2015/02/01

昨日のMVP Community Campにはたくさんの方にお越しいただき、まことにありがとうございました。

私の行った「PowerShellスクリプトを書いてラクしよう」のセッション資料を公開します。

セッション中、デモで用いたサンプルスクリプトも公開します。

今回は私の前にJPPOSH大阪代表のwakaさんのPowerShellセッションがあり、そちらでサーバー管理の本筋の話をしていただいたので、私の方はクライアント側の話でまとめてみました。

どちらかというと遊びに近いネタも多かったと思いますが、PowerShellの基本的なスクリプトを書くための文法等の知識を身に着ける題材として、参考にしていただければ幸いです。

2015/01/06

あけましておめでとうございます。

2015年、直近の私のセッション予定について告知します。ご都合がよければ、ぜひぜひお越しくださいませ。

2015/01/31(土)

イベント:2015 MVP Community Camp大阪会場

タイトル:「PowerShellスクリプトを書いてラクしよう」

セッション概要:

コンピューター上で定型作業を手動でちまちまやるのは効率が悪いです。スクリプトを書いて自動化しましょう。幸い、最近のWindowsにはPowerShellというステキな環境が最初から入っています。これを使わない手はありませんね! PowerShellはサーバー管理の自動化ツールとして重要ですが、本セッションではPowerShellでのスクリプトの書き方を、まずは身近なテーマの具体例を交えて伝授いたします。もうすぐリリースされるv5.0の紹介もちょっとだけします。

ひとこと:

日本を含むアジアパシフィック地域で同時開催されるコミュニティイベント、2015 MVP Community Camp大阪会場で、わんくま同盟大阪勉強会代表としてセッションさせていただきます。

今回のイベントのテーマとして、最新の技術をわかりやすく、初心者や学生に伝えるというのがあります。そこで私の方からは、初心に返って、本来PowerShellがターゲットとしているサーバーOSというよりかは、クライアントOSで日常的に使えそうなスクリプトを題材に、PowerShellの紹介をしていこうと思っています。

なお、大阪会場ではJapan PowerShell User Group大阪の主催者であるwakaさんによる「PowerShellで変わるサーバ構築と管理」というセッションもあります。こちらはPowerShellによるサーバー構築、管理のお話なので、どちらかというと本筋の話だと思います。併せてぜひ、どうぞ。

2015/02/14(土)

イベント:オープンセミナー2015@広島

タイトル:「PowerShell DSCによるインフラ構成管理の自動化手法について」

セッション概要:

PowerShell Desired State Configuration(DSC)の登場により、いよいよWindows Server、Microsoft AzureでもInfrastructure as Code(インフラ構成をコード記述により自動化する手法)が可能となりました。 またWindowsのみならずLinuxなど他プラットフォームについてもDSCで横断的に構成管理を行える世界が来ようとしています。 本セッションでは、PowerShell DSCを用いた最新のMicrosoft系インフラ構成管理の手法について、間もなくリリースされる予定のPowerShell 5.0の新機能も交えて紹介したいと思います。

ひとこと:

オープンセミナー広島というIT系無料セミナーでセッションをさせていただくことになりました。2015のテーマは「クラウド時代の構成管理入門」ということで、私の方からはPowerShell DSCをキーワードに、Windows Server、Microsoft AzureといったMicrosoft系サーバー、クラウド環境の構成管理のお話をします。

これまでずっと、どちらかというとMicrosoft系のイベントばかりでセッションしてきたので、ちょっとドキドキしています。

今回のイベントでは、Chef、Docker、Ansibleなど旬のお話が聞けるので私も勉強しにいこうと思っています。ご存じのとおり、Microsoftの昨今の戦略変更で、これからはMicrosoft技術のみならず、オープンソースのソフトウェアについてもちゃんと知っておかないといけませんし!

2015/03/14(土)?

イベント:わんくま同盟大阪勉強会

タイトル:「未定」

ひとこと:

PowerShell関係で何かセッションをしようと思っています。

2014/03/27

去年12月、東京でJapan PowerShell User Group (JPPOSH)第一回PowerShell勉強会が開催されましたが、来たる4/12(土)13:30より、大阪でも「PowerShell勉強会@大阪」が開催されます!

場所は阿倍野市民学習センターで、阿倍野駅/天王寺駅/阿部野橋駅が最寄りとなります(あべのハルカスの近くですね)。なお、参加費として500円を集めさせていただきますので予めご了承ください。

セッション内容は以下のとおりです。

  1. 「PowerShell『再』入門2014」 by 牟田口
    バージョン1登場から8年目を迎えたPowerShellの現状をまとめ、2014年版のPowerShell入門セッションという形で行なおうと思います。これからPowerShellを扱われる方はもちろん、これまで利用されていた方にも2014年現在のPowerShellの立ち位置の再確認、最新バージョンの4.0新機能等、参考になる内容としたいと思っています。
  2. 「PowerShellをクライアントで活用」 by wakaさん
    サーバー管理用シェルとして登場したPowerShellではありますが、クライアントOSであるWindows 7、8、8.1にも標準搭載され、最初から使えるスクリプト環境としての側面もあります。今回の勉強会主催者でもあるwakaさんに、クライアントサイドでPowerShellを活用するセッションをしていただける予定です。
  3. 調整中(Active Directory/Azure系の予定) by ちゅきさん
    Windows Serverの要の機能といえばやはりActive Directoryですよね。そしてWindows Azure改めMicrosoft Azureというクラウド環境の重要性も増す一方です。Windows Serverにおいてはオンプレもクラウドも、管理にはPowerShellが不可欠です。今回、Microsoft MVP for Directory Servicesのちゅきさんに、ADを中心としたPowerShellによるWindows Server/Azureの管理方法についてセッションしていただける予定です。
  4. 「Windows における PowerShell での デプロイ - DSC と リモーティング」by ぎたぱそさん
    東京の謎社で日夜PowerShellを用いた運用業務に携わり、Twitterやブログで積極的にPowerShell情報を共有されておられるぎたぱそさんが来阪して、PowerShellによるデプロイについてのセッションをしてくださいます。PowerShell 4.0で登場したDSCについても実際の業務での使いどころ等を語っていただけるのではないかと思います。

まだまだ残席ございますので、お近くの方でご興味をお持ちの方は、ぜひとも4/12は基本から応用まで内容盛りだくさんのPowerShell勉強会@大阪へお越しくださいませ! 懇親会もありますよ!

2014/03/23

昨日は、MVP Community Camp 2014の大阪会場にお越しいただき、ありがとうございました。

私のセッションスライドを公開します。

前回のエントリーでも書きましたが、DSCについては何度かセッションをやってきており、今回が一応の集大成的なものとなるかと思います。

今回はDSCというPowerShell4.0で追加された応用的な内容でしたが、4/12に開催されるPowerShell勉強会@大阪では基礎的なところからセッションをやる予定です。PowerShell勉強会@大阪については後ほど詳しく紹介エントリーを上げます。

さて、今回デモをやろうとしたんですが、見事に失敗してしまいました。大変申し訳ありません!

原因としてはHyper-Vにドメインコントローラー(兼、Configuration配布用サーバー)と設定対象サーバーの2台を同一ドメインに所属させていたのですが、手違いで設定対象サーバーからDCへの認証ができなくなっていて、結果、DSC反映時に必要なKerberos認証に失敗したためでした。やはりDCを仮想化させるのはいくらHyper-V 3.0でも注意深くやらないとダメですね。直前まではうまく動いてたんですけどもね…DCはやはり独立して用意すべきでした

本番ではデモに失敗したんですが、環境を再整備して動作することを確認しました。そこで、今回、デモで用いる予定だったスクリプトを一式、公開する事にしました。こちら:dsc_demo.zip

使用方法を以下に説明します。なお、すべては無保証なので、必ず、壊れてもいいサーバーを新規で用意してください。また、デモ環境をHyper-Vの仮想サーバーとしておくと、DSC適用前の状態のスナップショットを取れるのでいつでもデモ実行前の状態に戻せて便利です。

事前準備
  1. Configuration配布用サーバー(コンピューター名:dscpull)、設定対象サーバー(コンピューター名:target)を用意し、双方にWindows Server 2012 R2をGUI有効にしてインストールする。
  2. Windows Server 2012 R2がRTM版である場合は、General Availability Update Rollupを適用してGA相当にアップデートする(ビルド番号6.3.9600.16394の状態にする)。
  3. 両サーバーを同一ドメインに所属させる。
  4. 両サーバー間でKerberos認証が通りWinRMでリモート接続できることを確認しておく。
    たとえば、dscpullサーバーからEnter-PSSession targetとしてtargetサーバーにリモート接続できるかどうかで確認できます。
  5. dsc_demo.zip中に含まれるdscpullフォルダをConfiguration配布用サーバーのC:\直下にコピーする。
  6. dsc_demo.zip中に含まれるtargetフォルダを設定対象サーバーのC:\直下にコピーする。
Pushモードのデモ

このデモでは、dscpullサーバーでDSCをpushモードで実行することにより、「targetサーバーにIISをインストールし、Webサイトを作成し、開始する」という操作を適用します。よって、事前にtargetサーバーにはIISが入っていないことを確認しておいてください。

  1. targetサーバーのInstall_Website_Resource.ps1を実行する。
    この操作により、xWebAdministrationリソースモジュールがtargetサーバーに配置されます。
  2. dscpullサーバーのStart_Website_of_Target.ps1を実行する。
    この操作により、xWebAdministrationリソースモジュールがdscpullサーバーにも配置され、xWebSite等のリソースを呼び出すConfigurationに従ってMOFファイルを生成し、Start-DscConfigurationコマンドレットによって実際にMOFファイルの内容をtargetサーバーに反映させます。
    ※Pushモードの場合、カスタムリソースを利用する際は、実行側と対象の双方にカスタムリソースの事前配置が必要です。
  3. Start_Website_of_Target.ps1の実行が終了したら、targetサーバーをチェックして下さい。IISがインストールされ、IISマネージャ上ではDefault Web Siteは停止状態となり、MyWebSiteというサイトが作成され開始されていると思います。http://target/を開いてみてください。
  4. targetサーバーの設定を色々と変更して(Webサイトを停止する、削除する、IISをアンインストールする、InetPubフォルダのコンテンツを削除するetc)、再度Start_Website_of_Target.ps1を実行した場合でも、同じ設定に戻ることを確認してください。
Pullモードのデモ

このデモではまずdscpullサーバーにDSC Serviceをインストールし、PullサーバーとしてMOFファイルを配布できるようにします。続いてtargetサーバーの設定をPullモードにし、dscpullサーバーから設定を定期的に取得、反映させるようにします。(このデモでは「印刷サービス」(プリントサーバー)をインストールするConfigurationをサンプルとして利用しています)

  1. dscpullサーバーのInstall_DSC_Service.ps1を実行する。
    この操作により、xPSDesiredStateConfigurationリソースモジュールがdscpullサーバーに配置され、このモジュールに含まれるxDscWebServiceリソースを呼び出すConfiguration(Sample_xDscWebService)を実行し、Pullサーバーが構築されます。
  2. dscpullサーバーのDeploy_Config.ps1を実行する。
    この操作により、プリントサーバーをインストールするConfigurationからMOFファイル(ファイル名は対象サーバー名ではなく、対象サーバーを識別するConfigurationIDとなる)を生成し、New-DscCheckSumコマンドレットによりチェックサムファイルを出力し、両ファイルをPullサーバーのMOFファイル配布用フォルダにコピーすることで、設定の配置が完了します。
  3. targetサーバーのConfig_LCMforPull.ps1を実行する。
    この操作により、LCM(Local Configuration Manager)設定用のConfigurationからMOFファイルを生成し、Set-DscLocalConfigurationManagerによりMOFファイルを反映し、targetサーバーのLCMがPushモードからPullモードに変更されます。また対象サーバーを識別するためのConfigurationIDも定義します。このスクリプトを実行すると処理の最後で自動的に再起動を実行します。(DSCのモード切替は再起動後に反映されます)
  4. 再起動後、targetサーバーに印刷サービスがインストールされていることを確認してください。上手くいかない場合は、イベントビューアで”Desired State Configuration”を確認してください。またLCMのConfigurationに指定した間隔で設定が再反映されていること、あるいは新設定をPullサーバーに取得しにいっていることを確認してください。

2014/03/14

Microsoft MVPと技術コミュニティが主催する MVP Community Camp 2014 というカンファレンスが、日本を含むアジア パシフィック各都市で3/17〜3/22の期間に開催されます。

3/17〜3/21の期間はオンラインセミナーが実施されます。日本リージョンのセッションはDay2の3/18に行われます。

3/22(土)のオフラインカンファレンスについては、日本では東京、札幌、仙台、名古屋、北陸、大阪、広島、沖縄の各都市/地域で実施されます。このうち大阪会場(難波市民学習センター)では、私も「PowerShell Desired State Configuration (DSC) について」と題して、PowerShell 4.0の新機能であるDSCのお話をデモを交えてさせていただきます。

なお、大阪会場では懇親会参加登録が別サイトとなっているので、参加されるかたはご注意ください。

DSCについてはPowerShell 4.0リリース後も、公式サイトの情報が不完全で公式ブログで徐々に小出しされてたり、新しいリソースが(α版的なものですが)徐々にリリースされたりで、日々刻刻と状況がアップデートされています。そのため、これまで私としても何回かDSCのセッションをしていますが、内容はちょっとずつ変化しています(私の理解が深まっていくにつれて、というのもありますが)。

おそらく今回はPowerShell4.0版のDSCセッションとしては、最終報告(?)になるかと思います。

もちろん大阪会場のセッションは私だけではなく、MSMVPの専門家たちが皆さんの専門分野で濃ゆいセッションをしてくださいます。ぜひぜひ、3/22は皆様お誘いあわせの上、会場にお越しいただければと思います。どうぞよろしくお願いします。

2013/07/02

というわけで、10年目に突入しました。これも私のアウトプットをインプットしてくださる皆様、私のインプットとなるアウトプットをしていただいている皆様のおかげです。いつもありがとうございます。

10周年なので軽く歴史を振り返ります。

2004年にWSH Lab.というサイトを中心としたWSH / VBScript関係の活動が評価されてfor Developer - Scriptingという分野でMSMVPを受賞したのがはじまりです。

実はWSH Lab.を始めたのが1999年のことで、それ以前も1997年頃からWindows系のニュースグループに出入りして、オンラインコミュニティではMVP受賞前も知る人ぞ知る存在ではあったように思います。(なんせ、WSHは相当ニッチな分野だったもので、まともに取り扱おうと思う人は当時はほとんどいなかったもので)

当時は私はまだ大学生(しかも分野は化学系でIT関係なし)でして、体調崩したり色々あって卒業後も就職せず迷走してた時期でした。なのでIT系の方々とも交流はなく、オンラインのみで何故かWSHというこれまたあんまり誰も手を付けないマイナー分野で突っ走ってる謎の存在だったんじゃないかなーと思います。

MVP受賞後はひょこひょこオフラインにも出没するようになり、謎めいた存在から確かに実在する存在として認識されていったのではないかと思います。2006年にはわんくま同盟に加入し、IT系の方々と交流し、また自らセッションをする機会にも恵まれました。

MSMVP受賞のおかげで2006年からは@ITさんの方でチェック式 WSH入門という連載をさせていただくことができ、商業デビュー(?)を果たしました。

だんだんWSHがフェードアウトしていくと同時にPowerShellというものが登場したのも2006年のことでした。当時は.NETのことは全然知らなかったのですが、このままでは取り残される!と思い、それなりに勉強を始めたものでした。受賞カテゴリも2007年からはfor Data Center Management- Admin Frameworksというよく分からない名前に代わり、開発系からサーバー系への移籍となりました。

もちろんWindows Serverなんてものもまともに触ったこともなく、今思えばあの頃は色々と憶えることがたくさんあったなーと思いますね。そんなこんなで2008年にはMVPカテゴリもfor Data Center Management- PowerShellとなり、PowerShell専門となりました。

2008年には技術評論社さんからWindows PowerShell ポケットリファレンスという書籍を書かせてもらうことができました。まさか自分が本を書くなんて思ってもいなかったですし、あれはいい経験になったと思っています。

それからも体調はずっとよくなくて迷走しまくりで随分多くの方々にご迷惑をかけ続けていましたが、なんとかMVPという繋がりを武器に社会と繋がっていようとあがいた感じです。書籍や記事執筆、スピーカー、そして密かにプログラマーとして会社に勤めたりしてた時期もありました。

私のあがきとは関係なく、PowerShellはどんどん重要性をましていって、特にWindows Server 2012とPowerShell 3.0がリリースされた2012年は全国各地で声がかかって(自分で志願したのもありますが)、計8回もセッションを担当しました。中でもMicrosoft Windows Developer DaysでMicrosoft社員さんに交じってセッションを担当したのは貴重な経験でした。そして今年はPowerShellポケットリファレンスの改訂版を世に出すことができました。

こうやって10年目にして振り返ると、確かにWindows Scripting / PowerShell周りで要所要所でいろいろやってきたなーという感じですね。今年もPowerShell 4.0 / Windows Server 2012 R2がリリースされる予定で、PowerShellは今後も着実に発展、浸透していくのだと思います。私も陰ながらと言わず割と表立って、そのお手伝いをしていければいいなーと思っています。

さて余談ですが、結局あがいた結果今はどうなん?という話なんですが、結果としてはITの世界では今まで通り、PowerShellの分野ではこういう感じの活動を続けてますが、メインのおしごとは全然ITとも化学とも違う別なことをやっていたりします。ちゃんとおしごとしてるのでそんな目で見ないでくださいね。あと、体調に関しては2年前くらいからほぼ完全に回復してるので、遠慮せず遊んでやってください。

こんなことを書いてると、なんか「お前…消えるのか…?」と思われてしまうかもしれませんがそんなことは全然ない(と思う)ので、これからも変わらず、お付き合いいただければと思います。

2013/03/24

Windows 8[業務アプリ]開発読本:書籍案内|技術評論社

9784774156057

というわけで、私が企画協力させていただいた「Windows 8 [業務アプリ] 開発読本」という書籍が技術評論社さんから3/27に発売となります。この書籍は書名通り、Windows 8対応の業務アプリを作成するためのノウハウを、私のお友達を中心とした皆さんによって書かれたものとなります。執筆者を募集したときは特に意識はしてなかったのですが、結果的にMicrosoft MVPやMicrosoftエバンジェリストをはじめとしたエキスパートで占められるという何とも豪華な執筆陣となっています。

Windows 8の開発書籍ということで、Windowsストアアプリ開発法をメインに据えた構成となっているのはもちろんのこと、従来のデスクトップ(Windows Forms / WPF)アプリとの違いや移行方法、ストアアプリとデスクトップアプリをどう作り分けていくか(既存のデスクトップアプリのうちどこをストアアプリ化するのか)、といった視点も盛り込んでいます。

というのもストアアプリはタッチデバイスを想定した新しいプラットフォームではあるものの、業務システムすべてをストアアプリに置き換えるというのは得策とは言えないケースが多々あるためです。逆に業務システムのうちストアアプリ化すると効率が上がる部分も多く存在しており、本書では業務システムをグレードアップさせるためのストアアプリ開発を、概念、UI設計から具体的なコードにいたるまで詳しく取り上げています。

私もWindows 8業務アプリを開発する上で、DevOps(開発と運用の協調)を実現するためにPowerShellモジュールをアプリに組み込み、運用サイドでもアプリ操作の自動化を容易に行う方法についての記事を書かせていただいてます。

本書はストアアプリを中心にクラウド等の周辺テクノロジーを包括した、Windows 8時代の業務システム開発とはどのようなものであるか、どのように行っていけばいいのか、という指針を提示できているのではないかと思っています。Windows開発に携わる方はぜひお手にとって見ていただきたい一冊です。どうぞよろしくお願いします。

3/29追記。
本書のサポートページが公開になりました。特集1と私の記事のサンプルファイルがダウンロード可能になっていますので、ご活用ください。


古い記事のページへ |


Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー

Twitter

Books