絞り込み

最新の投稿

プログラミング Polygon
プログラミング

1. 一からアンドロイド開発をして思った、知っておくべきこと~Fragment編~

こんにちは、オキリョウと申します! このシリーズでは私が初めてAndroidアプリ(下のURLのやつ)を作成した時に「最初から知っておきたかったな・・・」と感じたことを書いていきたいと思います。   是非見ていってください↓↓↓ https://play.google.com/store/apps/details?id=com.wsr.shopping_friend 今回紹介するのは「Fragment」です。  ActivityとはFragmentが何なのかを紹介する前に、まずActivityについて書きたいと思います。 このActivityというのは、Androidのアプリにてメインで動く部分です おそらくAndroidの入門記事を読むと、MainActivityというファイルにコードを書いていると思います。このMainActivityというのがActivityの一種です。   まだまだひよっこだった私は様々な入門記事を読み漁りました。そういった入門記事のほとんどはそこまで複雑なことをしないものですからMainActivityにコードを書いています。 それを見た私は「Activityに全部書くんだな」と勝手に思い、全部書き込んでしまいました。 全部書いてしまうことの欠点実は全部の処理をActivityに書くのはそこまでいいわけではありません。Activityに書いてしまうと使いまわしが出来なくなるからです。下の画像を見てみてください。 こちらは実際に作ったAndroidアプリとなります。 左の画面にあるボタンをクリックすると右の画面に遷移するのですが、共通部分がありますね。写真には撮りませんでしたが、一番下の空白、そこも広告が入るので共通部分となります。 これらを全てActivityで書いてしまうと、画面遷移前と画面遷移後、どちらのプログラムコードにもこれらの記述を書く必要があり、非常に面倒です。 面倒なだけならいいですが、実装できなくなる例もあります。例えばBottom Navigation Barを実装するときにActivityに全部書くと、Googleが用意してくれているやつが使えなくなるので血の涙を流すことになります。 Fragment君 Activityに全部書くのは非効率で、使えるものも制限されてしまうことが分かったと思います。 ではどのようにすればいいのでしょうか? ここで冒頭のFragmentが登場します。Fragmentとはその名の通り、パーツを指します。Acitivityというメイン画面に使えるパーツというわけですね。 このFragment、何と簡単に差し替えることが出来ます。 AcitivityにFragmentを置く場所を置いておけば、あとは変え放題です。 つまり、共通部分はActivityに、違う部分はFragmentにおいてやれば再利用が出来ます。 もっと言えば、Fragmentは差し替えるものということで設計されているので、簡単にわかりやすく変えることが出来ます。 詳しくはNavigationで検索しましょう。一応参考URLも貼っておきます https://qiita.com/tktktks10/items/7df56b4795d907a4cd31 まとめFragmentを実装すること自体はたいして難しいものではありません。調べればある程度の資料は出てくると思います。ですので、しっかり調べて、どのような時にFragmentを使うのかなど知っておくのがベストだと思います。 ちなみに私はFragmentについて知った後、アプリをごっそり書き換えました…皆さんも気を付けましょう。

> 内容を見る

プログラミング Polygon
プログラミング

YouTube Live Scheduler Part3

