WindowsのGUIアプリとして作りたいものがいくつかあって、
PythonのGUIライブラリを
いくつか(PyQtとかwxPythonとかKivyとか)試してみたけどしっくりこず、
やっぱりWindows用アプリを作るなら.NETじゃない?
ということでC#での開発について調べている。
今まで「Windows限定でVisualStudioがないと開発できないJavaみたいな言語」という、
汎用的じゃないイメージがあって避けていたのだけど、
調べてみると.NET CoreとかLinuxでも動作するCUIアプリを開発する仕組みもあって、
興味が湧いてきた。
新しい言語を学ぶならメイン言語にする価値があるものが良いので、
自分がプログラミング言語に求めることが一通りできるかどうか、調べてみた。
プログラミング言語に期待することは
個人的にプログラムを書く際によく利用している技術やライブラリを思い出しつつ、
簡単に実現できるようになっててほしいことを洗い出してみた:
- テキストエディタとシェル(コマンドプロンプト)で開発できること
- 実行環境の起動が遅くないこと
- サードパーティライブラリ管理機能があること
- サクッと作って実行可能なスクリプトが書けること
- リスト内包表記的なリスト処理ができること
- PostgreSQLに接続できること
- Excel操作できること
- SSH接続とトンネリングができること
- Webスクレイピングができること
- Web APIに接続できること
- Apacheで動作するWebアプリを開発できること
- データ分析・機械学習ができること
- iOS用アプリを開発できること
テキストエディタとシェル(コマンドプロンプト)で開発できること
ちょっとしたデータ変換がしたい時にIDEを起動せずにプログラムを書いて実行したい。
VisualStudio無しでビルドや実行ができるかな、と調べてみたら
「.NET Core SDK」で実現できるようになっていた。
これはJavaでいうJDK的なもので、VisualStudioに含まれているものを使うか、
下記のサイトからダウンロードして単体で使用することもできる。
インストールすると、下記のような感じでビルド・実行できる
コンソールアプリ用プロジェクトの作成
dotnet new console -o TestConsoleApp
プロジェクトをビルドする
dotnet build
プロジェクトを実行する
dotnet run
なんとLinuxやMac用のSDKもあり、クロスプラットフォームなアプリが開発できる。
サクッと作って実行可能なスクリプトが書けること
いちいちプロジェクトを作らず、
Pythonみたいにスクリプトを1つ書いて実行して終わり、
みたいな感じで使いたい。
ありました。C#スクリプト(.csx)
csiコマンドで実行できる。
実行環境の起動が遅くないこと
これはもう少し試してみないと分からない。
今のところ、そんなに速くないけど、そんなに遅くない感じ。
サードパーティライブラリ管理機能があること
PythonのpipやNode.jsのnpmみたいな、
サクッと必要なライブラリを導入して使える環境が欲しい。
あった。そりゃあるか。NuGet。何の略かは分からない。
VisualStudio経由でも、.NET Coreのdotnetコマンド経由でも使える。
dotnetコマンドは下記のように使用する。
dotnet add package パッケージ名
リスト内包表記的なリスト処理ができること
期待してなかったのだけど、できるっぽい。
var evens = from n in numList where n % 2 == 0 select n;
これはLINQのクエリ構文というもので、コレクションをSQL風に処理できるらしい。
まだ触ってないけど、これだけでC#好きになれそうな気がする。
PostgreSQLに接続できること
PostgreSQL好きなので、SQLServer以外にも接続できることを一応確認しておく。
できる。
Excel操作できること
マイクロソフト製なのだからネイティブな感じでできるだろう、
と思ったら、こちらのサードパーティ製のライブラリが使いやすいらしい。
SSH接続とトンネリングができること
DBを扱うような開発ツールを作る時用に、
SSHトンネリングができるかどうかを確認しておく。
あった。
Web APIに接続できること
HTTPクライアントライブラリはチェックしておかないと。
色々あるけど、HttpClientクラスを使うのがよさげ。
HttpClient クラス (System.Net.Http)
Webスクレイピングができること
この辺は、どの言語もいくつか選択肢があるイメージ。
最初に見つけたやつ。
Apacheで動作するWebアプリを開発できること
これはIISがあるので無理だろうと思ってたのだけど、
.NET Coreに ASP.NET Core というのが含まれていたので、調べてみたらできそう。
素晴らしい。
データ分析・機械学習ができること
検索してみると、Accord.NETというライブラリがよく利用されてるっぽい。
Introduction - Accord.NET Machine Learning in C#
iOS用アプリを開発できること
これも期待してなかったのだけど、
Xamarin.iOSで提供されてるSDKで開発できるみたい。
何でもできるな。
おわり
C#は思ってたより柔軟に書けるようになってるし、
クロスプラットフォームで開発できるし、
ということでかなり興味が湧いた。
起動速度とかは試してみないと分からないけど、
これでGUIアプリがほかの言語より簡単に作れるなら、
学ぶ価値ありそう。
- 作者: Bill Wagner,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2018/02/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る