BLOG

C++Gui開発の経緯

元々reactが好きで、個人用のアプリケーションを作って利用していました。使いやすいですね。 久しぶりに触ってみようと思い、最近の参考書などを見ました。レンダリングモデルの話題からスタイルの話にフォーカスが移っているなと感じました。sassなどprogramable CSSの手法はずっと昔からあるけど、一周回ってボトルネックが現在のCSS規約に縛られているように思います。 規約を変えてるのは実装を変えるより遥かに困難だと考えます。 CSS in JS は解決策のように思ったのですが、少し調べたぐらいだと速度の問題があるとのことで、CSSを早くするために労力を注ぎ込むなら、ブラウザレンダリングより、WEB技術の仕様を変えてネイティブ言語に持ち込んだ方が早いと考え、C++GUI開発を始めました。 前置きは以上なんですが、せっかくネイティブ言語で実装するならグラフィカルなPCが出た時の体験を元にしたツールを作りたいなと思い、現代風ではなくクラシックな見た目のインターフェースを標準にデフォルトのスタイルテーマを設定しました。 お気に入りはPC-9800.ttfというNECのフォントです。分かる人はいないかもしれないですが、ワープロです。一太郎を思い出せる雰囲気があるテーマで作ってみました。

C++Gui開発の経緯

元々reactが好きで、個人用のアプリケーションを作って利用していました。使いやすいですね。 久しぶりに触ってみようと思い、最近の参考書などを見ました。レンダリングモデルの話題からスタイルの話にフォーカスが移っているなと感じました。sassなどprogramable CSSの手法はずっと昔からあるけど、一周回ってボトルネックが現在のCSS規約に縛られているように思います。 規約を変えてるのは実装を変えるより遥かに困難だと考えます。 CSS in JS は解決策のように思ったのですが、少し調べたぐらいだと速度の問題があるとのことで、CSSを早くするために労力を注ぎ込むなら、ブラウザレンダリングより、WEB技術の仕様を変えてネイティブ言語に持ち込んだ方が早いと考え、C++GUI開発を始めました。 前置きは以上なんですが、せっかくネイティブ言語で実装するならグラフィカルなPCが出た時の体験を元にしたツールを作りたいなと思い、現代風ではなくクラシックな見た目のインターフェースを標準にデフォルトのスタイルテーマを設定しました。 お気に入りはPC-9800.ttfというNECのフォントです。分かる人はいないかもしれないですが、ワープロです。一太郎を思い出せる雰囲気があるテーマで作ってみました。

CMakeの開発環境など

CMakeでKotaroというツールを主要なOSでビルドしました。 どんなことをしたかをザックリ紹介します。遠回りなことをしたのですが、いろいろな方向からアプローチして今のやり方にしましたので参考になったら幸いです。 最初にmacでビルドしました。その後Linuxでビルドしました。ここまではいいのですが、windowsになると勝手が変わって、CMakeLists.txtを頻繁に変更する作業が発生。 mingwだったら最小の労力で移植できるか試したのですが、、、挫折しました。 ビルドは通ったけど、codecvtの関数エントリーポイントが見つからないというエラーが出まして、clコンパイラの方が初心者には無難そうと思いました。 急がば回れということでvisual studio使ってCMakeLists.txtを作り直しながらビルドしました。visual studioだとvcpkgでパッケージをマニフェストインストールできてcmakeからfind_packageするだけの環境が作れて気に入りました。 この環境で出来上がったCMakeLists.txtをもとにLinux、Macでビルドする方針にしました。SDL2だとvcpkgはwindowsで使えるけど、Linux、MacはSDL2_hogeConfig.cmakeが無くて使えないとかあって、パッケージそれぞれの事情が出てきます。そういう場合でもvisual studioはリモート接続で実機検証をサクッとできるので便利でした。 結論、visual studio+vcpkgが便利でした。

CMakeの開発環境など

