dotNetConf 2015 Japan with JXUGに参加してきました

atnd.org

参加してきました。
セッション内容は以下が主な内容でした。

  • .NET 2015 の全体像
  • ASP.NET 5
  • NET Core 5
  • C# 6.0
  • Roslyn

どれも面白い内容でした。
特に竹原貴司(@takepara)さんのセッションは話し方が独特でものすごく引き込まれました(笑)

個人的に年明けにASP.NET vNextについてはちょこっと調べていたりしていましたが、今日聞いた限り、VS2015Previewのプロジェクト構成が変更されたり、プロダクト名が変更されたり、半年も経っていないのにまだ大きく動いているようです。

.NET 2015関連技術のセッションでしたが、すべて開発中のものが多く、まだどうなるかわからない感が強い印象がありました。
登壇者の方もそんな事を話されていて、どうなることやらと話されていました。 年内は厳しいのでしょうか。

Windows10リリース時点では.NET Framework 4.6にもならないのかな。。 VisualStudio2015が出るタイミングになりそうな気がします。

.NETでの開発をこれから始めるので、採用する技術についてもう少し将来性をウォッチしていきたいなと思います。

あとASP.NET5ではVisualBasicがサポートされないらしいのでオワコン感を感じました。ほとんどC#のみの話題でしたし。
ただRoslynでは対応しているみたいなのですぐ無くなることはないでしょうけども。

関連ツイートまとめられた内容はこちら togetter.com

.NET開発テクノロジ入門 2014年版 を読んだ

.NETは業務でASP.NETVisualBasicで利用していたけれど、バージョン4.0とかまでだったので最新技術をキャッチアップするために購入を決めて読んだ。

.NET開発テクノロジ入門 2014年版 VisualStudio2013対応版 (MSDNプログラミングシリーズ)

.NET開発テクノロジ入門 2014年版 VisualStudio2013対応版 (MSDNプログラミングシリーズ)

感想

ASP.NET MVC、Web APIがメインの内容だったと思う。 すでに1年近く前の本だけど、知っているところは復習になったし、知らないところはしれてよかった。

細かいレビューは後日書く。

自作PCを組む

WindowsのノートPCのバッテリーがだいぶヘタってきていたので、年末にMacBookPro with Retina 13inchを買って、快適な生活を送るようになったが、自宅にWindows機が稼働しなくなったため、新たに自作しようかと思う。

とはいえMacBookを購入したお陰でクレカの請求がすごいことになっているため、必要最低限で考える

■今考えているスペック
  • CPU : Core i5以上
  • マザーボード:こだわりなし
  • メインメモリ : 8GB以上
  • グラフィック: CPU統合グラフィック
  • ストレージ1:ノートPCに積んでいたSSD(OS入り)
  • ストレージ2:データ保存用にHDD
  • 安いPCケース
  • 電源:こだわりなし
  • モニタ:自宅にあるもの21インチ?

価格.comで調べてみる

まずはCPU

次にマザーボード

メインメモリ

ストレージ

とりあえずはなし ノートPCで使っていたSSDを移管予定

PCケース

電源

この記事を書いている時点では、合計約5万円。

うーん。

Microsoft.AspNet.Hostingについて

Max OS XでASP.NETを動かす - takeman's blogをやってみて気になって調べてみた

Windowsだと通常IIS上でローカルサイトを構築するんだけど、今回のMac上だとk webk kestrelコマンドでMicrosoft.AspNet.Hostingを利用してローカルサイトをホスティングしてるようだった。

Home/samples/HelloMvc/project.json

{
    "dependencies": {
        "Kestrel": "1.0.0-beta1",
        "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
        "Microsoft.AspNet.Hosting": "1.0.0-beta1",
        "Microsoft.AspNet.Mvc": "6.0.0-beta1",
        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta1"
    },
    "commands": {
        "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
        "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
    },
     "frameworks": {
        "aspnet50": {},
        "aspnetcore50": {}
  }
}

探したらやっぱりMicrosoft.AspNet.Hosting名前空間ソースコードgithubに置いてあった

aspnet/Hosting · GitHub

Main関数は今度じっくり読む

Hosting/Program.cs at dev · aspnet/Hosting · GitHub

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Framework.ConfigurationModel;
using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.DependencyInjection.Fallback;
using Microsoft.Framework.Logging;
using Microsoft.Framework.Runtime;
 
namespace Microsoft.AspNet.Hosting
{
    public class Program
    {
        private const string HostingIniFile = "Microsoft.AspNet.Hosting.ini";
 
        private readonly IServiceProvider _serviceProvider;
 
        public Program(IServiceProvider serviceProvider)
        {
            _serviceProvider = serviceProvider;
        }
 
 
 
        public void Main(string[] args)
        {
            var config = new Configuration();
            if (File.Exists(HostingIniFile))
            {
                config.AddIniFile(HostingIniFile);
            }
            config.AddEnvironmentVariables();
            config.AddCommandLine(args);
 
            var services = HostingServices.Create(_serviceProvider, config)
                .BuildServiceProvider();
 
            var appEnv = services.GetRequiredService<IApplicationEnvironment>();
            var hostingEnv = services.GetRequiredService<IHostingEnvironment>();
 
            var context = new HostingContext()
            {
                Services = services,
                Configuration = config,
                ServerName = config.Get("server"), // TODO: Key names
                ApplicationName = config.Get("app")  // TODO: Key names
                    ?? appEnv.ApplicationName,
                EnvironmentName = hostingEnv.EnvironmentName,
            };
 
            var engine = services.GetRequiredService<IHostingEngine>();
            var loggerFactory = services.GetRequiredService<ILoggerFactory>();
            var appShutdownService = _serviceProvider.GetRequiredService<IApplicationShutdown>();
            var shutdownHandle = new ManualResetEvent(false);
 
            var serverShutdown = engine.Start(context);
 
            appShutdownService.ShutdownRequested.Register(() =>
            {
                try
                {
                    serverShutdown.Dispose();
                }
                catch (Exception ex)
                {
                    var logger = loggerFactory.Create<Program>();
                    logger.WriteError("TODO: Dispose threw an exception", ex);
                }
                shutdownHandle.Set();
            });
 
            var ignored = Task.Run(() =>
            {
                Console.WriteLine("Started");
                Console.ReadLine();
                appShutdownService.RequestShutdown();
            });
 
            shutdownHandle.WaitOne();
        }
    }
}

TypeScriptを試す。

去年の初めにJavaScriptでちょっとしたプログラムを作っていて、TypeScriptにも目がいってしまったので試す。

試すにあたり結城浩先生のエントリが参考になった。

10分で試すTypeScript - 結城浩のはてな日記

TypeScriptを実行するまでの流れ

  1. node.jsをインストール
  2. 「npm install -g typescript」でTypeScriptのパッケージをインストール
  3. .tsファイルをコーディングして作成
  4. tsc ~.ts」を実行しjsファイルにコンパイル
  5. 「node ~.js」で実行
module Greeting{
    export class Hello{
        constructor(private text : string){
        }
        say() : void{
            console.log(this.text);
        }
    }
}
var hello : Greeting.Hello = new Greeting.Hello("Hello, World!");
hello.say();