気ままにやっていくプログラミングとかブログ

中学1年生が気ままにプログラムのことを中心に書いていくブログです。

Haxe + OpenFLが動いたっていう話

2月ぐらいにHaxe + OpenFLを試した。

クロスプラットフォーム対応で便利そうで、

構文もC#とかと似てるから良さそうだなーと思い、

インストールしてみてサンプルを動かそうとすると、

大量のエラーが出て動かない。

 

そこでいろいろ調べてると、

limeとかのバージョンが合わなくて不具合が起きてるっぽい。

 

なのでHaxeは最近やってなかったけど、

GWだからということでもしかしたら動くかもと試してみたら無事動いたという話。

 


 1.Haxe、OpenFLのインストール

 2.サンプルを動かす


 

 1.Haxe、OpenFLのインストール

haxe.org

WindowsMacの人はここからインストーラーをダウンロード、

Linuxの人は各ディストリビューションによって多少インストール方法が違うので、

そのままのバイナリが嫌だって人はここに従ってインストールしてください。

 

自分はUbuntu派生のZorin OS使ってるので、

Ubuntuだけここに書いておくことにします。

sudo add-apt-repository ppa:haxe/releases -y

sudo apt-get update

sudo apt-get install haxe -y

mkdir ~/haxelib && haxelib setup ~/haxelib

 

これでHaxeのインストールは完了しました。

 

次にOpenFLをインストールします。

 

npm方法もありますが私はガン無視します。

 

以下を実行してください。

haxelib install openfl

haxelib run openfl setup

 

確認コマンドは以下です。

openfl

 

そしてこんな感じなのが出てきます。

.d88 88b. 888888b 888
d88P" "Y88b 888 888
888 888 888 888
888 888 88888b. .d88b. 88888b. 8888888 888
888 888 888 "88b d8P Y8b 888 "88b 888 888
888 888 888 888 88888888 888 888 888 888
Y88b. .d88P 888 d88P Y8b. 888 888 888 888
"Y88 88P" 88888P" "Y8888 888 888 888 "Y888P
888
888

OpenFL Command-Line Tools (9.1.0-LqBuHo)
Use openfl setup to configure platforms or openfl help for more commands

(若干崩れてるのは見なかったことにしてください...) 

 

2.サンプルを動かす

今回は「NyanCat」というサンプルを動かしてみることにします。

 

他にもいろいろなサンプルがあるので、

他のサンプルも見てみたいよって人は

openfl create

ですべてのサンプルの名前がわかるのでそれで調べてみるといいと思います。

 

まずこれを実行します。

openfl create NyanCat

(ちなみに、NyanCatの部分をDisplayingABitmapなどのサンプル名に変えるとそのサンプルが作成されます)

 

そしたら「NyanCat」というディレクトリが作成されるので、

そこに移動してください。

 

次に

openfl test html5

を実行します。

 

これは、

「「openfl」で「html5」で「test」(テスト)をします。」

という意味になります。

 

これはhtml5なので、

Haxeソースコードがhtml,javascriptなどに変換されて、

デフォルトのウェブブラウザが立ち上がります。(ちょっと時間がかかります)

 

実際に動かしてみたらこんな感じです。

f:id:Kitachisuku:20210503195740p:plain

 

終わりです。

.NET 6のプレビュー版が公開されたらしい

ふとAndroidを見ていると、

どうやら.NET 6のプレビュー版が公開されたらしいことがわかりました。

 

試してみようとも思ったけど、

とりあえずそれは正式なリリースが行われてからということで、

.NET 6の今の所の情報をまとめていきたいと思います。

 


 1. .NET 6をざっくり

 2. 破壊的変更点

 3. .NET MAUI

 4. 感じたこと


 

 1. .NET 6をざっくり

.NET 5の後継。

 

.NET Coreと.NET Frameworkを統合した環境での、

初めてのLTS(長期サポート版)らしい。

 

ついでにXamarinも統合して、

AndroidiOSも対応可能という大盤振る舞い。

 

更に、

