search
LoginSignup
20

More than 1 year has passed since last update.

posted at

updated at

お手軽Linux(Ubuntu) GUI アプリ開発 初級 前編

お手軽Linux(Ubuntu) GUIアプリ開発 初級 前編

2021/4月追記
Rider .net5 でのGUI開発に移行しています
UbuntuとRiderとC# GUIアプリの開発

  1. Sqlite3の利用
  2. Dapperの導入 Dapperについてまとめてみた
  3. Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
  4. Swaggerを使う Stoplight Studioなどを使う  本当に使ってよかったOpenAPI (Swagger) ツール
  5. C#からPythonを実行する C#からPythonスクリプトを呼び出す
  6. DataGridViewとModelのバインディングの実現 URL treeView
  7. Jetson Nanoへのデプロイの仕方

開発はMac上のVisualSudioMacで行います

前編は5まで

Sample File

プロジェクトはGtk#を選択する

GTK#について

スクリーンショット 2020-04-09 19.34.07.png

Nugetからパッケージをダウンロードする

スクリーンショット 2020-04-09 19.36.00.png

ダウンロードするパッケージ

Dapperの拡張ライブラリ 比較検討

Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。

スクリーンショット 2020-04-09 19.10.43.png

Dapperを使ったQuery

Dapper Tutorial

Queryの結果を自動でモデルに入れることができます。またInsert時Update時に引数代わりにModelを使えます。

        static public void _dapperTest() {

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            var query = "select * from testTable;";

            var result = connection.Query<testTable>(query);
            foreach(var p in result) {
                Console.WriteLine("ID:" + p.test_id + " 名称:" + p.name);
            }

            connection.Close();
        }

DapperExtensionを使ったInsertUpdate処理

ModelからInsert文やUpdate文を自動生成し、処理できます

DapperExtensionについて

書き出されるSql文の形式を変更します

DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();
        static public void _dapperExtensionTest() {

            //Sql文を [testTable].[test_id]から [test_id]に変更する
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            //DapperExtensionを使った処理
            testTable testTable1 = new testTable();
            testTable1.name = "aaaaaa111";
            connection.Insert<testTable>(testTable1);

            var query = "select * from testTable;";
            var result = connection.QueryFirst<testTable>(query);

            //DapperExtensionを使った処理
            result.name += "qqqq111";
            connection.Update<testTable>(result);

            connection.Close();

        }

testTableモデル

  1. モデルにはGetter Setterを必ず書くこと
 public class testTable {

    public int test_id { get; set; }

    public string name { get; set; }
 }

Swaggerを自動生成にさせる

Stoplight Studioを使います。APIURLとパラメータを登録していき、Swaggerを自動生成します。

本当に使ってよかったOpenAPI (Swagger) ツール

スクリーンショット 2020-04-07 21.53.05.png

Swagger CodegenでAPIクライアント、スタブサーバ、HTML定義書を自動生成する

Swagger Codegenをインストールし、APIクライアントとモデルファイルを指定した言語で書き出します。
テンプレートをカスタマイズしておくと便利です。

OpenAPI GeneratorでRESTful APIの定義書から色々自動生成する
Swagger Codegen
Swagger Codegen Git

swagger-codegen generate -i http://petstore.swagger.io/v2/swagger.json -l 言語を指定する(csharp) -o 出力ディレクトリ 

swagger 初めて触ってみた

Azureの中で無料製品一覧

Azure Functions Free

開発にあたってのポイント

  1. Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
  2. gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
  3. モデルにはgetter setterを必ず書くこと

DataMapping

スクリーンショット 2020-04-09 13.42.35.png

お手軽Linux(Ubunch) GUIアプリ開発 初級 後編
お手軽Linux(Ubunch) Guiアプリ開発 入門
お手軽Linux(Ubunch) GUIアプリ開発 パーツサンプル集

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
20