tekitoumemo’s diary

思ったことを書くだけ。長文版Twitter

Let’s EncryptでワイルドカードSSL化に挑戦(失敗編)

先週、「みんなの洋楽ランキング」を作ったのでLet’s EncryptでワイルドカードSSLの取得に挑戦しました。が、、

失敗しました。

失敗したと言ってもまた挑戦出来るようなので、再度挑戦します。
「Azureドメインでいいじゃん」って思うこともあったのですが、まぁ、いろいろとやりたいことが出来ないんですよこれが(アフリエイトとかね

Let’s Encryptのワイルドカード化は結構いろんなサイトに載ってるので簡易的な感じで書きます。

環境 : Ubuntu16.04

※以下のコマンドはsudoをつけるように

certbot-autoコマンドを取得する

curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto

実行可能な権限に変更

chmod 700 /usr/bin/certbot-auto

実行

certbot-auto certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns-01 --domain example.com --domain *.example.com

パラメータの説明は以下参照
laboradian.com

僕の場合は、メールアドレスを指定してなかったので再度聞かれます。多分、使えるメールアドレスなら何でも大丈夫っす。

同意やらなんやらを「YES」で進むと以下のようなメッセージが出ます。

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

xxxxxxxxxxxxxxxxxxxxx

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

これはドメインDNSレコードにType「TXT」で登録してねってやつです。お名前.comではこんな感じで設定します。
f:id:tekitoumemo:20180409215721p:plain

登録が完了したらEnterで完了します。

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: mygkrnk.com
   Type:   unauthorized
   Detail: Incorrect TXT record
   "xxxx" found at
   _acme-challenge.example.com

   Domain: mygkrnk.com
   Type:   unauthorized
   Detail: Incorrect TXT record
   "xxxxx" found at
   _acme-challenge.example.com

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

はい、エラーが発生しました。不正なTXTレコードだと

失敗した要因としては、はじめのコマンドでドメインサブドメインの2つを指定していて、サブドメインに設定してなかったことが原因っぽいです(そもそもサブドメイン作ってないのに欲張り過ぎた)。気を取り直して再度挑戦しましたが、先ほど登録したDNSレコードがキャッシュのため完全になくなってないので、なくなるまで待たなければいけません。

f:id:tekitoumemo:20180409220432p:plain
レコードの設定情報のキャッシュ時間がなくなるまで待たなきゃです。今からやると寝れなくなるので明日までおあずけです。

さらにWindows Serverはpfxに変換しなければいけないので手間がかかります。

今週中に出来るかなぁ。。

フリーランスになるためにやったこと

3/31付で会社をやめました、長く働き過ぎた(3年

転職とかも考えたのですが

「転職して対して変わらん給料で特に学ぶことも変わらないなら意味なくね?」

と思ってフリーランスでしばらくは活動しようと思ったので、そこでいろいろやったのでここに書こうと思います。

会社に在籍中にクレジットカードを作りまくる

フリーランスになるとカード等の審査が通りにくくなるらしいので、とりあえずカードを作りまくりました。オリコ、三菱、みずほなど計5つぐらい作りました。

エージェントを使う

フリーランスと言っても仕事をもらえるほど人脈があるわけではないので、エージェントを使いました。エージェントに職務経歴書を見せて単価を決めれば勝手に面接の日程を設定してくれます。で適当に雑談したら仕事決まる感じです。ある程度、技術をキャッチアップしている人なら面談というより、技術共有で面談が終わるのでそこら辺は転職より楽だなぁと思いました。

エージェントに単価を交渉する

希望単価をある程度決めておいて提示した金額で交渉します。ちょっと多いかな?と思うぐらいの単価で交渉しても良いかもしれません。私の場合は、企業の予算と募集要項にどれだけマッチしているかを比較して、単価を出しました。60万の単価で募集要項に完全にマッチしてるのであれば、予算と同じ金額を提示しても良いと思います。

ポートフォリオを作る

これは正直いらないと思います。趣味でプログラムやるのが苦痛じゃなければ作ったほうが良い程度で、特に面談とかには影響しないと思います。ポートフォリオ作って問い合わせフォームとか作っていると「おっ?」ってなる問い合わせが増えたりするので普通に面白いですよ。
tekitoumemo.hatenablog.com
tekitoumemo.hatenablog.com
tekitoumemo.hatenablog.com

在籍中に使ったテクニックや学んだ知見をブログに書く

やったことの1割ぐらいしかかけてない気がしますが、自分の身の回りの整理をしながら盗んでいくのは良かったなと思いました。これとかね↓
tekitoumemo.hatenablog.com
Gihubのお金を払うからアカウント消さないでほしいなぁ。

厚生年金から国民年金への切り替え

市役所行くとめっちゃガラガラなので一瞬で終わります。1万6千ぐらい払って下さいって言われます。

個人事業の開業届出書

税務署で開業届けを出します。正直なにも準備していかなくてよいです。なぜなら税務署の人はめっちゃ親切で、なにも準備しなくても一からおしえてくれますし、聞いてないことも教えてくれます。準備するのは屋号ぐらいでしょうか、ここは空欄でも良いので私は空欄にしました。

青色申告承認申請書

これも税務署で提出します。ここもなーんにも準備しなくても問題ないです。なんでこんなに親切なんだ?

会社の健康保険から国民健康保健への切り替え

市役所でやればよいのですが、会社員であれば任意継続というものが使えます。どのようなことかというと、在籍していた会社の健康保険に2年間は継続で入れるという仕組みです。IT健保は結構良いみたいなので、一応入りました。IT健保の人は全然親切じゃないです。

退職金の精算

退職金があったので精算を行いました。マイナンバーが必要でマイナンバーの住所変更と住民票のひも付けで完了です。わりと楽でした。前前職の会社は確定拠出年金というのをやっていて同時に精算手続きを行いました。確定拠出年金は退職金じゃなくて年金なのでめっちゃめんどいです。

会社員だと少ない給料で学習コストを割いていかなければならなかったので、ここらへんが回せるのは非常に良いと思います。

わりとまじめにサービスを作った

f:id:tekitoumemo:20180404002131p:plain
ずっとWEBサービスを作りたいと思っていて、時間やアイデアなどなかなか思い浮かばなくてずっとやらずにいましたがもう諦めついて

「趣味をWEBサービスにしちゃおう!」

と思いわりとまじめに作りました。それがこちらです。

mygkrnk.com

みんなの洋楽ランキングは最新の洋楽ランキングの情報を発信している。気になる曲のランキングや内容。アーティストの情報など詳しく載せている。洋楽の初心者から上級者まで楽しめる。Youtubeのランキングや再生回数などから最新洋楽ランキングを見れる

「みんなの洋楽ランキング」とは

ビルボードランキングを通じて洋楽を身近に感じるようなサービスです。洋楽の情報は散乱していて、個人のブログがメインなので、もう少しまとまっててもよいのかなぁと思いますし、日本で流れている洋楽は外国でヒットしてから半年〜1年前のものが多く、ちょっと出遅れている感が否めないのでとっつきやすくわかりやすいサイトがあると良いと思いました。今現在、Youtubeと同じぐらいに強力なメディアとされているSpotify VIRAL Top 50の日本ランキングにエド・シーランの「Shape Of You」が2位になるなど、日本国内でも洋楽はメジャーな音楽になっていることがわかります。 
spotifycharts.com

作った技術について

C# 7.0
.Net Framework 4.7(大失敗)
Azure Web Service
Azure Database
Jquery
BootStrap
API Reference  |  YouTube Data API (v3)  |  Google Developers

基本は.Net Frameworkベースの技術で、WEBサーバーなどははPaasであるAzureを選定しました。ここらへんは他の記事で深く書こうと思っているので深くは書きません。

このサービスでこだわったところ、こだわり続けたいと思っているところ

「洋楽」のキーワードを軸に

サービスを作る上で、そのサービスがどうあるべきか、どうなったらよいかを考えるのは非常に重要だと思います。このサイトは日本の洋楽情報をまとめたプラットフォームとして成り立たせることを目的としているのでこの軸は絶対にずらさないようにしたいと考えています。SEOでも、ここの軸がずれると大幅に順位を下げたりするので一番大切なことかなと思っています。

会員登録などのユーザー操作が複雑な改善は極力しない

「みんなの洋楽ランキング」はメディアサービスなので、会員登録などのフローは入れない予定でいきます。ここは僕の勝手な考えですが、会員事業というものはここ数年で流行らなくなるなっている気がします。前職で自社サービスを運用していましたが、ただでさえ流入を増やすのが難しいのにさらにメールアドレスを用意させ、登録させ、本人確認させるというフローはサービスに対して本気でなければやらないので、メディアサービスとして展開するのであれば絶対にいらない機能だと思います。以下の記事を書いた子は大学生なのに的確なことを記事にしていて納得させられました。
www.eggineer.info

更新し続けられるように仕組み

洋楽のランキングは1週間でほとんど入れ替わりがないので、比較的更新するのが楽です。外出先でも、ちゃちゃっと更新出来るような仕組みを作りました。デザインはダサい(ユーザーに見られないから問題ない)ですが、曲名はプルダウンで設定でき、ランキングの数値は自動で付与されます。ランキング自体は1分程度で更新出来ていますので、良かったかなと思います。
f:id:tekitoumemo:20180404010308p:plain
さらにこの紹介ページの文章など、通勤時間にググったことを書き溜めて登録すれば反映されるので非常に楽です。最近は書くのすらめんどくさくなっちゃったので、iPhoneのマイクを使って文章化しています。
f:id:tekitoumemo:20180404011302p:plain

めんどくさいところは究極に手を抜く

私の場合はインフラやデザインは得意でなく、好きでもないので究極に手を抜きます。プログラムの部分は時間をかけて、他はお金で解決するか仕組みを持ってきて改善するか心がけます。Azureは本当に楽で全く苦労せずにデプロイまで持ってこれました。お金はかかりますが、状況見てスケールアップするなど、かかる費用をコントロール出来るのも最高です。VPSも考えましたが、今の需要はVPS<Paasになっていますので学習コストと考えればかかる費用もそんなに気にならないと思います。貧乏暇なしというのはこういうことだったんですね。まぁそこまで高くないですよ。
f:id:tekitoumemo:20180404013200p:plain
Railsが個人サービスの記事に取り上げられている理由の一つがHerokuでGithubにデプロイしたらリリース出来るので、Web系の手軽さが良いのだと思います。

どのぐらいの期間で作ったか

思い立ってから3ヶ月ちょっと程度かかりました。実際は、仕事探したり、式の準備したり、フリーソフトの業務提携したりなどなかなか忙しい日々を過ごしていたので週に2日1時間ぐらいの時間しか取れていませんでした。Github Insightが物語ってます。
f:id:tekitoumemo:20180404014429p:plain
2月から3月頭が一番忙しかったので、ほぼいじれてないことがわかりますね。Github Insightは誰がどのぐらい貢献したかの度合いなので、偉い人は評価の1つとして見ても良いかなと思いました。前職では、一番若い女の子がダントツで一位でしたよ。

失敗したこと

Windowsでしか開発出来ない環境を作ってしまった。

.NetCoreにすればLinuxでもMacでも開発出来ますし、Ngixで動いているのでAzureじゃなくてもよいです。.NetFrameworkの選定はミスったなぁと思いました。今は一人でこもってられる時間がそんなにないので、リビングでテラスハウス見ながら開発出来る仕組みを作らなければいけないと思っています。これは5月までに改善したい。

独自ドメインSSL化が、、、

独自ドメインも買いまして、いざワイルドカードSSL化をするために「Let's Encrypt」を使って試したのですが、アクセス権のエラーに悩まされました。Azureドメインでも運用出来るので、暇があったら再度トライしようかな程度になってしまった。。ワイルドカードSSLは高いので、ちょっと買えません。
letsencrypt.org

ステージング環境とデプロイ環境の区別ができていない

Azure Web ServceのデプロイはVisualStudioからやっているので、開発してユニットテスト(XUnit)が成功したらデプロイしています。問題なさそうに見えますが、切り替えるのが面倒で開発中もAzure Databaseに接続しているのでいつか絶対事故が起こります。うまく同期を取って運用出来る仕組みを考えなきゃです。

meta ogとTwitter Cardのキャプチャ画像が同じ

どこかに添付する際に必要なogタグとTwtter Cardですが、マスタに固定で指定しているのですべて同じ画像が表示されてしまう仕様にしてしまいました。
f:id:tekitoumemo:20180404021941p:plain
全部同じ画像。。Botみたいになっている。ここは早急に改善すべきだと思っています。

これからどうしていくか

このサイトは1年間の事業投資(自分への投資)として運用していくので、目標を決めてそれが達成出来なければ閉鎖しようと考えています。予算(自分の懐)と相談し、ライターさんを雇ったり、広告を出すことも視野に入れています(ライターさんに関しては、少し動いています。)また、目標ばかりとらわれず「やらなきゃいけないこと」、「数値を増やしていくための改善」はしっかりと線引きをしていく必要があると考えています。どういうことかというと、TwitterCardの例ではキャプチャが同じなので流入が見込めないという課題は「数値を増やしていくための改善」でコンテンツを増やすための運用改善は「やらなきゃいけないこと」です。2つを比較するとTwitterCardを改善したほうが効果が出そうと考えられますが、駆け出しのサービスはまだコンテンツも少なく地盤を整える必要があるので運用の改善を早急にすすめる必要があると考えます。

最後に

「わりとまじめにサービスを作った」というタイトルなので、わりとまじめに偉そうに記事を書きましたが実際はイラストのようにお菓子食べながらYoutubeで新曲を聞きながら適当に作りました。モチベーションが一番重要なので、はじめはいい感じに気合を入れずに作っても良いかもしれませんね。
f:id:tekitoumemo:20180404024834p:plain

あ、良かったらシェアして下さい(切実)
twitter.com

MacMiniでデュアルディスプレイが最強すぎた

私は今までMacMiniの2014年モデルをBenQのディスプレイに繋いでプログラミングやらやってました。
これ↓

APPLE Mac mini (1.4GHz Dual Core i5/4GB/500GB/Intel HD 5000) MGEM2J/A

APPLE Mac mini (1.4GHz Dual Core i5/4GB/500GB/Intel HD 5000) MGEM2J/A

BenQ モニター ディスプレイ GW2270HM 21.5インチ/フルHD/AMVA+/HDMI,VGA,DVI端子

BenQ モニター ディスプレイ GW2270HM 21.5インチ/フルHD/AMVA+/HDMI,VGA,DVI端子

キーボードもリアルフォースを使ってなかなか良い環境だなと思ってたんですが、家より会社の方が作業が捗ると感じていたのですがなんか微妙だなと思っていました。このキーボードは最高↓
東プレ NG01B0 REALFORCE91UBK

東プレ NG01B0 REALFORCE91UBK

二万近く出してディスプレイを買うほどかなぁと思っていたら友人が24インチのBenqディスプレイいらねーからやるよと言われたので即答でもらって設置。

最高だわ、MacC#環境ないのでWindowsですが。手前のアームレストは自作でぶっちゃけかっこつけです。

あとMacMiniデュアルディスプレイにするにはこいつが必要です。

これでしばらくは引きこもれそうです。

【Azure】インメモリ OLTPのセッション管理がBasicプランで使えなかった

tekitoumemo.hatenablog.com
以前書いた記事でインメモリOLTPのセッション管理を説明しました。

Azureにデプロイしたら以下のエラーが発生しました。

Unable to connect to SQL Server In-Memory session database.
   at Microsoft.Web.SessionState.SqlStore.SqlExecuteReaderWithRetry(SqlCommand cmd, CommandBehavior cmdBehavior)
...

SQL Serverのメモリ内セッションに接続出来ませんとのこと。昨日に記事に書いたIPアドレスや、セキュリティの問題かと思いBasicプランのhttpsで接続を試みると..

Unable to connect to SQL Server In-Memory session database.
...

エラーメッセージがわかりにく杉。エラー内容をいろいろ調べると以下の記事を発見。

azure.microsoft.com
AzureのPremiumプランからしか使えないらしい。。Premiumの最低プランでも5万以上するので普通に無理でした。
マネージインスタンス、エラスティクプールなどは使えるらしい。

諦めて普通にCookieセッションに変えました。

【.NET Core, Azure SQL Server】ubuntuを使って.NET CoreでAzure Databaseを扱う

前回は.NET Coreをubuntuで動かすものを記事にしました。今回はubuntu上で.NET Coreを使ってAzure Databaseを動かせるかという検証です。ubuntuに.NET Coreを動かす場合は以下を参考にしてください。
tekitoumemo.hatenablog.com

僕の持ってるサブPCはポンコツSQL Serverを入れたらパンクしちゃいます。メモリが3.25G以上が推奨ってもう無理じゃん。。
tekitoumemo.hatenablog.com
qiita.com


AzureDatabaseで動かして開発できたらポンコツPCでもなにかと使える!と思って検証しました。また、ubuntu上でAzure SQL Serverを動かすにはどんな作業が必要なのかの検証も含め、実施しました。結果

楽勝でした

はい。

Azure Databaseを作成します。

[SQLデータベース]をクリック→[SQLデータベースの作成]をクリック
f:id:tekitoumemo:20180322004602p:plain

必要な情報を入力します。

これらは任意の情報を入力してください。

  • サーバー

Azure SQL Serverはデータベースのサーバーを構築しなければいけないのでこちらの設定を行います。
こちらも任意の情報を入力してください。
f:id:tekitoumemo:20180322005319p:plain

  • SQLエラスティックプール

こちらは大規模なDBでスケーリングするときの予算や規模の設定が出来ます。今回は検証なので「いいえ」にしておきます。

  • 価格レベル

超知りたいところですね。SingleDatabaseだとBasic、Standard、Preniumの3つがあるので、今回はBasicにします。2G使えて、東日本リージョンで月額600円代です。Standardの250Gが使えるプランでも月額1800円程度なのでめっちゃ安いです。以下の計算ツールで計算出来ます。
azure.microsoft.com

これらの情報を入力したら作成します。ものの5分で作成出来ます。

.Net Coreの準備をします。

今回はEntity Framework Coreを使います。めっちゃ雑ですが、Githubにサンプルを載っけてるので参考になればと思います。
github.com

onConfigメソッドを作成します。
using Microsoft.EntityFrameworkCore;
using System.Data.SqlClient;

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
            // 接続文字列を指定する
            var connectionString = "";
            optionsBuilder.UseSqlServer(connectionString);
}

Nugetから「Microsoft.EntityFrameworkCore」、「System.Data.SqlClient」をインストールして下さい。接続文字列はAzure Portalに記載されています。真っ赤にぬりつぶされたところに記載されています。
f:id:tekitoumemo:20180322012402p:plain

モデルとモデルをマッピングする処理を記載します。
public DbSet<Test> _test { get; set; }
public class Test
{
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime CreateTime { get; set; }
        public Nullable<DateTime> UpdateTime { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
        // テーブルにマッピングする
        modelBuilder.Entity<Test>().ToTable("Test");
}

modelBuilder.Entityにジェネリックでモデルを指定し、ToTableの引数にテーブル名を指定します。その他、モデルクラスとプロパティを設定します。

呼び出しの実装を行います。
using (var dbContext = new AppDbContext())
{
        var test = dbContext._test.ToList(); 
}

これで一通り完成です。

それではVSCodeデバッグしてみます。
f:id:tekitoumemo:20180322013803p:plain
例外が発生しました。このIPアドレスは接続出来ないよ!ってエラーです。Azure Databaseではファイアウォールが設定されているので接続するIPを除外してあげなければいけません。

ファイアウォールの設定を行います。
f:id:tekitoumemo:20180322014403p:plain
[概要]→[サーバーファイアウォールの設定]をクリックします。
f:id:tekitoumemo:20180322014642p:plain
[クライアントIPの追加]を押下します。先ほどアクセスしたので、そのまま設定が出来ます。もちろん、手動で入力することも出来ます。

設定が完了したら再度、接続してみます。
f:id:tekitoumemo:20180322015133p:plain
ちゃんとデータが取れました!

これで、ubuntu上で.Net Coreの開発がまともにできるようになりました。やっとこれでリビングで寝っ転がりながら開発ができる!

【.Net Core 2.0,Ubuntu】Ubuntu16.04でASP.NET MVCを動してみた

f:id:tekitoumemo:20180317184532p:plain
Ubuntu 16.04を入れたので、.NET Coreを入れて動かしてみました。結構、いろんな記事みて理解しながらやったので、まとめます。

.NET Coreを入れる

パッケージのダウンロード。今回は「.NET Core 2.1.0-preview1 」を入れます。

wget -q packages-microsoft-prod.deb https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb

パッケージのダウンロード

sudo dpkg -i packages-microsoft-prod.deb

apt-transport-httpsのインストール

sudo apt-get install apt-transport-https

アップデート

sudo apt-get update

.Net Core 2.0のインストール

sudo apt-get install dotnet-sdk-2.1.300-preview1-008174

Consoleアプリのビルドと実行

mkdir test
cd test
dotnet new
dotnet restore
dotnet run

// 出力
// HelloWorld

一旦、NetCoreが動く環境になりましたが、MVCやSPAを作りたいので他に環境を作らなけばいけません。ちなみにここまでは以下の記事を参考にしました。めっちゃわかりやすい!
kledgeb.blogspot.jp

Nodeの環境を構築

NPMを入れる

sudo apt-get install npm

NPMを最新版にする

sudo npm install -g npm

NVMを入れる

$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh

NVMのバージョンリストを確認。

nvm ls-remote

以下のような感じでバージョン情報がズラッと並びます。私はLTSの最新であるv8.10.0を入れました。

         v8.9.0   (LTS: Carbon)
         v8.9.1   (LTS: Carbon)
         v8.9.2   (LTS: Carbon)
         v8.9.3   (LTS: Carbon)
         v8.9.4   (LTS: Carbon)
        v8.10.0   (Latest LTS: Carbon)
         v9.0.0
         v9.1.0
         v9.2.0
         v9.2.1
         v9.3.0
         v9.4.0
         v9.5.0
         v9.6.0
         v9.6.1
         v9.7.0
         v9.7.1
         v9.8.0

デフォルトのバージョンを指定

nvm alias default v8.10.0

NVMは入れたほうが便利です。以下を参考にしました。
qiita.com

Yeomanインストール

sudo npm install -g yo

僕は間違えて古いnodeを入れていたので以下のエラーが発生しました。

saito@saito-Aspire-one-1-131:~$ sudo npm install -g yo
[sudo] saito のパスワード: 
ERROR: npm is known not to run on Node.js v4.2.6
Node.js 4 is supported but the specific version you're running has
a bug known to break npm. Please update to at least 4.7.0 to use this
version of npm. You can find the latest release of Node.js at https://nodejs.org/
sudo apt install git

このエラーは古いバージョンは動かないよってやつで、nvmでバージョンを新しくしても発生するのでバッサリ削除して入れなおしました。以下を見ました。
stackoverflow.com

sudo apt remove nodejs npm
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

ASP.Net Generatorをインストール

sudo npm install -g generator-aspnet

bowerをインストール

sudo npm install -g bower

.NET Coreに必要なものをひたすら入れる。片っ端から入れるので5Gぐらいは減ります。

sudo apt-get install dotnet-dev*

ここまでで一通りの環境構築は出来ました!

MVCを動かす

テンプレートの作成

mkdir test

cd test

yo aspnet mvc

ここでログを取り忘れちゃったんですが、コマンドがない!とのエラーが出ます。権限のエラーなので以下を実行します。わかりにくいエラーやな。

sudo chmod -R 777 ~/.config/".

再度作成し、プロジェクトの実行を行います。

yo aspnet mvc

やったー!
f:id:tekitoumemo:20180317210949p:plain

あとはnuget取って実行します。

dotnet restore
dotnet run

http://localhost:5000/にアクセスして完成しました。
f:id:tekitoumemo:20180317211225p:plain
以下がめっちゃ参考になりました。
blankstechblog.com

VSCodeデバッグする

VSCodeデバッグは以下を参照。
ytabuchi.hatenablog.com
VSCodeデバッグする際に以下のエラーが発生しました。

OmniSharp.MSBuild.ProjectManager Failed to load project ..

このエラーはOmniSharpが読み込めませんとのエラーのようで、ubuntuではmonoで動いているのでmonoを入れて対応します。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt-get update
apt-get install mono-devel

monoのバージョン等は以下から取得してください。
Download - Stable | Mono
この記事が参考になりました。
github.com

これで開発環境が完成しました。
f:id:tekitoumemo:20180317222902p:plain
やったね!

あとはどのぐらいこの環境で不便があるか触りながら開発してみようと思います。