カテゴリー
ASP.NET aws C#

Aws lambda で asp.net core サーバーレスウェブアプリを構築する

AWS Lambda を使って、Nodejs の express でウェブページを表示することができますが、これと同じように、ASP.net Core を lambda で実行してウェブページを表示することができます。

まさにサーバーレスな Asp.Net Core です。EC2などの VPS は不要です。

開発・デプロイの方法を紹介します。

1. AWS Toolkit for Visual studio をインストールする

AWS ToolKit for Visual Studio とは、AWS の開発を容易にするvisual studio の拡張機能です。以下のURLからダウンロードできます。

https://aws.amazon.com/jp/visualstudio/

2. 新規プロジェクトからAWS serverless application を作成する

新規プロジェクト作成画面から「aws」でフィルタリングすると、awsに関するプロジェクトが表示されます。その中から「AWS Serverless Application」を選択します。

3. 発行に必要な権限を付与する

Lambda 関数の作成など、いろんなことを自動で処理してくれますので、AWS Console の IAM 画面から権限を付与します。

必要な権限をメモしてみましたが、必要に応じて権限を追加してください。

  • Lambda full access
  • IAM Full access
  • Amazon API Gateway Full Access
  • CloudFormation Full Access

Full Access にする必要は無いかもしれませんが、手っ取り早くするためにフルアクセスにしました。

4. AWS Lambda に発行する

ソリューションエクスプローラーの右クリックメニューから、「Publish to AWS Lambda」をクリックします。

プロファイルを選択し、Stack Name と S3 Bucket Name を選択し、右下の Publish ボタンをクリックします。

正常に作成処理が完了すると、この画面のようにlambda関数が作成されます。

5. ウェブページにアクセスしてみる

AWS Console からAPI Gateway にアクセスします。発行処理で作成されたAPI Gateway の左側メニューから、「Stage」を選択して表示されているURL をクリックします。

そうすると以下の画面が表示されるはずです。

まとめ

この手順で作成することで、サーバーレスなASP.NET Core ウェブページを作成することができます。VPS などの専用サーバーが不要になりますので、状況によっては安価に環境を構築することができます。

.NET CORE ユーザーにとってはウェブサイトを開発する選択肢のひとつとして考えて頂けるといいかと思います。

カテゴリー
C#

c# コマンドプロンプトのコマンドを実行するc#プログラムソース

C#からコマンドプロンプトのコマンドを実行するソースコードを紹介します。

    /// <summary>
    /// バッチコマンドを実行する
    /// </summary>
    /// <param name="executeCommand">コマンド文字列</param>
    /// <param name="stdOut">標準出力</param>
    /// <param name="stdErr">標準エラー出力</param>
    /// <param name="exitCode">終了コード</param>
    /// <returns>リターンコード</returns>
    public static int ExecBatProcess(string executeCommand, out string stdOut, out string stdErr, out int exitCode)
    {
        stdOut = "";
        stdErr = "";
        exitCode = 0;

        try
        {
            Process process = new Process();
            ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/c " + executeCommand);
            processStartInfo.CreateNoWindow = true;
            processStartInfo.UseShellExecute = false;

            processStartInfo.RedirectStandardOutput = true;
            processStartInfo.RedirectStandardError = true;

            process = Process.Start(processStartInfo);
            process.WaitForExit();

            stdOut = process.StandardOutput.ReadToEnd();
            stdErr = process.StandardError.ReadToEnd();
            exitCode = process.ExitCode;

            process.Close();

            return 0;
        }
        catch
        {
            return 16;
        }
    }

引数

executedCommand
コマンドプロンプトで実行するコマンドと引数を指定します。バッチファイルパスでもOKです。

stdOut
標準出力の内容を返します。

stdErr
標準エラー出力の内容を返します。

exitCode
コマンド実行後のリターンコードを返します。

使用例

    public string batchStdOut;
    public string batchStdErr;
    public int batchExitCode = 0;

    string batPath = @"D:\uploads3.bat";
    UEProcess.ExecBatProcess(batPath, out batchStdOut, out batchStdErr, out batchExitCode);

batPath に指定したバッチファイルを実行し、標準出力、標準エラー出力、リターンコードを取得します。

カテゴリー
未分類

3分間でRPAを理解する

RPAは様々なところで導入実績が報告されていますよね。どうしてRPAを導入すると効果が出るのか、そもそもRPAって何なのか。

そんなRPAを3分間で簡単に紹介します。

1. RPAは、Robotic Process Automation の略

RPAのRはロボットのRです。と言ってもソフトウェアなので、実際のロボットでは無いのですが。

RPAのAはオートメーションのAですので、自動化するためのソフトウェアです。

2. 人間に代わってロボットが仕事をするためのソフトウェア

人間の仕事をロボットが代行しましょう、というコンセプトをもったソフトウェアです。そのため、人間が行うようなエクセルやワードでの入力や、業務アプリケーションの操作などを行うことができます。

3. RPAは複雑な仕事は無理

人間と違って、複雑な条件判断はできません。プログラムのIF文やswitch文などで表せるような、単純な条件判断なら行うことができます。

今はまだこのような簡単な条件判断しかできませんが、AI並みの柔軟な判断力をもったRPAも開発中のようです。

4. ロボットだから、24時間365日働くことができる

ソフトウェアですので、人間と違って疲れることはありません。電力とパソコンが有ればいくらでも働くことができます。