.NET初めてとなる「クロスプラットフォーム対応のUIキット」である、

「.NET Multi-platgorm App UI」(MAUIという)が実装されている。

 

これで、

C#でのクロスプラットフォーム開発が進むこと間違いなし。

 

 2.破壊的変更点

公式サイトより

docs.microsoft.com

 

ASP .NET Core

  • null許容型の注釈変更
  • 非推奨のAPIと削除されたAPI
  • BlazorのRequestImageFileAsyncのmaxWithがmaxWidthに(スペルミスらしい)
  • BlazorのWebEventDescriptorのEventArgsTypeプロパティがEventNameに変更
  • Kestrelログメッセージ属性が一部変更
  • HTTPS リダイレクト ミドルウェアが曖昧なHTTPS ポートで例外をスローするように
  • BlazorのRazorEngine型に関連する型が非推奨に

 

.NET Core ライブラリ

  • null許容型の注釈変更
  • Stream型から派生した一部のパラメーター名の変更
  • 標準の数値書式の解析制度アップ

 

Windowsフォーム

  • TableLayoutSettingsプロパティで正しくない値を割り当てたとき例外をスローする
  • ツールヒントテキストの最大文字数が63文字から127文字になった
  • 一部のAPIでnullを当てはめたときに例外をスローするように
  • TreeViewのノードがすでに割り当てられているときに他のものに割り当てようとしたときに例外をスロー

 

 3. .NET MAUI

自分が使いたいからっていう理由でまとめる。

 

参考

github.com

 

利点

 

欠点

  • UWPとかWPFとかと書き方が違う
  • 多分最初の方は情報少ない

 

 4. 感じたこと

.NET Coreがマルチプラットフォーム対応だと言われてましたが、

ようやくGUIまでサポートされました。

 

これによりC#での開発がより楽になりそうです。

 

早くプレビュー版終わって安定版でないかな...

 

では。

Windows10風のCSSを作ってみた

こんにちは。

 

Kitachisukuです。

 

今回はHTMLをWin10風にするCSSを作りました。

 

なのでそれを紹介します。

 


 1.概要

 2.対応してるもの

3.使い方

4.実行例

5.その他


 1.概要

github.com

このCSSを使うと、

HTMLをWindowsのような表示にできます。

 

CSSオンリーなので、

簡単に使うことができます。

 

2.対応してるもの

今のところ、

  • Button
  • TextArea
  • input(text,color,password)

のみです。

 

Chrome,FireFox,Microsoft Edge,Electronで正常、

Internet Explolerでも一応確認しております。

 

3.使い方

git clone https://github.com/Kitachisuku/Win10.CSS

 でレポジトリのクローンを作成して、

そのなかの「win10.css」をあなたのプロジェクトにコピーして、

<link>を使ってCSSと結び付ければ終わりです。

 

これを使うと勝手にボタンとかは見た目が変わります。

 

MSゴシックを使うには、

bodyタグに以下のclassを指定すればいいです。

 

class = "mspfont"...MS Pゴシック

class = "msfont"...MS ゴシック

 

そんな感じです。

 

4.実行例

以下Electronで実行してみた例です。

f:id:Kitachisuku:20210323191429p:plain


Windowsっぽくなってます。

 

5.その他

ライセンスはMIT Licenseです。

 

要するにフリーです。

 

では。

GtkかQtかwxWidgetsか

こんにちは。

Kitachisukuです。

 

皆さんはGUIツールキット何を利用していますか?

 

少し前までは自分はGtk派だったんですが、

とあるややこしい部分があり、

結果的にはwxWidgetsに移行することになりました。

 

今回はGUIツールキットを求めて探す人に参考になればと、

それらをまとめたものを書いていきます。

 

※ちなみにUIデザイナが存在するものだけを載せています

 

広告

 


 1.GTK

2.Qt

3.wxWidgets


 

 1.GTK

www.gtk.org

 

UIデザイナの「Glade」

glade.gnome.org

 

GTKはGimpの開発に使われたGUIツールキットです。

 

