zirconsoft’s blog

Microsoft関係について取り上げます。

Notepad++を使ってみる

Windowsテキストエディタなにがいいのか

皆さんはWindows環境でいったいどのエディターを使っているのでしょうか
やっぱりWindows標準のメモ帳ですか?!
僕はUNIX系環境だとVimが一番好きですが、Windowsだとメモ帳が一番早いし標準で搭載してるので好きです(笑)
まぁ本格的なプログラミングするのには、メモ帳では不十分ですよね。
せめて空白文字の視覚化機能があればなぁ…

Notepad++を使ってみる

f:id:zirconsoft:20171113002641p:plain
世界的にWindowsテキストエディターとして高いシェアがあるnotepad++をインストールしてみました。
実は今まで使ったことがなかったんですよね。
Notepad++は、notepad(メモ帳の英語コマンド)のインクリメント版?
かなり期待できます。

インストールの仕方

https://notepad-plus-plus.org/
64bit版のWindowsでも32bit版のNotepad++を入れたほうがいいかもしれません。
32bit版でも速度は快適だし、プラグインなども32bit版の方が対応が進んでいるみたいです。

ライセンス

notepad++のライセンスはGPLです。
notepad++という名前ですが、Microsoft製ではないみたいです。
テキストエディタでもMicrosoft製にこだわるならVisual Studio Codeがいいと思います。

Notepad++のいいところ

起動が速い

めちゃくちゃ軽いです。Visual Studio CodeだとPowerShellなどからコマンドで呼び出すとき、初回起動だとかなり時間を取られるのですが、Notepad++なら全く待たされることなく、すいすいとストレスなくコードが書き始められます。
テキストエディタの起動、停止をこまめに行うVimの感覚に慣れてしまっているのでこのスピード感はすごくいいです。

編集機能も爆速

自宅で軽いプログラミングを書いたり、ブログを書いたりするために使用しているひ弱なパソコンに入れて使ってみたのですが、テキストのシンタックス解析などもVisual Studio Codeに比べるとすごく速いです。

FTPクライアント機能

FTPクライアント機能を標準で装備しています。
コードを書くクライアントはWindowsでも、開発サーバはLinuxみたいなことよくありますよね。
そういうときにFTPクライアントを別に使用しなくていいです。
直接サーバで書いてる感覚でコーディングできます。

今後もメインとして使うかも

今回、さっさとインストールして使ってみましたが、なにより爆速で小回りが利くので、Windowsでの開発ではメインのテキストエディタになるかもしれません。
もう少しプログラムを書いてみて、自分用にカスタマイズしたら最高なテキストエディタになりそう。

余談

シンゴジラを家族で見ててたら、ブログを昨日中に書き終わりませんでした。
テレビ版で初めて見たので、すごかったです。

大問題!!WSLをつかえばWindowsでもBillをやっつけるゲームが動くぞ

XBillという過激なゲームを皆さんはご存じですか?

f:id:zirconsoft:20171111231325p:plain
Wingdowsというウイルスを入れてこようとするビルからシステムを防衛するというゲームです。
防衛するには画面内のビルをできるだけ早くクリックし、やっつける必要があります。
オープンソースソフトウェアでX Window Systemで動作します。

WSLでインストールしてみよう

aptパッケージ管理システムでインストールします。

sudo apt install xbill

起動するには、
xmingを起動した上で、コマンド

xbill

を実行するだけです。

インストールが面倒くさい人は動画で確認してください

www.youtube.com

どう見ても悪質なパロディです!

このゲームのビルのモデルは、絶対Microsoftの創業者のあの人だし、ウイルスという設定のWingdowsは完全にWindowsのスペルもじっただけです。
なにより、ビルをやっつける演出が過激すぎます。
こんな教育上よろしくないソフトが簡単にWindowsでインストールできてしまうなんて…

WSLをインストールしたら気をつけよう

