つばろぐ

主に C#, .NET, Azure の備忘録です。たまに日記。

de:code2018で参加したセッションと公開スライド(随時更新)

f:id:tech-tsubaki:20180523132433j:plain

今年もde:code 2018に参加してきましたよっと。

https://www.microsoft.com/ja-jp/events/decode/2018/

参加したセッションと公開スライドを書いていく。

Day1(5/22)

Transforming Intelligence

www.youtube.com

日本の第一人者が語る! C# の現状と今後への展望 「.NET Core 2.x 時代の C#

www.slideshare.net

ワタシハ Azure Functions チョットデキル

www.slideshare.net

Day2 (5/23)

Rakutenのマルチリージョン対応ハイブリッドAPIゲートウェイ

(スライド未公開)

Serverless の世界を進化させるイノベーション - Durable Functions

(スライド未公開)

Microsoft 365 と Microsoft Azure で実現するサーバーレス業務アプリケーション

(スライド未公開)

DevOps エンジニアに送る ガチ Kubernetes 講座 with Azure Kubernetes Service (AKS)

www.slideshare.net

.NET Core ではじめる Cloud Native API Architecture ~ .NET Core + Entity Framework Core + AKS (Kubernetes) ~

(スライド未公開)

コンテンツ/文書をより探しやすくするための Search x AI - Cognitive Search -

(スライド未公開)


いずれも素晴らしいセッションでした。
セッションスライドは公開され次第、随時更新します。

娘の保育園入園を控えて、送り迎えを夫婦間で共有するLINE BotをC#で作ってみた

2歳半を過ぎた娘は4月から保育園に通います。
残念ながら認可保育園に落ちてしまったため、認可外の保育園に通うことになります。
(実はあと1回審査がある)
(3回目の審査も落ちてしまったので認可外決定です)

娘が保育園に通うとなると、平日の必須イベントとして保育園への送り迎えが発生することになります。
送り迎えは夫婦で協力して行うため、送り迎えが終わったことを相手にどのようにして伝えようかを考えてみました。

おそらく片手に娘、片手に娘の荷物という状況のため、いちいちスマホを開いてLINEで送るのはたぶん手間だろうと思い、もっと手軽にできる方法を考えました。
それがこちらのリポジトリです。

github.com

ちなみに、先日開催されたJXUG福岡もくもく会で、もくもくネタにさせて頂きました。

jxug.connpass.com

処理の流れ

  1. スマホからページにアクセスする。
  2. WebアプリケーションからLINE Messaging APIにリクエストを送る。
  3. LINE BotからグループLINEに送り迎えのメッセージを送る。

構成としてはこんな感じです。
単なるWebページであるため、ブラウザのブックマークをスマホのホーム画面に置いとくことで、手軽に通知を送れるようにしているという流れです。

f:id:tech-tsubaki:20180311224723p:plain

本当はハンズフリーにしたいため、Google Assistantを使って操作できるようにしたいですね。

参考

https://qiita.com/kenakamu/items/e0b194a82e4141b30c95qiita.com

github.com

github.com

GitLabで.NET Coreアプリケーションの継続的インテグレーションを行う

2018年2月23日(金)にFukuoka.NET #9を開催しました。参加して頂きました皆様、誠にありがとうございました。

fukuten.connpass.com

今回のふくてんでは、GitLabで.NET Coreアプリケーションの継続的インテグレーションを行う方法についてのセッションを行いました。
この記事では登壇内容について、解説と補足をしたいなと思います。

セッションスライド

セッションの内容だけ確認したい人はこちらをどうぞ。

www.slideshare.net

概要

GitホスティングサービスであるGitLabには、IssueやWikiの他、CI/CDやContainer Registryも備わっているため、GitLab単体でだいたい必要な機能が揃います。

GitLabのCI/CDの仕組み

  • パイプライン定義はYAMLで記述する。
  • パイプライン内の各ジョブはDockerコンテナで実行される。
  • リポジトリ内に.gitlab-ci.ymlがあれば、プッシュした際に自動実行される。

.NET Coreアプリケーションをビルドしてみる

リポジトリのファイル構成

コンソールアプリケーション

単純に「Hello World!」と出力するアプリケーションです。

単体テスト

簡単なクラスとxUnitの単体テストコードを用意します。

Dockerfile

gist9f660b4f6fd093133376042a5ba408f6

.gitlab-ci.yml

正しくビルド、テスト、コンテナイメージの登録ができているYAMLファイルはこちらになります。

GitLabで.NET Coreアプリケーションの継続的インテグレーションを行う

苦戦したこと

ビルドやテストはdotnetコマンドを使って処理させるだけなので、さほど難しいことはありませんでした。
ただ今回は.NET Coreのアプリケーションをコンテナイメージ化して、GitLabのContainer Registryに登録することをゴールにしていました。

GitLabのContainer Registryへの登録にはこちらのドキュメントを参考にしました。

gitlab.com

しかし何度試しても下記のエラーが起き、パイプラインに失敗しました。(ユーザー名とパスワードは加工しています)
理由としてはdockerコマンドが見つからないという原因です。

$ docker login registry.example.com -u {user} -p {password}
/bin/bash: line 62: docker: command not found
ERROR: Job failed: exit code 1

解決策

同僚でありGitLabに詳しい@morita92hiroに大事なポイントを教えてもらいました。
Container Registryに登録するジョブのブロックにてimage: docker:latestを記述し、Dockerを使うと定義しなければならないようでした。
その部分のジョブの定義だけ抜粋するとこちらになります。

job3:
  stage: push
  image: docker:latest
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
  script:
    - cd src
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker push "$CI_REGISTRY_IMAGE"
  only:
    - master

感想

ある程度、シェルスクリプトYAMLファイルが扱えるような人は、GitLabのCI/CDは使いやすいんじゃないでしょうか。
アプリケーションエンジニアな私としてはちょっと難しいので、Visual Studio Team Servicesを使ってGUIでパイプラインを構築するほうがやりやすいなと感じました。