5. ロボットだから、仕事のミスやムラがない

人間なら、体調が悪いときや、精神的に参ってるときや、繁忙期のときなど、仕事をミスしたりムラが出たりします。

しかし、RPAであれば一度作成したロジックをいつでも同じ品質で実行できますので、仕事にミスやムラはありません。

6. RPAで自動化すれば、人がいなくても仕事が進む

RPAで自動化すれば、人がいなくても仕事してくれます。ということは、極論を言えば、部下がいなくてもある程度は仕事が進む可能性があります。

もしくは、自分の仕事をすべてRPAで自動化してしまえば、一人の仕事量が格段にアップします。

7. ロボットの開発にプログラミングは不要

ほとんどのRPA製品では、マウス操作のみでロボットの動作を記述することができます。

「条件(IF)」「繰り返し(for、while)」「分岐(select switch)」など、ロジックを組み立てるための基礎的な知識は必要になりますが、プログラミング言語そのものを記述しなくてもロボットを作ることができます。

人間の操作を記録してロボットの覚えさせることもできます。

カテゴリー
ASP.NET C#

ASP.NET CORE で Tweet 機能を構築する

ASP.NET CORE では razor 構文というものが使用できます。razor 構文を使用すると、クリック時のイベントロジックを実装したり、テキストに入力した値を取得することができるようになります。

この記事では、ASP.NET CORE で razor 構文を使用して、ツイート専用画面を構築する方法を紹介します。

1. ファイル構成とソース

今回は2つのファイルに分けて構築します。

1.1 Shared/TweetBox.razor

Sharedフォルダにrazor ファイルを作成することで、独自タグのように使用することができます。ソースコードは以下のようになります。

<h3>TweetBox</h3>

<textarea id="note" cols="10" style="width: 100%" @bind="@tweetText" placeholder="TweetText"></textarea>



<div>
    <a href="https://twitter.com/intent/tweet?text=+@(tweetText)">
        <img src="/Image/tweet.png" style="border-radius: 30%; border: 1px solid black;" width="100%" />
    </a>
</div>

@code {

    string tweetText;

}

上から3行目の textarea でツイート本文を記載します。

tweetText という string型の変数に textarea の入力内容をバインドしています。ちなみに、tweetText という変数は、@code ブロックの中で宣言しています。

実際のツイートロジックは、Twitter から提供されている Web Intent を使用します。Web Intent の詳細は以下のURLで説明されています。

https://developer.twitter.com/en/docs/twitter-for-websites/tweet-button/guides/web-intent

1.2 Pages/Tweet.razor

Pages フォルダで実際のページを構成していきます。ソースコードは以下になります。

@page "/Tweet"

<TweetBox />

TweetBox というタグを使用して、さきほどのソースを呼び出しています。

2. 実行イメージ

こんな感じでツイートができます。

カテゴリー
未分類

個人開発で下がってきたモチベーションを取り戻す方法

個人開発は仕事と違って給料が出たりするわけではありませんので、しっかりモチベーションを保っておかないと、なかなか続けられません。人間ですのでモチベーションが上がってたり下がってたり、どうしても波があります。

この記事では、モチベーションが下がってきたときに取り戻す方法を紹介します。

1. 完成したときの自分を想像する

そのアプリが完成したとき、どんな自分になっているか想像してみましょう。例えば、こんな内容です。

  • 毎月数万円の収入を得て生活にゆとりがうまれる
  • SNSでバズってフォロワーが増える
  • 仕事のオファーがくる
  • 駆け出しエンジニアに開発のアドバイスを求められる
  • ユーザーから感謝の言葉をもらう
  • 自分のスキル・レベル・開発実績が増える

アプリを作る前と作った後では、何かが必ず違っているはずです。思った通りの自分にはなれていなくても、なりたい自分像を明確にすると、その目標に向かっていこうというモチベーションになります。

2. 軽い運動をする

軽い運動とは例えばジョギングやウォーキングです。体を動かすと頭の中がリフレッシュして、その後の作業の集中力が高まります。

頭の中でいろいろ考えて考えて、煮詰まってしまって進まなくなったときは、外を散歩すると良いです。周りの景色や何気ない風景をみてリフレッシュすると、集中力が戻ってきますよ。

3. 温めのお風呂に長くつかる

お風呂に長く浸かると身体が暖まって気持ちがいいですよね。お風呂はアイデアが生まれやすい場所で、3B(Bus,Bath, Bedroom)のうちの1です。

お風呂にゆっくり浸かってアプリの構想を練ったり、アプリがリリースした後の自分を想像してモチベーションを高めることもできるでしょう。

4. いつまでに開発するか公言する

自分を追い込み意味でも、今何を作っていて、いつまでに完成させるのか、友人やSNSなどで公言するといいでづ。そうすることでプレッシャーが生まれ、言ったからにはやり遂げなければ!と燃えてきます。

公言したのに出来なければ、「口だけの人間だったか」と悲しいレッテルを貼られてしまいますので、それを防ぐためにも、公言することの意味は大きいと思います。

5. 最後に

個人開発をやるメリットは大きいです。会社に依存しない収入源になる可能性もありますし、自分のスキルアップにもなります。実務経験がない人や駆け出しエンジニアの人にとっても、キャリアアップの大きなポイントになります。

長くモチベーションを維持して個人開発を続けていきましょう!