Windows Subsystem for Windows(WSL)は、aptなどのパッケージ管理システムは、ウイルスソフトをインストールする危険性こそ少ないですが、このような過激で教育上よろしくないソフトウェアがインストールできてしまいます。
特にWindowsが好きでWSLを使用しているMicrosoftファンの皆さん、要注意です。
このようなソフトウェアがインストールされないようにMicrosoftは対策を打たないのでしょうか。
Microsoftさん、こんなことされてても「MicrosoftLinux」なんてのんきに言ってていいんですか?
f:id:zirconsoft:20171111235413p:plain
ちなみに、たぶんRHEL on Azureでも動かせると思います。ショボーン(´・ω・`)

WindowsでのLinux準拠環境まとめ

Windows 10でLinux?

Windows 10でLinuxのアプリケーションを動かすための環境についてまとめます。
ここで紹介するのは、必ずしも完全なLinuxではないです。
Linuxにある程度の互換性はありますが、それ自身ではないので、完全なLinuxを使いたい人は、LinuxのOSを普通にインストールした方がいいと思います。

WindowsシステムをLinuxに対応させる

WindowsのWin32APIの上でLinux準拠の環境を再現する方法です。

Cygwin

POSIX準拠のシステムコールをDLL(ダイナミックリンクライブラリ)によって再現し、その上にGCCUNIXの主要なコマンドを動作させる。
POSIXシステムコールをWindowsAPIに変換しているため動作は遅いが、POSIX準拠のため多くのソフトウェアを動作できる。
Windows上のGUIによるパッケージ管理システムとともにCUIでapt-cygというパッケージ管理システムがある。
オープンソースソフトウェアである。

MinGW

Cygwinから派生したソフトウェア。名前の由来はMinimalist GNU for WindowsWindowsのための最小構成のGNU)
WindowsGNUツール群を用いた開発をするためのソフトウェア。POSIXに準拠していない分、高速化を実現している。
POSIXに準拠していないとは、システムコールのreadやwriteを使えないということである。
GCCコンパイラやGit(分散バージョン管理システム)をWindowsで使用したいときに使用する。
オープンソースソフトウェアである。

Windows Subsystem for Linux(WSL)

Microsoftが開発したLinux互換のカーネルインターフェース。
Windows 10 Fall Creators Updateにより、Windows OSに組み込まれた。
公開されているWindows APIではなく、非公開のWindowsのOSの内部でLinuxカーネルを再現することにより高速化を実現している。
デーモンなどのバックグラウンドタスクは動作しないなど制限も多い。
ソフトウェアが対応しているかどうかは実際試してみないとわからない。
Windows StoreよりUbuntuSUSEFedoraディストリビューションがインストール可能である。
ディストリビューションオープンソースだが、それを動作させるインターフェースは、Windows内部のシステムなのでソースコードは非公開である。

ハードウェアシェア型

ハイパーバイザ技術による仮想化技術によって、すべてのゲストOSがハードウェアを共有し、完全なLinuxカーネルを動作させる。

Hyper-V

Microsoftの開発した仮想化システムとして有名なソフトウェア。
Windows ServerとWindows Client(x64版)のPro、Education、Enterpriseエディションで動作する。Homeエディションでは動作しない。
完全なLinux環境を用意することができ、様々なディストリビューションに対応している。

どれが一番いいのか?

Linuxとの互換性は、
Hyper-V > Cygwin > WSL > MinGW
の順番だと思います。
どれが一番良いかということはなく、

  • どのようなソフトウェアを動作させるのか?
  • どんな目的で使用するのか?

といった様々な使用条件をもとに検討するのがいいと思います。

Xamarinの仕組みを勉強したらiOSとAndroidの仕様を少し理解できた

少しだけXamarinの勉強してみました。
今日のブログは備忘録的な面が強いかもしれません。

『xamarin 仕組み』で検索

XamarinがどのようにiOSAndroidというクロスプラットフォームに対応しているのか気になって、
Bingで『xamarin 仕組み』で検索してみました。
すると次の良記事を発見!!
Xamarinの仕組み ( 超簡単バージョン ) | Developers.IO
Xamarin 2.0 | ++C++; // 未確認飛行 C ブログ
Xamarin.Androidの仕組みと、ソフトウェア構成 - Build Insider
Xamarin.iOSの仕組みとアプリケーションの構成 - Build Insider

クロスプラットフォームの仕組み、まとめ

Androidの場合

Android上でmonoVMと呼ばれる仮想マシーンを実行する。
JIT(Just-In-Time)での動作する。
C#はもともとJITで動作することを前提に作られているので、本来の力を発揮できる。
JITとは、中間コードを解読しながら動作する仕組み。
ちなみにC#スクリプト言語と違い、あらかじめプログラミング言語を中間コードにコンパイルすることで、高速化を実現している。
AndroidではJavaで作られたものと同じぐらい高速で、C#本来の力が発揮できるJITで動作できるが、
monoVMはアプリケーションと一緒にインストールする必要があるため、アプリケーションのファイルが大きくなりがちである。

iOSの場合

iOSの仕様上、VM及びJITでの動作は許可されていないため、事前に完全にコンパイルしないといけない。
そのため、iOS向けにはJITではなく、AOT(Ahead-Of-Time)でのコンパイルをmonoコンパイラによって行う。
AOTとは、プログラムを事前に完全に実行コードにコンパイルし、実行時は実行コードを直で実行する仕組み。
C#JITでの動作を想定して作られたため、AOTだとC#の機能を完全に利用することはできない。
たとえばDynamicsやジェネリックな virtual メソッドなど。

デメリットがありながらもXamarinを使う理由

かなりのコードを共通して、書き直すことなく再利用することができる。
HTML5ハイブリットアプリより高速だから。

エンタープライズ向けのアプリならCordovaの方がよいかも

Apache Cordovaは、Xamarinのようにクロスプラットフォームを実現する技術です。
CordovaはHtml5JavascriptCSSといったWebのフロントの技術で、スマホアプリを開発します。
オープンソースのCordovaにもMicrosoftがかなり出資をしているらしく、Visual StudioVisual Studio Codeでの開発も可能です。
エンタープライズ向けのアプリ開発にかなりの実績があります。
Onsen UIでモバイルアプリっぽくデザインすることで、スマホアプリらしい雰囲気を出すこともできます。

もっとクロスプラットフォームアプリ開発を勉強したい

今回Xamarinの勉強してみて、Androidの仕組み、iOSの仕組みを改めて理解をすることができました。
実際に開発してみたときの感覚や、さらに詳しいところで、クロスプラットフォーム開発について勉強したくなりました。
XamarinとCordova、近いうちにどちらも開発を試してみたいと思います。

今月の購入予定のマイクロソフト関連書籍

Azureテクノロジ入門2018

Azureテクノロジ入門 2018

Azureテクノロジ入門 2018

現在のAzureのサービスの全貌を把握するための本です。
過去に『Azureテクノロジ入門2016』というものが発売されていて、それが良かったので今回も購入したいと思います。
PostgreSQLやCustom Vision Serviceなどの新しい気になるサービスについても取り扱うということで楽しみです。
11月17日発売予定、たぶん2016年版同じくKindle版はなく、単行本版のみの発売になると思います。

MS新CEOが書いた本『Hit Refresh』

Hit Refresh(ヒット リフレッシュ)

Hit Refresh(ヒット リフレッシュ)

現在のマイクロソフトのCEO、サティア・ナデラさんが書いた本です。
すでにKindleで英語で購入し、途中まで読んではいるのですが、技術的な話題というより、サティア・ナデラさん自身について、そして今後のマイクロソフトの思想について語っている本です。
日本語版が出ると言うことで、どのくらい一般の人の興味を惹くかはわかりませんが、マイクロソフトが好きな人は読んでおくといい本だと思います。
こちらはKindle版があります。

Xamarin本もなにか買うかも

iPhoneAndroidにあまり興味ないので、Xamarinをやりたいという強い気持ちはないのですが、クロスプラットフォームアプリケーション開発をC#でどのように実現しているのかという点に結構興味があるので、1冊ぐらい解説本を買うかもしれません。

上のリンクはアソシエイトではないです

Amazonのアソシエイトプログラムに落ちました。
一応、応募してみたのですが、何らかの理由で落ちてしまったようです。
シンプル過ぎるブログデザインが問題なのかもしれません。
このブログまだ未完成に見えるのかも…
記事も増えてきたのでもう少し見やすい形にしようと思います。

VBAをマスターするにはオブジェクト指向の理解が必要

久しぶりにVBAを触ってみたら、以前書いたときとコーディングの感覚が大きく違っていたので、そのことを書きます。
f:id:zirconsoft:20171107141142j:plain

VBAとは

VBAVisual Basic for Applicationsの略で、MicrosoftExcelやWordなどのOffice製品で動作するマクロ言語という種類のプログラミング言語です。

C言語を習いたてのとき挫折したVBA

VBAを書いた一番最近の記憶は、大学一年生でC言語のプログラミングを習いたてだったころだと思います。
他の大学に通っている高校の時の友達が、大学でVBAを習っているという話を聞いて、自分も少しやってみようかなと思って少しだけ触ってすぐ挫折したのを思えています。
VBAの基本的な文法が、C言語と大きく異なること、そしてオブジェクト指向の考え方がまだよく理解できてなかったからだと思います。
オブジェクト指向を学習した今は、VBAを比較的、楽にプログラミングできるようになりました。

VBAオブジェクト指向

オブジェクト指向とは

オブジェクトを中心に考えるプログラミングの手法です。
説明するとかなり長くなってしまうので、詳しくはWikipediaを見てください。
オブジェクト指向プログラミング - Wikipedia

VBAはかなりオブジェクト指向な言語です

VBAオブジェクト指向型言語であるかということについては、細かいところで議論があるようですが、個人的にはVBAはかなりオブジェクト指向的なコーディングスタイルだと思います。
VBがオブジェクト指向言語でない理由 -一般的にVBはオブジェクト指向で- Visual Basic(VBA) | 教えて!goo
なのでオブジェクト指向でのプログラミングを一度経験しておいた方が、より理解を深められ簡単にVBAでコーディングできるようになると思います。
実際に自分もC#Javaオブジェクト指向を勉強した今の方がVBAでのコーディング能力が高くなっていると思います。

なんとなくこんなプログラムを書いてみました

Sub Macro1()
'
' Macro1 Macro
'
For i = 1 To 10
   Cells(i, 1).Value = i
Next
'
    Application.Goto Reference:="Macro1"
End Sub

セルA1からA10まで1から10を表示するプログラムなのですが、はじめfor文を次のように書いてしまったため
『実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。』と怒られてしまいました。

For i = 0 To 10
   Cells(i, 1).Value = i
Next

C言語の配列操作のためのfor文のように0から指定してしまっています。
そうです。ExcelにはA0というセルはありません。
ないはずのセルに代入をしろと言われ、Excelはエラーを吐いてました。
かなり初歩的なミスですが、新しくプログラミング言語を始めるときには、このようなちょっとした違いを覚えることが大事だと思います。
気づけて良かったです。

VBAを活用する

私が今、大学で書いているプログラムは、複雑で速度を求められるものが多く、VBAで書くという機会はほとんどないのですが、ビジネスと学問における統計の分野では、ExcelのマクロとしてVBA大活躍されているみたいです。
何かの機会があれば、VBA活用してより楽しくExcelやWordを使えたら良いなと思います。

ビルゲイツの年収をリアルタイムでシミュレーション?

今日は面白いサイトを見つけたので紹介します。
技術的な話題じゃないです。

ビル・ゲイツの時給がすごい

ビル・ゲイツ(Bill Gates)の時給は288000ドルです。
日本円にするとなんと
約3300万円
です。

ビル・ゲイツのリアルタイムの資産がわかる

www.live-counter.com

このサイトは、現在のビルゲイツの資産と、サイトにアクセスしてから稼いでるお金がわかります。
ちょっと放置しておくだけで、いつの間に数10万ドルも増えててすごいです。

稼いだお金は何に使われているの?

世界一のお金持ちビルゲイツ、これだけの金額を稼いで一体何に使っているのか多くの人が疑問に思うと思います。
ビル・ゲイツは、その妻メリンダ・ゲイツと慈善団体bill and melinda gates foundationを設立し、世界中の恵まれない人たちに寄付しています。
2017年8月に5040億を寄付しています。
この金額はビルゲイツの総資産のうち5%に当たるそうです。
ですが、世界中の1人ずつに約70円寄付しているわけですから、ものすごい額です。

今もMicrosoftの社長?

2017年、現在のマイクロソフトの社長はサティア・ナデラ(Satya Nadella)さんです。
3代目のCEOです。
ちなみに2代目CEOはスティーブ・バルマー(Steven Ballmer)さんです。

今後のビルゲイツの資産について

ビルゲイツは死ぬまで世界一のお金持ちであり続けるのでしょうか?
今後もビルゲイツのお金の使い方に世界中の市場が注目しています。