CMakeでKotaroというツールを主要なOSでビルドしました。 どんなことをしたかをザックリ紹介します。遠回りなことをしたのですが、いろいろな方向からアプローチして今のやり方にしましたので参考になったら幸いです。 最初にmacでビルドしました。その後Linuxでビルドしました。ここまではいいのですが、windowsになると勝手が変わって、CMakeLists.txtを頻繁に変更する作業が発生。 mingwだったら最小の労力で移植できるか試したのですが、、、挫折しました。 ビルドは通ったけど、codecvtの関数エントリーポイントが見つからないというエラーが出まして、clコンパイラの方が初心者には無難そうと思いました。 急がば回れということでvisual studio使ってCMakeLists.txtを作り直しながらビルドしました。visual studioだとvcpkgでパッケージをマニフェストインストールできてcmakeからfind_packageするだけの環境が作れて気に入りました。 この環境で出来上がったCMakeLists.txtをもとにLinux、Macでビルドする方針にしました。SDL2だとvcpkgはwindowsで使えるけど、Linux、MacはSDL2_hogeConfig.cmakeが無くて使えないとかあって、パッケージそれぞれの事情が出てきます。そういう場合でもvisual studioはリモート接続で実機検証をサクッとできるので便利でした。 結論、visual studio+vcpkgが便利でした。

Shopifyの購入履歴取得やってみました

GraphQL、Flowアプリをショップに追加しました ShopifyのGraphQLはStorerontとAdminに分かれています。ソフトウェア保護機能はShopifyをバックエンドに用いるカスタムフロントとして実装します。   mutation {  customerAccessTokenCreate(input: {email: "****", password: "*****"}) {    customerAccessToken {      accessToken    }  }} query { customer(customerAccessToken: "***") {  orders(first: 250) {    nodes...

Shopifyの購入履歴取得やってみました

GraphQL、Flowアプリをショップに追加しました ShopifyのGraphQLはStorerontとAdminに分かれています。ソフトウェア保護機能はShopifyをバックエンドに用いるカスタムフロントとして実装します。   mutation {  customerAccessTokenCreate(input: {email: "****", password: "*****"}) {    customerAccessToken {      accessToken    }  }} query { customer(customerAccessToken: "***") {  orders(first: 250) {    nodes...

Learning GraphQLを読み終わりました

GraphQLをRestAPIを呼び出すミドルウェアのように使用できます。resolverのinput jsonをRestAPIにpostします。GraphQLは一度のリクエストで複数のresolverを呼び出すので、複数のAPIに対して一個のエンドポイントから呼び出せます。 GraphQLサーバーはschemaとresolverを引数に実行されます。 HASURAはGraphQLからSQLを生成します。schema、resolverはデータベースのschemaから自動生成します。 クライアント側から見たら生SQLをポストするような使い方ができますので便利です。サーバー側から見たら何かを抽象化するわけではなく、resolverの実装が増えます。単一責任の原則からは外れますがHASURAのように自動生成による抽象化もあります。 resolverをうまく抽象化できればGraphQLをクライアント、サーバー間のやりとりを抽象化する仕様として扱えるかもしれないと感じました。

Learning GraphQLを読み終わりました

GraphQLをRestAPIを呼び出すミドルウェアのように使用できます。resolverのinput jsonをRestAPIにpostします。GraphQLは一度のリクエストで複数のresolverを呼び出すので、複数のAPIに対して一個のエンドポイントから呼び出せます。 GraphQLサーバーはschemaとresolverを引数に実行されます。 HASURAはGraphQLからSQLを生成します。schema、resolverはデータベースのschemaから自動生成します。 クライアント側から見たら生SQLをポストするような使い方ができますので便利です。サーバー側から見たら何かを抽象化するわけではなく、resolverの実装が増えます。単一責任の原則からは外れますがHASURAのように自動生成による抽象化もあります。 resolverをうまく抽象化できればGraphQLをクライアント、サーバー間のやりとりを抽象化する仕様として扱えるかもしれないと感じました。

Learning GraphQLを読んでます。

Learning GraphQLを読み始めました。 C++でシングルページアプリケーションを作れるSDKを今後公開していく予定です。そこでShopifyのStorefrontAPI機能を使ってソフトウェア保護機能を実装しようと考えています。 StorefrontAPIをGraphQLでアクセスする想定で現在Learning GraphQLしています。 現在読んでいてGraphQLでRestAPIのエンドポイントを減らしつつ、RestAPIをミドルウェア的に使うことが出来るのか疑問を持ってます。最後まで読んでまたコメントをブログにしていきます。

Learning GraphQLを読んでます。

Learning GraphQLを読み始めました。 C++でシングルページアプリケーションを作れるSDKを今後公開していく予定です。そこでShopifyのStorefrontAPI機能を使ってソフトウェア保護機能を実装しようと考えています。 StorefrontAPIをGraphQLでアクセスする想定で現在Learning GraphQLしています。 現在読んでいてGraphQLでRestAPIのエンドポイントを減らしつつ、RestAPIをミドルウェア的に使うことが出来るのか疑問を持ってます。最後まで読んでまたコメントをブログにしていきます。