C# LINE Bot development with Azure Function for cross-platform

Serverless and bot are buzz words these days. But when you say bot in some countries like Taiwan, Korea, Japan, many people think about LINE as its platform. In this article, I explain how you can jump start developing LINE bot using Microsoft technologies and host the app on Function App at the end. Prerequisites… Read more

Git と Visual Studio 2017 その 16 : 不具合の追跡

前回の記事ではローカルコミットの修正について説明しました。今回は問題が発生した場合に、いつ、だれがどのコードを書いたのかを調べる方法を見ていきます。 一人で開発していると、問題が発生した場合どのあたりで問題が発生したか見当がつきます。しかしチームが大きくなり、また問題の発見が遅くなると、どこで問題が発生したか特定が困難です。どうすれば問題を簡単に特定できるか?もちろんユニットテスト作っておけばいいのですが、それはまた別の機会に。 ファイルの編集者と日時を特定する : Git 今回は ”編集 2” が README.md に追加された日時と作業者を探してみます。 1. ‘type README.md’ と ‘git log –oneline –graph –all’ を実行して現在の状況を確認。 2. コミットコメントが正しく書かれているとこの時点推測可能。‘git diff 7a2aecf 65bf5d5 README.md’ を実行して変更点を確認。これで問題解決とすると記事が終わるので他の方法も検討。 3. ‘git blame README.md’ を実行。blame コマンドはファイルの変更者、日時および変更点を表示。 log コマンドとは異なり、古い順に表示。 4. ‘git blame -L 5, 5 README.md’ を実行。L オプションを付けることで対象の行を指定。この場合 5 行目から 5 行目を指定しているため実質現在の 5 行目がいつ変更されたかを検索。 5. blame コマンドはファイル名が変更された場合も追跡可能。‘git mv… Read more

Git と Visual Studio 2017 その 15 : ローカルコミットの修正

前回の記事ではソリューションをリモートに共有後、コミットを取り消す方法を説明しました。今回はプッシュする前にローカルのコミットを修正する方法を見ていきます。 コミットの修正 : Git 既に –amend オプションで最新のコミットにアイテムを追加したりコメントを修正する方法は説明しました。しかし 1 つのコミットを複数に分割したり、複数のコミットを 1 つのコミットにまとめるといった高度な修正はどうやるのでしょうか。早速見ていきましょう。 複数のコミットを 1 つにまとめる (squash) 1. ‘git log –oneline –graph –all’ で現在の状況を確認。ローカルには master と dev 、リモート追跡ブランチとして master が存在。 2. ‘echo “編集 1” >>README.md’ and ‘git commit -am “編集 1 を追加”’ を実行して master ブランチでコミットを追加。 3. 同様にもう 2 つコミットを追加。 4. ‘git log –oneline –graph –all’ を実行して履歴を確認。 5…. Read more

Git と Visual Studio 2017 その 14 : リモートにプッシュ後のコミットの修正

前回の記事では、Visual Studio 2017 によるアイテムの比較を紹介しました。今回はすでにリモートにプッシュ済みのコミットを修正する方法を見ていきます。 リセットと取り消し これまでに リセット (reset) を本シリーズでは何度も使ってきましたが、リモートのプッシュしたものは修正する場合、 リセットすべきではありません。理由は他の人が既にクローンしていた場合、履歴の内容が異なるためです。そこで取り消し (revert) の出番です。 取り消し : Git 1. まず ‘git log –oneline –graph –all’ で現状確認。ブランチが 2 つあるが、リモートはない。ただし revert にリモートは必須ではないため、今回はこのまま。 2. ‘echo “間違った情報” >> README.md’ を実行てから ‘git commit -am “間違ったコミット”’ でコミット実行。再度 ‘git log –oneline –graph –all’ で状況確認。 3. 仮にこの状態でプッシュした場合、最後のコミットを取り消すには revert コマンドを利用。‘git revert –no-edit HEAD’ を実行して HEAD を取り消し。–no-edit オプションを付けるとコメント編集をスキップできる。取り消し実行後… Read more

Git と Visual Studio 2017 その 13 : Visual Studio によるアイテムの比較

前回の記事では Git でアイテムの比較を行いました。今回は Visual Studio 2017 の機能を見ていきます。 アイテムの比較 : VS Visual Studio 2017 では Git で行えるアイテム比較のうちよく使うものが GUI でサポートされているほか、独自の機能も実装されています。 二つのコミットの比較 1. チームエクスプローラー | 変更 | アクション | 履歴の表示を開きます。 2. 1 つ目と3 つ目のコミットを選択し、右クリックから ”コミットの比較” をクリックします。 3. コミットの比較ウィンドウが開き、比較結果が表示されます。 4. 変更セクションにある README.md をダブルクリックすると差分が表示されます。Git でも ‘git difftool HEAD~1 HEAD README.md’ を実行すると同じ画面が開きます。前回記事で発覚した通り、ファイルのエンコードが異なりますが、その旨も表示されています。 5. 差分の比較などは GUI ツールである VS の遥かに容易ですが、Git は stat など様々なオプションを提供するため必要に応じて使い分けします。… Read more

Git と Visual Studio 2017 その 12 : Git によるアイテムの比較