こんにちは,「ぷらなりあ」です. 前回の記事に引き続き,YouTubeのライブ配信をまとめて表示してくれるサイトについて,実装概要の③と課題点について書いていきます.  実装概要各You Tubeチャンネルに配信コンテンツがあるか確認配信コンテンツがあればその詳細情報を取得してデータベースに登録データベースから情報を読み込んで画面に表示 使ったものPHP 7.4.13MySQL5.7YouTube Data API v3Bootstrap v4.0.0 仕組み(続き)③     データベースから情報を読み込んで画面に表示 YoutubeではビデオIDが分かれば配信URLやサムネイル画像のURLも分かる為,配信情報を表示させる.               以下のように,開始予定時間(配信開始後,実際に開始した時間に更新),チャンネルアイコン,配信者名,サムネイル,配信タイトルが表示され,ボックス内をクリックすれば別タブで配信が開く.なお,現在配信中の場合は,赤い枠で囲まれる. 図 1 配信前後図 2 配信中 また,全体としての表示は配信日時で分割され,配信開始時間が1時間区切りで改行される. 図 3 全体の表示以上のようにして,事前に配信者名,チャンネルID,チャンネルアイコン画像のURLを登録しておけば,自動的にそのチャンネルの配信情報を取得・表示してくれる. なお,クォータの削減のため情報の更新間隔は最低でも15分としてある. また,サーバ側の都合により,常にサーバ上で稼働し,一定時間ごとにデータベースの更新を行うことができなかったので,更新のタイミングを前回の更新から15分以上経過した状態で,サイトへのアクセスがあった際とした. さらに,データベースの容量を考慮し,配信情報は1日前のものまでアーカイブするようにした.(デモページでは参考のため,1か月程度アーカイブされる予定)              課題点このサイトが取得するのはライブ配信のみなので,動画投稿は表示されない. 仕様上,情報の更新に最大で15分程度のタイムラグが生れる. また,サーバ側で勝手にデータベースを更新してくれず,終了した配信は配信者1人あたり1度に最大で10個しか検索しないので,サイトに長期間アクセスしないとその間の配信情報が配信者1人あたり10個以上残らない. ただし,通常過去の配信情報は1日前までしか表示しないので,あまり影響はない(配信者が1日10回行動とか10回以上枠ガチャをしなければ) さらに,データベース更新時のアクセスが若干重く,20~30秒程度かかる. APIキーの制限が結構めんどくさいので,キーが複数必要となる.(デモページも,複数のキーを切り替えながら使用している)  その他Bootstrapめっちゃ便利・YouTube Data APIの公式リファレンス意味わからん(以上)   完成したサイトのデモページ http://harekiru.starfree.jp/youtubelivescheduler.php   参考 YouTube Data API リファレンス https://developers.google.cn/youtube/v3/docs ここまで,長々とした文章になってしまいましたが,お付き合いくださった方,ありがとうございました.今後は上で挙げたような課題の修正や,現在の実装方法では不特定多数が閲覧できるメリットがあるものの,個々人が便利ツールとして使うには導入のハードルが高過ぎるので,サイトのアプリ化などをやっていこうかなと考えています.最終的には,APIとお気に入りのチャンネルの情報を登録すれば動くようなPCアプリにしたいと思っています. その他,詳細について興味がある新入生の方はOUCRCで「ぷらなりあ」に聞いてください. では,ここまでありがとうございました!

> 内容を見る

NoImage Polygon
プログラミング

YouTube Live Scheduler Part2

こんにちは,「ぷらなりあ」です. 前回の記事に引き続き,YouTubeのライブ配信をまとめて表示してくれるサイトについて書いていきます.今回は前回の最後にご紹介した実装概要をもう少し深堀します.  実装概要各You Tubeチャンネルに配信コンテンツがあるか確認配信コンテンツがあればその詳細情報を取得してデータベースに登録データベースから情報を読み込んで画面に表示  基本的な流れは上記の①~③の様に行います.配信予定があるかどうかや,配信の開始時間やURL,配信タイトルなどYouTube上の情報を取得するにはYouTube Data API v3というGoogleの出しているAPIを使用する.また,このAPIの仕様上によりチャンネルごとの配信予定の有無と配信に関する詳細情報の一部は同時に取って来れないので,①と②のように2回に分けて行った.  使ったものPHP 7.4.13MySQL5.7YouTube Data API v3Bootstrap v4.0.0 仕組み①     各You Tubeチャンネルに配信コンテンツがあるか確認 YouTube Data API v3のsearchリソースを使う. You TubeのチャンネルIDを指定して配信予定のコンテンツ,現在配信中のコンテンツ,過去に配信済みのコンテンツ,それぞれのビデオIDを取得する.また,YouTube Data API v3には,1つのAPIキーごとに1日当たりの使用制限があり,リクエスト内容によって値の異なるクォータの数値で管理されている.APIキーの持つクォータがなくなれば日付が変わるまで使えなくなるので,リクエスト内容はビデオIDとその他最低限だけにし,取得する過去の配信コンテンツの数も必要最低限になるように工夫してある.これを実行すると以下のようになる.なお,【配信状況】には配信予定なら“upcoming”,配信中なら“live”,配信済みなら” completed”が入る.(その他詳しくは参考の公式リファレンスを参照)   https://www.googleapis.com/youtube/v3/search?part=id&channelId=【チャンネルID】&key=【APIキー】&eventType=【配信状況】&type=video   これを実行すれば,要求した情報がJSONで帰ってくる.   ②     配信コンテンツがあればその詳細情報を取得してデータベースに登録 ①でビデオIDが得られれば,YouTube Data API v3のvideoリソースを使い,配信の詳細情報を得る. ここでも,クォータの削減のためリクエスト内容は最低限となるように,配信タイトルと配信の開始予定時間,実際の開始時間,配信の終了時間だけを要求した.               https://www.googleapis.com/youtube/v3/videos?part=snippet,liveStreamingDetails&fields=items(snippet(title),liveStreamingDetails)&id=【APIキー】&key=&type=video               このようにして,①と②で得られた情報をデータベースに登録しておく.   You TubeではビデオIDが分かれば配信URLやサムネイル画像のURLも分かる為,ここまでの情報でサイトに必要な情報は一通り集められました.後は③のサイト画面の表示部分だけですが,少し記事が長くなるので今回はここまでにしたいと思います. 次回の記事では,実装の③サイトの表示に関する部分とサイトの課題点などを紹介したいと思います.  完成したサイトのデモページ http://harekiru.starfree.jp/youtubelivescheduler.php  参考YouTube Data API リファレンス https://developers.google.cn/youtube/v3/docs

