サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
inon29.hateblo.jp
概要 SwiftUIでは、変数を参照型として扱うためのBindingという型があります。 Bindingを扱うためには、@Binding という PropertyWrapperを使うことが多いと思いますが、Binding型 というデータ型と@Bindingの扱いでたまに混乱してしまうことがあります。 そのため、整理のための @Binding と Binding型について自分なりにまとめてみました。 自分が混乱しがちなことでもあり、誤った解釈があるかもしれませんので、お気づきの方がいればご指摘いただければ幸いです。 環境 Swift: 5.2.2 Xcode: 11.4.1 @Binding @Bindingは、Binding型を扱うための PropertyWrapper です。 一般的な使い方としては、別のViewに対して参照型ではない値(Bool型など)を渡す場合に使われることが多いかと
概要 最近はSwiftUIでアプリを書いているんですが、色々と戸惑うところが多かったので備忘録的にまとめておきます。 環境 Swift version 5.1 onAppearが呼ばれるタイミング 画面再描画時の挙動 SwiftUIには、Viewが初めて描画されるタイミングで呼ばれるコールバックメソッドとして onAppear が用意されています。 (この逆のメソッドとしてViewが非表示になるタイミングで呼ばれる onDisappear もあります。) SwiftUIでは、Viewの状態の変更変更を検知し、画面の再描画をすることでリアクティブなプログラムを実現していますが、 onAppearは、この画面再描画とは関係なく初めてViewが表示される1回目に呼ばれます。 Viewが再描画される時は、Viewのstructは基本的に再度生成されます。(initメソッドが呼ばれます) しかし、V
概要 SwiftUIにおける基本的な画面遷移の方法についてまとめてみました。 SwiftUIはぱっと1画面を試すのは非常にシンプルで便利なのですが、個人的にはまだ画面遷移の方法に慣れない部分もあり、整理してみました。 環境 XCode 11.4 Swift 5.2 ① NavigationLink https://developer.apple.com/documentation/swiftui/navigationlink はViewをスタック構造(push/pop)で管理して遷移する方法です。 UIKitにおけるUINavigationControllerによる遷移と同じ動きをするiOSの伝統的な画面遷移の方法になります。 NavigationLinkは、NavigationView の配下に設置したSubViewでのみ動作します。 実装例 struct RootView: View
仕事の関係でブロックチェーンのプラットフォームであるEthereumを調べることになり、 簡単な動作確認を行うためにプライベートのEthereumのネットワークを作成してみました。 ※ 調べながらのものなのでところどころ間違っているかもしれません。 ※ ブロックチェーン、仮想コイン自体の知識も深くないためそちらも認識に齟齬があるかもしれません。 動作環境 OS: ubuntu:14.04 * ※ 僕の環境はMacOSなのですが、試行錯誤なので環境がよごれないようにDockerでubuntuをインストールして試しています。 * ※ Docker周辺の操作自体は割愛させていただきます。 Ethereumとは Ethereumは、ブロックチェーンを使ったアプリケーションのプラットフォームです。 (Ethereum、ブロックチェーンの技術詳細については、ここでは割愛します。) ブロックチェーンを使
引き続き、Ethereumを勉強中です。 前回はEthereumのプライベートネットワークを構築する方法について調べました。 inon29.hateblo.jp 今回は、Ethereumのコアな機能であるSmartContractについて実際に動かしてみたいと思います。 実行環境 Ubuntu14.04 on docker スマートコントラクトとは スマートコントラクトは、Ethereumを使う上で重要な機能の一つです。 スマートコントラクトとはその名のとおり契約を行う機能で、簡単にいうとブロックチェーンを利用して自動で契約の実行を行うことができるというものです。 例えば、初めに契約の一定の条件と契約時の実行内容を定義しておくと、その条件を満たした時に自動で契約内容が処理される。 といったことが実現できます。 イメージとしては、ブロックチェーン上で行われるやり取り(トランザクション)にブロ
Ethereumのトークンとは Ethereum上でトークンとよばれるコントラクトを作成することで独自の暗号通貨を作成することが可能です。 トークンを使うことで、コイン、ポイントなど様々な仮想的な価値をEthereumの仕組みの上で利用することができます。 トークンはEhereumのネットワーク上のアカウント間で自由にやりとりすることが可能です。 トークンコンストラクト トークンを定義するためのコンストラクトには、幾つかの標準APIが定義されています。 トークンAPIの議論についてはここでされています。 Ethereumのトークンのサンプル実装は、ここにあります。 pragma solidity ^0.4.8; contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address
最近、今更ながら機械学習の勉強をしてみようと思い、色々調べていました。 僕は行列計算などの高校数学もほとんどわからないのですが、最近はPythonでのエコシステムがかなり充実してきているようで、頑張れば簡単なもの位は作れるようになるかなと思い、1から勉強しようと思っています。 まずは、Macに環境構築するところから始めます。 機械学習のライブラリとしては、Google製のTensorFlowが有名(僕が知らないだけですが..)ですが、色々みていると、Chainer、Kerasというのが最近の人気のようです。 Chainerは、日本製とのことで日本語の資料が充実しているらしいのですが、今回はKerasを使ってみます。 理由は、GoogleのTensorFlowをバックエンドに使えるということもあり、今後も成熟が期待できそうだからです。 環境構築の方法は、TensorFlowの公式ページなど色
バックグラウンドで動くプログラムServiceを使ってみました。 Serviceの使用方法 Serviceの起動方法には、 startService()を使用 bindService()を使用 の大きく分けて2種類があります。 Service起動方法の違い 起動方法による違いは、以下のとおりです。 startService Service起動中は、ActivityへIntentの発行が可能。 Service起動後は、ActivityからServiceを制御する経路がない。 Serviceの生存期間はActivityに依存しない。明示的にstopServiceが呼ばれるまで動き続ける。 bindService バインドを使うことでActivityからServiceを制御できる。 Serviceの生存期間はコネクションに依存。コネクションが切断されるとServiceは終了する。 startSe
Androidのアプリの中には、 何かのアプリを起動中もずっと画面上に残り続けるアプリがあると思います。 今回は、上記のように他のアプリケーション上で、 自分のアプリケーションのViewを表示する方法について試して見ました。 Androidのviewは、複数のレイヤーによって構成されており、 通常のアプリケーションのレイヤーは、他のアプリケーションの画面上に乗せることができません。 常に画面上に自分のアプリケーションのViewを表示し、 他のアプリケーションが起動中も自分のアプリのViewを画面上に表示するためには、WindowManagerを使ってレイヤーを指定する必要があります。 通常のアプリケーションの上に載せられるレイヤーには、 幾つか種類がありますが、今回は、画面上のViewに対してタッチイベントを取得したかったので、WindowManager.LayoutParams.TYPE
Androidで、youtubeの動画を再生するには大きく分けて2つの方法があります。 1つは、youtubeアプリに対してIntentを飛ばす方法で、 例えば下記のように記載することで直接youtubeアプリを起動することができます。 Intent intent = new Intent(Intent.ACTION_SEARCH); intent.setPackage("com.google.android.youtube"); intent.putExtra("query", "Android"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); もう一つは、YouTube Android Player APIを使用する方法です。 これは、googleが提供しているAPIで、自分のアプリ内でy
Androidで動画を再生するためには、いくつか方法があるみたいですが、 基本的な方法であるMediaPlayerとVideoViewを使った再生方法を試してみました。 MediaPlayerを使って再生する MediaPlayerで動画を再生する為には、SurfaceViewを使用します。 SurfaceViewは、グラフィックを描画する為のViewで SurfaceHolder.CallbackというInterfaceを使用してViewの管理を行います。 リファレンス http://developer.android.com/reference/android/media/MediaPlayer.html レイアウトの準備 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t
NFC(Near Field Communication)は、近距離無線のテクノロジーで、 Android 2.3からサポートされている技術です。 また、Android 4.0からは、Android Beamという機能が加わり、 2つのAndroid搭載のデバイス間でのピアツーピアのデータ交換が可能となりました。 アプリケーションへの NFC タグのディスパッチ方式 AndroidデバイスがNFCを検知すると対応するインテントを発行します。 NFCに関する起動インテントには、下記の3種類があり、 それぞれの優先度が決まっています。 [ACTION_NDEF_DISCOVERED] 読み込んだタグが、NDEF(NFC Data Exchange Format)ペイロードを持つ場合、 このアクションが定義されたアクティビティにIntentが通知されます。 起動インテントの優先度としては、最も高
ActionBarには、フラグメントを切り替えるタブコントロールを実装することができます。 タブには、タイトル文字列やアイコン画像をセットすることが可能です。 TabListenerの実装 アクションバータブのイベントを制御するにはActionBar.TabListenerを実装する必要があります。 各abstractメソッドは、以下のとおりです。 メソッド 概要 onTabSelected() タブが選択された時に呼ばれる onTabUnselected() タブが非選択になった時に呼ばれる onTabReselected() 同じタブが再度選択された時に呼ばれる 実装メソッドには、イベントを受け取ったActionBar.TabインスタンスおよびFragmentTransactionインスタンスが引数として渡されます。 コンストラクタにてあらかじめ対象のフラグメントを渡しておき、 上記の
Fragment は Android 3.0 ( API レベル "Honeycomb" ) から使用できるようになったコンポーネントです。 Fragmentを使用することで、一つのActivityに対して複数のUIを構築することが可能で、 画面の一部に対してのUI切り替えや遷移などを柔軟に行うことができます。 Fragmentの実装 Fragmentを実装するには、最低限、以下のメソッドを実装する必要があります。 Activityの状態 Fragmentで呼ばれるコールバック onCreate() システムが、Fragmentを作成したときに呼び出される。 コンポーネントの初期化処理などをここで行う。 onCreateView() FragmentのUIが描画されるタイミングでよびだされる。 FragmentのレイアウトのRootになっているViewをここでinflateする。 onPa
GCM(Google Cloud Messaging for Android)は、 開発者がサーバからAndroidデバイス上のAndroidアプリケーションに対して、 データを送信できるようにする仕組みです。 Developers Consoleの準備 Developers Consoleにて、アプリケーションを登録してAPI実行に必要なKey情報を取得します。 Google Developers Console 1.任意のアプリケーションを作成する アプリケーションを作成すると、APIコンソールのDashboardにProject Numberが表示されます。 この数字は、後ほど作成するGCM受信アプリにて、登録ID(registration ID)取得の際に必要になるので覚えておきます。 2.GCMの設定を有効にする APIs & authを選択し、表示されるリストの中からGoogl
このページを最初にブックマークしてみませんか?
『inon29.hateblo.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く