No Programming, No Life

プログラミング関連の話題や雑記

IT用語斜め読み - サプスクリプション

f:id:fumokmm:20191117132854j:plain (photo by Pixabay)

最近のIT用語検索トレンド

いつもお世話になってるいる IT用語辞典 e-Wordsさんの 2019年11月17日(日)のアクセスランキングを見てみると、

1位 JavaBeans 2位 インフラ 3位 サインイン 4位 ディスパッチ 5位 Web 6位 API 7位 Apache 8位 サブスクリプション 8位 ツール 10位 ステアリングコミッティ 10位 HD 10位 モダナイゼーション

となっていました。今回はこの中で気になった8位のサプスクリプションについてです。  

サプスクリプションって何?

最近お仕事でMicrosoft Officeが必要になったため、Office365 for Businessを購入しました。その際にもサプスクリプションという単語が出てきて良く分からないなぁと思っていました。

サブスクリプション 【subscription】 別名: サブスクライブsubscribe サブスクリプションとは、予約購読、購読料、会費、寄付(金)、出資(金)、応募、申込、加入、署名、承諾などの意味を持つ英単語。雑誌などの定期購読といった意味があり、ITの分野ではこの意味を元に、会員制のサービスへの加入や、定期的に利用権を更新するソフトウェアの販売方式などを指すことが多い。

IT用語辞典 e-Words より 

なるほど、定期購読ね。製品を一括で購入するのではなく、月々など、定期的に支払いをすることで、そのソフトウェアの使用権を得る感じですね。Kindle Unlimitedとか、Apple Musicとかもこのスタイルですね。

今回のOffice365に関して言えば、常に更新が入って最新版のOffice環境が手に入り、月々1,000円程度といった感じです。買い切りよりも良いんじゃないかな?と個人的には思います。

ビジネスモデル

今後のアプリケーションのビジネスモデル的に見ても、このサプスクリプションの流れが主流になってきているのではないかな?思います。 今は誰でもがスマートフォンを持っ時代ですし、昔のように、固定端末で一度最初にインストールしたアプリをずっと固定で使い続けるという機会も減ってゆくと思います。 かわりにサプスクリプションで月額料料金を支払って、最新版アプリをどこの環境でも利用できる、そんな感じの世の中になってきていますね。

おわりに

私も、長らく使い続けてもらえるような素敵なアプリを作っていけたらなと思います。

PowerShellについて誤解していたこと

f:id:fumokmm:20191115084638p:plain

PowerShell使ってますか?当記事ではPowerShellについて誤解していたことを書きたいと思います。

目次

PowerShellとの再会

最近、お仕事でWindows系サーバーの移行などやることになったのですが、その際に今までよりもWindowsと仲良くしないといけなくなりました。そんな中で再会したのがPowerShellです。

PowerShellコマンドプロンプトの後継として結構昔からあって、存在は勿論知っていたんですが、Windowsは長らくbatファイルしか扱えないし、大したこともできないんだわ、は~Bashが使いたいなぁ~と、それこそ食わず嫌いのように過ごしてきました。しかし、今回のお仕事で軽くPowerShellスクリプトを組むことになりそうで、PowerShellに遅ればせながら入門する形となったわけです。

PowerShellの何が良いか

一言で言うなら、バッチ(bat)で出来ないあれやこれやが簡単にできることです。例えば、Windows PCしかない環境でファイルのハッシュ値を知りたいな♪ となった場合、どうしますか?お好みのスクリプト言語をインストールしますか?場合によってはインストール禁止の現場もありますよね。そんな時、PowerShellなら簡単に実現できるんです(以下)

PS C:\temp> Get-FileHash .\test.txt

Algorithm Hash Path
--------- ---- ----
SHA256 43940E53EB7D524938CE68BE5446BB68BBB87095125878D33979A83637DC261A C:\temp\test.txt


PS C:\temp> Get-FileHash -Algorithm MD5 .\test.txt

Algorithm Hash Path
--------- ---- ----
MD5 7AD3ADF4EB7E0E46BE649DB2752F3CF0 C:\temp\test.txt

PowerShellスクリプト

PowerShellスクリプトとして保存しておいて(拡張子は.ps1)使うとさらに便利です。なぜなら、変数が使えたり、if-elseやswitch、foreachなどの構文も使えたりするからです。また、PowerShell ISEという専用のIDEも標準でWindowsに付属しており、これを使ってスクリプトコードの編集、コーディング中はコード補完もあるし、スクリプトの実行やデバッグ実行なども出来たりするのです。結構すごいなと思います。

なぜバッチファイルは不便なままなのか

Windows10になってもバッチ(bat)の言語仕様は強化されないしずっと昔のまま使いづらいなぁ…と思っていましたが、PowerShellはその間もずっとバージョンアップが続けられてきていたようでした。つまりバッチはもうシェルとしては打ち止めで、これからのシェルとしてはPowerShellに全力を注ぎますよと、そんなマイクロソフトの意気込みが感じられます。

PowerShellが初見さんに敬遠される理由

私も含めですが、あまりWindowsユーザに広く浸透しているとは思えないPowerShell、そんなPowerShellが初見さんに敬遠される理由の一つに、コマンドが長くて打つのが面倒!新しく覚えるのが面倒!というのがあると思います。