> 内容を見る

NoImage Polygon
プログラミング

YouTube Live Scheduler Part1

こんにちは,「ぷらなりあ」です. 皆さんは普段,YouTubeは利用されていますでしょうか? 自分はかなりの時間YouTubeを使っているのですが,ライブ配信の通知が30分前と直前にしか来ないし,大量のチャンネルを通知設定にしていると,うるさいわりに結局配信予定はあまり頭に入ってこない今日この頃です.そこで,何個かあるお気に入りのチャンネルでテレビの番組表みたいなやつが欲しいと思い,何とかならんかなぁ~というのか私の記事です.(今回の記事は茶番と簡単な概要だけです)  はじめに(茶番)バーチャルYouTuber(VTuber)の人数は昨年11月に1万3000人を超えたらしい. これだけの選択肢がある中で,「複数推し」の人間は数多くいるだろう(単推しの人はすごい) また,その中には複窓視聴の猛者も少なくないとか……正直,私はそんな聖徳太子じみた真似は出来ないシングルタスク人間なのだが,いかに聖徳太子であっても数多の推しの配信予定を1人ずつチェックするのは一苦労だろう(たぶん) 一部の企業勢のように非常に大きな箱では,所属ライバーの配信スケジュールをまとめたサイトを運営している場合もある.しかし,これは本当に一部の箱であり,当然ながら箱内のライバーしか網羅されていない.そこで,箱や知名度に関係なく自分の推しの配信予定を自動でまとめるツールが必要となる(というか欲しい).  要するにまとめるとYou Tube Liveの配信スケジュールを自動でまとめて表示するサイトを作った.              実装概要各You Tubeチャンネルに配信コンテンツがあるか確認配信コンテンツがあればその詳細情報を取得してデータベースに登録データベースから情報を読み込んで画面に表示 使ったものPHP 7.4.13MySQL5.7YouTube Data API v3Bootstrap v4.0.0 完成したサイトのデモページ http://harekiru.starfree.jp/youtubelivescheduler.php   次回はこの実装概要をもう少し掘り下げて,ご紹介したいと思います. 先に,完成したサイトのデモも置いておきますのでよかったらこちらも見てみてください. 

> 内容を見る

電子工作 Polygon
電子工作

ハーフブリッジ回路ができるまで その5

5.スナバ回路&ブートストラップ回路の導入(~2MHz)ハイサイドのPchをNchに交換することにした。そこで生じるゲート電位の不都合※はブートストラップ回路で解決する。しかし、このときの回路ではノイズが激しく、電源電圧を9V以上にすると異常発振を起こして回路が燃えてしまう事がわかった。そこでスナバ回路を導入し、サージ電圧を低減するようにした。このスナバ回路の効果は素晴らしく、電源電圧を最大20Vまで引き上げることに成功し、動作速度では最大2MHzにも達した(数百mA以上を流す場合は500kHzまでだが・・・)。スナバ回路はRCD型を採用したが消費電流は10mA以下と、安定して動作してくれている。現在はこの回路が最新。 ※Nchはゲート電位がソース電位に対して高い場合(しきい値電圧次第)にONする。しかし、ハイサイドをNchにしてしまうとソース電位が電源電圧と同じ電位になってしまい、ハイサイドをONするには電源電圧以上の電圧が必要となってしまう。一般に、回路内での最大電圧は電源電圧であるためこれでは不都合が生じる。   なお、スナバ回路の素子定数は実験的に決定したため、理論的な計算は行っていない。

> 内容を見る