「テーマ」というものがあり、

他のGUIツールキットより高いデザインの拡張性を持っており、

基本的に並べていく方式でデザインしていくので、

センスがなくて絶対指定だとうまくできない自分みたいな人たちに優しいGUIツールキットとなっております。

 

また、

もともとはC言語用なのですが、

C++Python、Rustなど、

様々な言語へのバインディングがあります。

 

これの利点は以下です。

  • フリー
  • レイアウトがかんたん
  • 好きなデザインを使うことができる
  • 自分が使っている言語で使える可能性大

 

逆に欠点は以下です。

  • インストールが超★面★倒
  • 依存ライブラリとかが結構ある
  • ライセンスはLGPLなんだけど、依存ライブラリとかの関係でライセンスがよくわからない
  • ネイティブなUIではない

 

自分がやめた理由は「ライセンス」です。

 

2.Qt

www.qt.io

 

GUIデザイナは開発ツールに付属

 

Qtはデザインが美しいGUIツールキットです。

 

QtにはIDEが付属しており、

そのIDEで開発を行うことができます。

 

開発は企業が行ってるので、

サポート的にも安心です。

 

配置は絶対指定...かな?

 

使ったことないのでよくわかりません。

 

C++特化なんですが、

一応Pythonなどへのバインディングが存在します。

 

これの利点は以下です。

  • 美しいデザインが作れる
  • 企業が作ってるという安心感
  • C++人にはいい
  • IDEにUIデザイナが付属(つまりインストールがかんたん)

 

逆に欠点は以下です。

  • 有料版、無料版があり、無料版はライセンスがGPLである ←ココ重要

2021/04/28 追記

LGPL版あります

  • インストールサイズが超デカイ
  • 依存ライブラリ多し
  • ネイティブなUIではない
  • GTKのようにテーマがない

 

ここですよここ。

 

ここさえなければこれ使ってた。

 

これライセンスがGPLなんですよ!!

※2021/04/28 追記 LGPL版ありました

 

つまりこれで作ったものは全部GPLライセンスで配布しなければいけない、と。

 

やってられるかァァァァァァァァァァッ"。

 

3.wxWidgets

www.wxwidgets.org

 

UIデザイナ

Code::BlocksプラグインのwxSmith

wiki.codeblocks.org

wxFormBuilder など

github.com

 

「こんなのじゃまともにアプリが作れないじゃないか!!!」

 

んなあなたにおすすめ、(広告風)

wxWidgets

 

C++GUIアプリが作れるものです。

 

wxWidgetsは可能な限りそのOSのネイティブのUIを使います。

 

フリーでかつUIビルダーもあってかつ、

ライセンスはLGPLです。

 

さらに依存ライブラリもなし!!!!!!

 

いいやん!!!!!

 

利点

  • ネイティブなUIを使う
  • ライセンスは大丈夫。どんなライセンスでも配布できる。
  • 依存ライブラリなし!!!!

 

いいじゃないですか!!

 

逆に欠点は、

  • GTKのようにテーマがない
  • C++特化

 

このぐらいです。

 

つまり結論として、

wxWidgetsはいいぞ、ということです。

 

では。

 

Chromebookの可能性について

こんにちは。

Kitachisukuです。

 

結構前に、

うちの学校にChromebookが支給されて、

今までは「ただのWebを見る専用の機械」とか思ってたんですが、

意外と使える!ということがわかり、

今回はWindowsMacbookなどと比較してみて見ようと思います。

 

広告


ASUS エイスース C223NA-GJ0018 ノートパソコン Chromebook (クロームブック) C223NA グレー [11.6型 /intel Celeron /eMMC:32GB /メモリ:4GB /2020年6月モデル][11.6インチ 新品]

ASUS エイスース Chromebook クロームブックノートパソコン C434TA-AI0095 シルバー [14.0型 /eMMC:32GB /メモリ:4GB][ノートパソコン 14インチ 新品 C434TAAI0095]

 


 1.Chromebookとは

2.いいところは?