たとえばディレクトリを変更するコマンド(いわゆるcd)は・・・

PS C:\> Set-Location "C:\temp"
PS C:\temp>                  

ただし、ここらへんはトレードオフな気がします。古きを捨て新しいものを作るには勇気や思い切りがいるものです。そういった意味でPowerShellの取った方針は英断だったと私は思います。短い変数名や関数名が好まれて使われるC言語から、意味が明確になるなら長いクラス名やメソッド名を歓迎するオブジェクト指向の世界へシフトしたような感覚です。 ちなみに、PowerShellにはalias機能があって、良く使う慣習的なコマンドはデフォルトでaliasが割り当てられています。たとえばcdとかdirとかlsとか。ただしこれもやり過ぎには注意が必要なのではないでしょうか。何でもLinuxコマンドに倣うのではなくて、alias機能は過去の慣習への互換性のために使うのがよいと思います。上記のSet-Locationなどはそれこそcdで良いかなと。

おわりに

まぁそんなわけで、バッチ(bat)ファイルの黒魔術に絡めとられて現場でお困りの皆さんがおられましたら、ちょっと手を止めて、黒いウインドウを閉じて、少し群青色がかったウインドウを開いてみるのはいかがでしょうか。

参考

PowerShell - Wikipedia

PowerShell/PowerShellでファイルのハッシュ値を確認する方法・Get-FileHash - Windowsと暮らす

ロマサガ3 リマスター版にGradleが使われていた

2019年11月11日にオリジナル版から実に24年の時を経て、ロマンシング サガ3のリマスター版が発売されました。今回は8つのプラットフォームで発売されました。私はiOS版を早速購入しました。

f:id:fumokmm:20191113213353p:image

さて、タイトルを眺めていたら、右上に「ライセンス」とあったので、何気なくタップ。すると「ライセンス」のテキストが出てきて、

f:id:fumokmm:20191113202324p:image

なんとGradleが入ってる!

なんというか、当時スーファミ版が開発されていた時には勿論使われていなかった技術でしょうし、というか存在すらしていなかった技術でしょうが、それが今改めて開発するときには使われるというのは、何か感慨深いものがあります。

それから、自分が普段から使っているのと同じビルドシステムを使ってこういった巨大なゲームプログラムも開発されるんだなぁという点にがとても興味深い。万物はクォークから出来ている、ってのと同じようなインパクトが私にはありました。(ロマサガ3もGradleでビルドされている)

世界は広いようで狭いですね。

 

VBAのマクロで外部コマンドを呼び出すサンプル

はじめに

諸事情があり、Excelのマクロから外部コマンドを呼び出す必要がありました。その際書いたスクリプトのメモです。

動作環境

Win10 × Excel2016でしか動作確認しています。

サンプルコード

Dim wsh As Object
Dim exec As Object
Dim command As String
Dim result As String

Set wsh = CreateObject("WScript.Shell")
command = "〜〜〜"
Set exec = wsh.exec("%ComSpec% /c " & command)

Dim line As String
' ★★★ポイント1★★★
Do While exec.Status = 0
    If Not exec.StdOut.AtEndOfStream Then
        line = exec.StdOut.ReadLine ' 標準出力の1行読み込み
        ' 〜〜〜(処理)〜〜〜
        Do Events
    End If
Loop

' ★★★ポイント2★★★
Do Until exec.StdOut.AtEndOfStream
    line = exec.StdOut.ReadLine ' 標準出力の1行読み込み
    ' 〜〜〜(処理)〜〜〜
    Do Events
Loop

Set exec = Nothing
Set wsh = Nothing

ポイント1

exec.Status0 になるまで待ち合わせを行っています。wsh#exec した後はコマンド実行が終わるまで時間がかかるかもしれないためです。ちなみにこの位置で標準出力のストリームを読み込んで置かないと、データ量が多いとふんずまるみたいです。

ポイント2

ここは、残りの標準出力のストリームを最後まで読み込んでいる部分です。

同じ処理を2箇所で書かていてカッコ悪いので、実用的なコードを書くときはちゃんと関数化などしましょう。

おわり。

参考サイト

https://m.srad.jp/~IR.0-4/journal/572274

Rubyのチュートリアルっぽい記事の一覧

Rubyチュートリアルっぽい記事の一覧はこちら

Ruby1 - プログラミング言語Rubyの概要 - No Programming, No Life

Ruby2 - Rubyの基礎文法 - No Programming, No Life

Ruby3 - Rubyの基礎文法 - 条件分岐 - No Programming, No Life

Ruby4 - Rubyの真偽値 - No Programming, No Life

Ruby4 - Rubyの真偽値

Rubyで「真」を表すのは何ですか?

以外のすべての値です。ちなみに true です。

じゃあ、Rubyで「偽」を表すのは何ですか?

falsenil です。 Rubyではこの2つ以外はすべて なので、0 (整数のゼロ) や、'' (空文字) も となります。気をつけて下さい。

関連記事

Rubyのチュートリアルっぽい記事の一覧 - No Programming, No Life