16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-04-09

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

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

  1. Sqlite3の利用

開発は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アプリ開発 パーツサンプル集] (https://qiita.com/tana_/items/3114b715586a5f83cd8c)

16
20
0

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
  3. You can use dark theme
What you can do with signing up
16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?