-
【Electron】PC内のローカルフォルダの画像を表示する
Electronデスクトップアプリ内に表示される画像は、レンダラープロセスに関連付いたHTML&CSSやJavaScriptから参照できるフォルダに配置するのが一般的である。しかしPC内のローカルフォルダを参照しなければならない場合どうすればよいだろうか。 このエントリーは、上記要件に遭遇した際の対応を記したものだ。 フォルダ構成 mainフォルダにメインプロセスの起点となるindex.jsを配置 rendererフォルダにレンダラープロセスの起点となるindex.htmlを配置 プロジェクトフォルダ内の画像を表示 rendererフォルダの「aizulab_logo.png」を読み込む PC内ローカルフォルダの画像を表示 Documentsフォルダの「aizulab_logo.png」を読み込む 例外 webpack-dev-serverの簡易Webサーバーを必要とするケースも考えられる。たとえばSSR開発をサポートするNext.jsやNuxt.jsは、そもそも起点とするHTMLファイルがない。pagesフォルダ配下のjsファイルがルーティングと関連付くかたちで、ページが生成されるためである。したがって、Electronの開発時には簡易Webサーバーを参照するようにして、ビルド時にはエクスポートした静的ファイルを参照させる。 開発時に簡易Webサーバーを設ける必要がある場合、PC内ローカルフォルダ参照がルートパスであるため簡易Webサーバーのルートを指し示してしまう。それでは、該当する画像を表示させることができない。 これに対処するには、 のように「file://」プロトコルを使ってほしい。これはWindowsの場合でも同様である。ところが、Windowsだと背景画像にすることができなかった。 背景画像にしたかった理由は、縦横比は保持して拡大縮小させたかった。つまりbackground-size:cover;を適用するつもりだったのだ。 これをimgタグで実現させなければならない。この対処には、 で、縦横比を保持して拡大縮小させることができる。 もしこれらの事象に見舞われたら試してほしい。そしてこのエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
AndroidでFirebaseを使ったPush通知(FCM)を実装する
初めまして 会津ラボでAndroid開発を担当している横山です AndroidでPush通知と言ったらFCM(Firebase Cloud Messaging)ですよね 今回はそんなおなじみの機能を Firebase の設定からテストまで備忘録として記載しようと思います Firebaseの設定 まずはFirebaseへFCM用のプロジェクトを追加しましょう Firebase Consoleへアクセスし、「プロジェクトを追加」から新規プロジェクトを作成します プロジェクトの追加が表示されるので任意のプロジェクト名を入力し、「次へ」をクリックします 新しいプロジェクトのデータ共有のカスタマイズが表示されますが、今回は動作を確認するだけなので割愛し「プロジェクトを作成」をクリックします しばらくするとプロジェクトが作成されますので、「次へ」をクリックします Project Overview が表示されるのでAndroidアプリを追加するためアイコンをクリックします Android パッケージ名とアプリのニックネームを入力し「アプリを登録」をクリックしますデバッグ用の署名証明書 SHA-1は後ほど入力するのでここでは省略します 次に設定ファイルをダウンロードします 「google-services.json をダウンロード」をクリックしますダウンロードが完了したら「次へ」をクリックします Firebase SDK の追加ですが次の項で行いますのでそのまま「次へ」をクリックします 下記画面が表示されると思いますが後ほどアプリで疎通確認を行いますので「このステップをスキップ」をクリックします 次は FCM を実装するための前準備を行っていきます 前準備 まずSHA1を確認するために、新規プロジェクトを作成します 私の環境を参考のために載せておきます Android Studio で Empty Activity のプロジェクトを作成します Package name は Firebase の設定で指定した Android パッケージ名を指定しなければいけないので必要があれば変更します Firebase の設定で省略したSHA-1の設定を行います 右側タブの Gradle を開き<app name> -> :app…
-
フォートナイトのプレイヤー統計「Free Fortnite API」のリクエスト方法
Epic Gamesが販売・配信するTPSゲーム「フォートナイト」もシーズン9を迎えて依然勢力衰えない印象を覚える。ほかのバトルロイヤルゲームが過度のバランス調整でユーザーを失うなか、新規モードやキャンペーン、ユニークスキンの追加で初心者プレイヤーを留まらせ、楽しませてくれる。 ところが最近では、長時間労働を告発する記事により、過酷な労働環境が暴かれて話題になっている。同種のゲームに比べて豊富なアップデートには関心させられていたが、実情は、およそ週70時間労働に及ぶ極限状態で行われていたとのことだ。 「建築ゲー」ともいわれるユニークなゲーム性をもつフォートナイトだが、こんなことでファンが減ってしまうのは大変お粗末な事案だと感じた次第である。 とはいえフォートナイトを取り巻くコミュニティは盛んで、非公式APIまで公開されるなど、成長を支えている。サードパーティ製のサービスが公開されることは、Epic Gamesとしても歓迎すべき現象だろうと思う。 このエントリーでは、非公式API「Free Fortnite API」を紹介する。それにより、たくさんのサードパーティ製アプリが公開されて、春夏冬二升五合を願うためものである。 Free Fortnite APIとは Free Fortnite APIは、数百万におよぶFortniteプレイヤーの統計データを提供する。 特徴 プレイヤーデータを取得 パッチノートを入手 最新のFortniteニュースを入手 トップ10のFortniteプレイヤー情報を取得 Fortniteサーバーのステータス情報を取得 すべての権利はEpic Gamesにある 使い方 ストア情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/store/get?language={language} 追加されるアイテムを取得する https://fortnite-public-api.theapinetwork.com/prod09/upcoming/get すべてのアイテムを取得する https://fortnite-public-api.theapinetwork.com/prod09/items/list 特定のアイテムを取得する https://fortnite-public-api.theapinetwork.com/prod09/item/get?ids={identifier} API統計データに基づく人気アイテム https://fortnite-public-api.theapinetwork.com/prod09/items/popular ユーザーIDを取得する https://fortnite-public-api.theapinetwork.com/prod09/users/id?username={User name} ユーザー統計を取得する https://fortnite-public-api.theapinetwork.com/prod09/users/public/br_stats_v2?user_id={User ID} チャレンジ情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/challenges/get?season=current 武器情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/weapons/get 最新ニュースを取得する https://fortnite-public-api.theapinetwork.com/prod09/br_motd/get?language={language} サーバー情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/status/fortnite_server_status まとめ 以上が、Free Fortnite APIのリクエスト方法だ。 かくしてフォートナイトプレイヤー統計を得ることができることだろう。あとはアイデア次第である。とはいえ、有名プレイヤー情報を取得したり、パッチノートを入手したりでも見込みありだ。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
[gibo] Gitの無視ファイルgitignoreを一瞬で作る方法
みなさんは普段どのようにgitignoreを作成していますか? 手作業で設定したり、GitHubのテンプレートから持ってきたり、前に使ったものを流用したりなど、様々な方法があるかと思いますが、 もしこのような方法で作成している方には「gibo」というツールをオススメします。 https://github.com/simonwhitaker/gibo インストール Mac環境であればHomebrewでインストールできます。 使い方 gibo listを実行すると対応する言語、フレームワークが表示されます。 だいたいの言語やメジャーなフレームワークであればリストに含まれているかと思います。 gitignoreを作成するにはdumpコマンドを使います。 以前はdump無しで良かったのですがアップデートで変更されたようです。 gibo dump NodeとするとNode.jsのgitignoreを出力します。 Railsであればgibo dump Railsのように使用する言語、フレームワークを指定しましょう。 これを.gitignoreファイルに書き込みます。 これでNodeの.gitignoreファイルが作成できます。 まとめ giboは https://github.com/github/gitignore を参照してgitignoreを作成しているようなのでgitignoreの内容も問題ないと思います。 私は以前から使用していたのですがあまりメジャーではないようでしたので紹介させて頂きました。 今まで手作業でgitignoreを作成していた方は、ぜひ使用されてみてはいかがでしょうか。
-
プログラミング初心者がAndroidアプリを作成するまでの話
全くの初心者が、簡単なAndroidアプリを作成するまでの記録です。 以前は異業種の事務員でした。あるときプログラマーを目指し、37歳で入社。日々勉強中です。 きっかけ ゲームが好きな息子達のために、アプリを作りたいと漠然と考えていました。 なぜなら彼らは手作りクッキーのように手を加えたものが好きだから、自作のアプリで遊んで欲しいという思いがありました。 ゲームのある環境に行くと、夢中になって遊んでいます。宿題をせずに、約束の時間である一時間をオーバーして熱中することもあります。食事中、団欒の時間などにゲームの話を始め、盛り上がっています。本当にゲームが好きなんだなと感じます。 私がAndroidを所有していたこともあり、Androidアプリについて勉強しようと思いました。そこで初心者向けの書籍を購入しました(はじめてのAndroidプログラミング第3版)。この書籍には数種類のサンプルアプリが掲載されていたので、まずはこれらのアプリの作成をしようと考えました。 初めてのアプリ制作 入社前の勉強期間中、自宅でAndroidStudioをインストールする際、うまくいきませんでした。原因はユーザーアカウントがカタカナだった為。当時は一人で作成していて、分からない事を聞ける人がいなかったこともあり、解決まで一週間かかりました。 また、エラーがなかなか特定できませんでした。原因はスペルミスなど初歩的なものでしたが、不慣れな為、一つのミスを見つけるにも時間がかかりました。 そもそもKotlin言語自体が全くの初めてで、内容を理解しないままコーディングしている状態でした。 そのような訳で悪戦苦闘の日々が続き、一つのアプリを完成させるまで約一ヶ月間を要しました。 入社前は別の仕事をしており、勉強時間を確保できませんでした。帰宅後は何かと慌ただしく、家事を終わらせ、子供達が寝た後、ようやく集中して勉強する時間を持てました。 限られた時間の中、途中で中断せずに完成までたどり着けたのは、手を動かし、タイピングに没頭することで充実感を感じていたからです。エラーの原因を突き止め、消すことができた時には達成感があります。また、完成したアプリで遊ぶ子供達を見ていると苦労が吹き飛びます。 現在の取り組み (何ができて、何ができないか) 会津ラボに入社し、先輩からたくさんの事を教わっています。 JavaやKotlinの文法については、反復練習のためのワークブックを作ってもらいました。それを繰り返し入力していく間に理解が深まっていると感じます。 また、効率の良い検索方法を教えてもらいました。例えばメソッドについて知りたい場合、”Android getExtra()”のように、頭にAndroidを付けて検索すれば、知りたい答えに素早く辿りつきます。 技術以外の面では、プログラマーの心得として、根気と負けん気が必要と教わりました。どんな状況であってもコツコツと努力を続けることは大切だと感じます。 技術面で分からない点は、検索で解決できる場合が多いという事は、一人で勉強している時には気が付きませんでした。 現在、Kotlin文法をある程度理解できたので、これを生かし、先輩の手助けを受けながら、DBへの登録・閲覧をするアプリを作る事が出来ました。 しかし、実務を行うための理解がまだまだできていません。その為、早くスキルアップして実務をこなせるようになることが当面の目標です。 今後は、一度完成させたアプリに新たな機能を追加していき、より使い勝手の良いアプリに拡張していきたいです。また、ファイル入出力法・フラグメント・非同期処理など、現在理解できていない部分を、新たなアプリ作りを通して勉強していきたいです。