3.LinuxAndroidのアプリが動く?

4.Macbookと比べると?

5.まとめ


 

 1.Chromebookとは

ChromebookとはGoogleが作成したChrome OSを搭載したコンピューターのことです。

 

Androidと同じくGoogleアカウントとの連携で、

Googleのサービスを最大限に使用することができます。

 

例えばGoogleスプレッドシートなどのGoogleオフィスや、

教育用のClassroomなど、

様々なWebアプリを使うことができます。

 

2.いいところは?

まず1番は値段です。

 

安いやつで2万〜3万で買えちゃいます。

 

次に安全性です。

 

大抵のウイルスはWindowsをターゲットとしているため、

大抵のウイルスも大丈夫ですし、

基本的にWebアプリを動かすことが目的なので、

ウイルス自体が動くこともないと思います。

 

そして持ち運びやすさです。

 

ノートPCがあるのでかんたんに持ち運べます。

 

更にとても大きいのが、

まだbetaではありますが、

LinuxAndroidのアプリが動かせるというところです。

 

これについては↓で解説します。

 

3.LinuxAndroidのアプリが動く?

ChromebookではLinuxAndroidのアプリが動いちゃいます。

 

これ、

何がいいのかというと、

  • Androidのゲームを大画面でプレイできる
  • Androidの業務用ソフト(Officeなど)を動かせる
  • Play Storeからインストールするので今までに買ったアプリも動かせる

などがAndroidのアプリが動かせるという利点と、

というLinuxのアプリが動かせるという利点があります。

 

まだ多少動かないところもあるようですが、

まあそれはぼちぼち解決していくでしょう。

 

4.Macbookと比べると?

  Chromebook Macbook
値段(安いもの)  2万~3万 8万~10万
できること  Linux&Android&Webアプリの動作 すべてのMacアプリケーション&Webあぷりの動作+iPhoneアプリも動くようになるらしい
CPU 色々 Intel or M1
クラウドとの連携 めっちゃできる できる
オフライン できる めっちゃできる

 

当たり前ですがChromebookはWeb重視、

Macはデスクトップアプリ重視です。

 

5.まとめ

Chromebookは安い、色々できる、

セキュリティいいPCです。

 

本音言うとラズパイよりこっちのが良かったな...

 

では。

作ったアプリを配布する/売る場所

こんにちは。

Kitachisukuです。

 

今自分はHTMLのエディターを作ってるんですが、(始めたばっかりです)

それを売ってみたいなあ、と思い、

今回は暇なときに調べた方法をまとめていく感じです。

 

広告

 

 


 1.モバイル向けアプリ

2.PC向けアプリ

3.ウェブで公開

4.まとめ


 

 1.モバイル向けアプリ

今回はAndroidiPhoneで考えてみます。

 

3の方法も使えなくはないんですが、

まあ普通に考えてダウンロードは限りなく0になるでしょう。

 

あとiPhoneはできませんし。

 

あともう一つ気をつけてほしいのが、

このどちらも18歳未満はアプリをストアに出せないということです。

頑張れ、くじけるな未成年!自分もだけど!

 Android向けのアプリをリリースできるストアです。

 

Play Consoleに登録するとアプリを公開することができるようになります。(審査はあります)

 

登録料は$25で、

一回きりです。

 

儲けのうち30%がGoogleの取り分です。

 

iPhone/iPad/Macintosh向けのアプリをリリースすることができるストアです。

 

Apple Developerに登録するとアプリを公開することができるようになります。(審査はあります)

 

登録料は$99が年間、

Entrerpriseは$299が年間です。

 

前暦年の儲けが$100万未満の企業は15%、

それ以外は30%がAppleの取り分です。

 

総評

 

スマホは閉じられたプラットフォームなので、

配布できるところが限られています。

 

登録料も必要ですし、

儲けの一部も持ってかれます。

 

あと未成年の参加は無理ですし。

 

結構制約はありますがやはりスマホアプリの配布はこれらです。

 

2.PC向けアプリ

