tekitoumemo’s diary

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

ubuntuで.net coreを動かしたらnuget動かんかったのでその対処とAngular追加

タイトルどおりです。なんにも動かんくなったので、対処法を書く。

まず以下のエラーが発生

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

おなじみのアセンブリエラーですが、.net coreは.net Frameworkと違ってbin配下にnugetライブラリが入りません。以下のコマンド打つとパスが表示されます。

saito@saito-Aspire-one-1-131:~$ dotnet --info
.NET コマンド ライン ツール (2.0.0)

Product Information:
 Version:            2.0.0
 Commit SHA-1 hash:  cdcd1928c9

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  16.04
 OS Platform: Linux
 RID:         ubuntu.16.04-x64
 Base Path:   /usr/share/dotnet/sdk/2.0.0/

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.0
  Build    : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d

パスが「/usr/share/dotnet/sdk/」なのでlsすると.Net Core1.0からいっぱい入ってました。ログ取るの忘れていたので「2.0」となってますが、本当はPreviewがはいってました

これが原因で、Nuget参照するときにどのバージョンでNugetを参照するかわかんなかったみたいです(これ予想なのであてにしないで下さい)

全部いらないんで、過去のバージョンをすべて削除

sudo apt remove dotnet*

全部なくなりました。次に.Net Core2.0をインストールします。以下の記事を参考に
kledgeb.blogspot.jp

これでdotnet new mvcdotnet restore、dotnet build、dotnet runをやってみて確認で完了。

次にAngularテンプレートを入れます。Windowsとちょっと違いました。

SPAテンプレートを取得

dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0-rc1-final

いろんな記事に「dotnet new --install Microsoft.AspNetCore.SpaTemplates::*」と書いてあるけど、ubuntuだと出来ませんでした。Windowsだと出来た気がするけど。
ログは出力されてReact、Vueなど様々なスキャフォールディングが使えます、超便利。

  Restoring packages for /home/saito/.templateengine/dotnetcli/v2.0.0/scratch/restore.csproj...
  Installing Microsoft.DotNet.Web.Spa.ProjectTemplates 2.0.0-rc1-final.
  Generating MSBuild file /home/saito/.templateengine/dotnetcli/v2.0.0/scratch/obj/restore.csproj.nuget.g.props.
  Generating MSBuild file /home/saito/.templateengine/dotnetcli/v2.0.0/scratch/obj/restore.csproj.nuget.g.targets.
  Restore completed in 3.7 sec for /home/saito/.templateengine/dotnetcli/v2.0.0/scratch/restore.csproj.