前回の記事では構成について触れました。今回は Git におけるアイテムの比較について見ていきます。Visual Studio については次回。 アイテムの比較 : Git Git では diff コマンドを使ってアイテムの差分を確認できます。比較対象は、例えば 2 つのコミット間やステージングエリアのアイテムと作業ディレクトリのアイテム、またはブランチ間の差異などです。また、1 つのファイルを比較することも、ディレクトリごと比較することもできます。早速やってみましょう。 2 つのコミットを比較 1. まず ‘git log –oneline –graph –all’ を実行して現状の確認。第 10 回の記事の最後で、リモートより dev ブランチをチェックアウトし忘れた模様。 2. ‘git diff HEAD~1 HEAD’ を実行。HEAD は現在のブランチがポイントするコミット e45a3c6 を示し、HEAD~1  は直前の c69d3e9 コミットを示すため、これらの差分が表示。ただし文字化けしている。README.md はもともと GitHub で作成されたため README.md は UTF-8 で作成されているが、コミット 5c96d7c を行った際、’echo “文字列” >> README.md’ で文字列を追加したため、その部分だけ SJIS… Read more

Git と Visual Studio 2017 その 11 : 構成

前回の記事では、Visual Studio 2017 を使ったソリューションの共有を説明しました。今回は Git の構成について見ていきます。Git は構成を変更することで様々な動作を変更出来ます。 構成のスコープ Git の構成には 3 つのスコープがあります。より狭いスコープの設定が最終的に適用されます。 システム: 同じ PC を使うすべてのユーザーに適用 グローバル: 特定のユーザーのすべてのレポジトリに適用 ローカル: 特定のレポジトリにのみ適用 ‘git config’ コマンドで構成を操作しますが、スコープの指定をしない場合はローカルの構成が変更されます。詳細はこちら。 構成 : Git まず Git における構成を見ていきましょう。 1. ‘git config -l’ を実行して全スコープから現在の構成を表示。 2. ‘git config –local -l’ を実行してローカルスコープの設定を取得。 3. ‘git config user.name’ を実行して現在のユーザー名を表示。 4. ‘git config user.name <yourname>’ を実行してユーザー名を設定。スコープの指定を省略しているため、ローカルスコープで設定。グローバルスコープで設定したい場合は、‘git config –global user.name <yourname>’… Read more

Git と Visual Studio 2017 その 10 : VS でソリューションの共有

前回の記事では Git と GitHub を使ったソリューションの共有を説明しました。今回は Visual Studio と GitHub でのソリューションの共有を見ていきます。 GitHub レポジトリの削除 前回作成した GitHub.com のレポジトリは一旦削除します。“Settings” | “Danger Zone” から削除が可能です。 Visual Studio 用 GitHub エクステンション Visual Studio 2017 は既定で GitHub をサポートしてませんが、便利なエクステンションがあります。 1. ツール | 拡張機能と更新プログラムをクリック。 2. オンラインを選択して、検索より “github” を検索。“GitHub Extensions for Visual Studio” をインストールします。 3. 必要に応じて Visual Studio を閉じて、インストールウィザードに従って進めます。 4. 次にアカウントを設定します。チームエクスプローラーより設定を選択。 5. 今回はこのプロジェクトの範囲でのみ設定したいので、レポジトリの設定をクリック。 6. オーバーライドのチェックボックスを入れて、GitHub と同じユーザー名、メールアドレスを入力して更新。… Read more

Git と Visual Studio 2017 その 9 : Git でソリューションの共有

前回の記事では、ブランチ切り替え時における作業の一時保存について説明しました。今回は Git を使って手元のソリューションを他の人と共有する方法について見ていきます。共有方法は多くありますが、今回は GitHub.com における共有を考えます。もしアカウントが無い場合は http://github.com へ行って、サインアップしてください。 GitHub でレポジトリ作成 まずは GitHub.com 上に今回使うレポジトリを作ります。 1. http://github.com へログイン。 2. “Start a project” をクリック。 3. 名前や説明を入れ、各種設定は既定値のまま作成。 リモートの追加とプッシュ 次に Git で、作成したリモートサーバーの情報を追加します。 1. 作成した GitHub のレポジトリでリモート用の git コマンドを確認。 2. 表示されている通り、‘git remote add origin https://github.com/kenakamu/VS_Git.git” を実行。これで指定した URL を ‘origin’ という名称で利用可能。名称は任意でよいが origin を使うことが一般的なため、今回はそのまま採用。 3. ‘git remove -v’ を実行して現在のリモートを確認。 4. ‘git branch -a’ を実行。-a… Read more

Git と Visual Studio 2017 その 8 : 一時的に作業を保存する

前回の記事ではチェリーピックで、他ブランチのコミットを一部適用する方法を説明しました。今回はブランチの切り替え時に作業中のファイル類を一時保存する方法を見ていきます。 Git におけるブランチ変更時の挙動 まずブランチ切り替え時に Git がどのように動くかを確認しましょう。 1. ‘git log –oneline –graph –all’ 実行で現状確認。前回記事のチェリーピックが終わった状態。 2. シンプルにするため、チェリーピックの前にリセット。 3. 次に作業を行う。Class1.cs ファイルに変更を加えてステージに追加。 4. さらに Class1.cs file に変更を加えて保存。 5. ‘git status’ を実行して、Class1.cs がステージングエリアと作業ディレクトリに存在することを確認。これは git add は実行したタイミングのファイルを保持するため、その後に変更したものは追跡していない。 6. ‘git checkout master’ で master ブランチに移動。Class1.cs に変更がある事が表示される。 7. ‘git status’ を再度実行。ブランチは master だがステージングエリアも作業ディレクトリも残っていることを確認。 作業中ファイルの保存 : Git ブランチを間違えて作業している場合は上記動作が好ましいのですが、緊急で別のブランチに移動しないといけない場合には、移動先のブランチには作業中の変更を持ち越したくありません。その場合 git stash コマンドで作業中のアイテムを一時保存できます。 1. ‘git checkout… Read more