Windows/XBox/Windows Phoneなど向けのアプリを配布できます。

 

exeではなくUWPという形式で配布しなければならないんですが、

DACもありますし、

既存のアプリを配布するのもできます。

 

登録料は個人は$19、企業は$99です。

 

MSの取り分は15%です。

同上。

 

総評

 

なんかめっちゃMSいいですね。

 

取り分も比較的少ないですし。

 

普通に方法として考えてもいいと思います。

 

あと多分学生も登録可能です。

 

どのくらいの年齢かは知らないんですがね...

 

あとLinuxはよくわかりませんでした。

 

GNUプロジェクトに入れてもらうことはできるっぽいし、

aptやrpmに公開もできるんだろうけど、

わかりませんでした。

 

3.ウェブで公開

ウェブのストアは考えないでおきます。

 

で方法なんですが、

Stripeというものを使って販売システムを作るのがいいっぽいです。

 

 提携カードの種類も多くて、

Stripe側の取り分は3.6%です。

 

自分で全部やるので大変ですが、

あまり制約設けないですみます。

 

あとLinux向けアプリはやっぱこれしかないです。

 

欠点

  • ウェブ上に公開するので、レンタルサーバー代、ドメイン代がかかります。
  • 全部自分で管理する必要があります。
  • ストアよりはダウンロード数が多くない(と思う)
  • 宣伝が必須

 

4.まとめ

モバイルはGoogle Play/App Store!

PCはMicrosoft Store/App Store!

自分で全部やるんだったらStripe!

Gtk-rs小ネタ集

こんにちは。

Kitachisukuです。

 

1週間時間が空いたのは気にしないでください()

 

で今回は、

Gtk-rs関連のことが自分が調べてるときに嫌というほど出てこなかったので、

誰かの助けになればと、

今回出てこなさそうなことを書いていきます。

 

広告

 


 1.UIをかんたんに作る(Glade)

2.終了処理

3.ボタンクリック

4.タイトルバーのカスタム


 

 1.UIをかんたんに作る(Glade)

Gtkではxmlファイルを使ってかんたんにGUIを作れます。

 

その機能を利用します。

 

・やり方

このサイトもしくはターミナルからGladeをインストールする。

 

インストールして起動したら、

f:id:Kitachisuku:20210302184935p:plain

左上の「開く」の隣りにあるファイルのボタンを押して、

f:id:Kitachisuku:20210302185402p:plain

真ん中にウィジットをドラッグ&ドロップしていけばいいです。

 

「トップレベル」にはWindowなど、

「コンテナー」にはBoxなど、

「Control」にはボタンなどが、

「Display」にはラベルなどが、

その右の矢印には、

OpenGL機能などを持つウィジットがあります。

 

保存には「保存」を押せばいいです。

 

Rustで使う方法は、

こんな感じです。

 let ui = include_str!("ui.glade");    //  この例では「ui.glade」というファイルを読み込んでいる

let builder = Gtk::Builder.from_string(ui);    //  上で作成した変数「ui」を読み込んでいる

let window: Gtk::Window = builder.get_object("mainwindow").unwrap();    //  この例では「mainwindow」という名前のWindowを取り出している。戻り値はObjectなので、明示的に「これはWindowだ」と表す必要がある。

 

あとはこれで取り出したウィジットを煮るなり焼くなり好きにする感じです。

 

2.終了処理

windowに対して使います。

window.connect_delete_event(|_, _| {

    gtk::main_quit();

    Inhibit(false)

});

 

これで終了処理が作れます。

 

3.ボタンクリック

buttonに対して使います。

button.connect_clicked(move |_| {

    // ここに好きなコードを書いてください

});

 

4.タイトルバーのカスタム

Gladeを使います。

f:id:Kitachisuku:20210302192132p:plain

まずWindowをドロップして、

そのWindowに、

「コンテナー」野中のGtkHeaderBarをドラッグアンドドロップします。

 

仮にも「コンテナー」の仲間ですので、

ボタンなどを配置することも可能です。

 

以上。