テンプレート                                            短い名前             言語                タグ                 
--------------------------------------------------------------------------------------------------------
Console Application                               console          [C#], F#, VB      Common/Console     
Class library                                     classlib         [C#], F#, VB      Common/Library     
Unit Test Project                                 mstest           [C#], F#, VB      Test/MSTest        
xUnit Test Project                                xunit            [C#], F#, VB      Test/xUnit         
ASP.NET Core Empty                                web              [C#], F#          Web/Empty          
ASP.NET Core Web App (Model-View-Controller)      mvc              [C#], F#          Web/MVC            
ASP.NET Core Web App                              razor            [C#]              Web/MVC/Razor Pages
ASP.NET Core with Angular                         angular          [C#]              Web/MVC/SPA        
ASP.NET Core with React.js                        react            [C#]              Web/MVC/SPA        
ASP.NET Core with React.js and Redux              reactredux       [C#]              Web/MVC/SPA        
ASP.NET Core Web API                              webapi           [C#], F#          Web/WebAPI         
global.json file                                  globaljson                         Config             
Nuget Config                                      nugetconfig                        Config             
Web Config                                        webconfig                          Config             
Solution File                                     sln                                Solution           
Razor Page                                        page                               Web/ASP.NET        
MVC ViewImports                                   viewimports                        Web/ASP.NET        
MVC ViewStart                                     viewstart                          Web/ASP.NET        


Examples:
    dotnet new mvc --auth Individual
    dotnet new mstest 
    dotnet new --help

これで以下のコマンド打てばAngularプロジェクトが完成。

mkdir test
cd test
dotnet new angular
npm i
dotnet restore
dotnet buld 
dotnet run

f:id:tekitoumemo:20180415223505p:plain

AzureにカスタムドメインとSSLを設定する

SSLやらなんやらやってきましたが、最終章です。
tekitoumemo.hatenablog.com
tekitoumemo.hatenablog.com
tekitoumemo.hatenablog.com

SSLやらドメインの取得をしたらAzure Portalへ移動します。

まずはSSLの登録をしましょう。

[SSL証明書]→[証明書のアップロード]を押下します。そしたら以下のような画面が表示されると思います。
f:id:tekitoumemo:20180412194330p:plain
前回、エクスポートした際に設定したパスワードを入力し、アップロードします。それでSSL証明書の設定は完了です。
次に、[カスタムドメイン]→[ホスト名の追加]をクリックします。SSL設定後の写真で申し訳ないですが、SSLが登録されていなかったら追加的な文字が出ます。
f:id:tekitoumemo:20180412195146p:plain
右側に表示されたテキストにお名前.comやらから取得したドメインを登録します。
f:id:tekitoumemo:20180412195655p:plain
f:id:tekitoumemo:20180412195708p:plain
ドメイン所有権のところでエラーになると思います。これが出たらドメインを取得したサイトの管理画面からDNSレコードを設定してあげます。
f:id:tekitoumemo:20180412195927p:plain
f:id:tekitoumemo:20180412195930p:plain
お名前.comだとこんな感じです。所有権の確認が出来るまで結構時間がかかります(5分〜1時間程度)
確認が完了すると[ホスト名の追加]が押下出来ると思います。
ホスト名の追加作業は終了です。

次にSSLの設定を行います。ドメインとアップロードしたSSL証明書を関連付けるだけです。
f:id:tekitoumemo:20180412193122p:plain

すべて完了したのでサイトを見に行きましょう!
f:id:tekitoumemo:20180412200722p:plain


ちなみにLet's Encryptは90日間すると期限が切れちゃうので定期的に更新しなければいけません。

SSL証明書のpemをpfxに変換する

前回の記事に続き、変換作業を行いました。AzureやWindowsServerを使ってるとpemで登録出来ないのでちょっとめんどい。

Let's Encrypt でワイルドカードSSLを取得する方法は以下を見て下さい。
tekitoumemo.hatenablog.com
tekitoumemo.hatenablog.com
失敗編、成功編と書いてますが、続編になってますのでどちらも見てもらえると良いかと思います。わかりにくいんで他の人の記事でもいいかも。

取得した証明書を確認します。取得したあとのログで「/etc/letsencrypt/live/ドメイン/」に置きまっせ!との表示がされると思います。

saito@saito-Aspire-one-1-131:~$ cd /etc/letsencrypt/live/mygkrnk.com/
bash: cd: /etc/letsencrypt/live/mygkrnk.com/: 許可がありません

はい。権限がありません。なのでliveディレクトリに権限を付与します。ちなみにcdはsudo出来ません。

sudo chmod 755 live

lsするとこんな感じになってます。

saito@saito-Aspire-one-1-131:/etc/letsencrypt/live/mygkrnk.com$ ls
README  cert.pem  chain.pem  fullchain.pem  privkey.pem

4つ証明書が入っていて、以下のような内訳です。

  • 証明書

/etc/letsencrypt/live/<ドメイン名>/cert.pem

  • 証明書+中間CA証明書

/etc/letsencrypt/live/<ドメイン名>/fullchain.pem

/etc/letsencrypt/live/<ドメイン名>/privkey.pem

  • 中間CA証明書

/etc/letsencrypt/live/<ドメイン名>/chain.pem

次にpfxに変換します。変換にはopensslを使います。ubuntuはデフォで入ってるので便利っすわ。

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out mygkrnk.pfx
  • inには変換対象のpemを指定します。全部入っているfullchain.pemが良いと思います。
  • inkeyは秘密鍵を指定します。今回はprivkey.pemですね。
  • outはエクスポートするファイルの名前を指定します。取得したドメイン名とかで良いんじゃないでしょうか。

次に以下のような表示がされます。

[sudo] saito のパスワード: 
Enter Export Password:
Verifying - Enter Export Password:

一行目の「[sudo] saito のパスワード: 」はいつものやつです。
二行目の「Enter Export Password:」エクスポート用のパスワードです。忘れないようにしましょう。
三行目の「Verifying - Enter Export Password:」は二行目の確認です。

しれっと変換が完了しているのでlsで確認します。

saito@saito-Aspire-one-1-131:/etc/letsencrypt/live/mygkrnk.com$ ls
README  cert.pem  chain.pem  fullchain.pem  mygkrnk.pfx  privkey.pem

「mygkrnk.pfx」出来ましたね!

以外に簡単でした。

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

よっしゃ!ワイルドカードSSLが取れた!

これでドメインが使えるので、やり方を紹介します。
作れないと困っている人がいたら以下のURLを確認してみて下さい。
tekitoumemo.hatenablog.com

やり方は前回書いたので、今回実施したことを記載します。

TXTタイプでDNSレコードを登録したら以下のコマンドを実行します。

dig -t txt _acme-challenge.xxxx.com

digコマンドはネームサーバーから情報を引き出すツールです。そうすると以下のような表示がされます。

saito@saito-Aspire-one-1-131:~$ dig -t txt _acme-challenge.xxxx.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t txt _acme-challenge.xxxx.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 11446
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;_acme-challenge.xxxx.com.	IN	TXT

;; AUTHORITY SECTION:
.xxxx.com.		300	IN	SOA	dns.jp. xxxx.dns.jp. 0000..

;; Query time: 9 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Apr 11 20:02:07 JST 2018
;; MSG SIZE  rcvd: 113

これはまだ登録されていないので以下の質問に答えちゃだめ(Enter押しちゃだめ)です。

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

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

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

しばらく経ってからdigコマンドを打つと以下のように表示されます。

saito@saito-Aspire-one-1-131:~$ dig -t txt _acme-challenge.xxxx.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t txt _acme-challenge.xxxx.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47846
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;_acme-challenge.xxxx.com.	IN	TXT

;; ANSWER SECTION:
_acme-challenge.xxxx.com. 3600 IN	TXT	"xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

;; AUTHORITY SECTION:
以下略...

以下の表記がされていればDNSレコードが登録されています。

;; ANSWER SECTION:
_acme-challenge.xxxx.com. 3600 IN	TXT	"xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

こちらが確認出来たら「Press Enter to Continue 」の指示通りEnterを押してやります。

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/xxxxxx.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/xxxxxx.com/privkey.pem
   Your cert will expire on 2018-07-10. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Congratulations!

証明書は「/etc/letsencrypt/live/xxxxxx.com/fullchain.pem」に置いてやったぜ!って書いてあるのでそこを参照して下さい。

追記:1日20回失敗するとアクセスできなくなります(笑)以下の記事に書いてありました。
Rate Limits - Let's Encrypt - Free SSL/TLS Certificates

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