サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
qiita.com/amay077
東京都が公開した 東京都 新型コロナウイルス感染症対策サイト は、GitHub でオープンソース化されていることから、全国各地でたくさんの派生サイトがまたたく間に開設され、今日も運用されています。 このサイトから派生したサイト covid19/FORKED_SITES.md tokyo-metropolitan-gov/covid19 によればその数は 「60」 です(2020/5/10現在)。 中には、東京版を Fork して文言やデータを入れ替えただけ1 でなく、独自の発展を遂げているサイトもあります。 かくいう私自身も、愛知県版の開発 に参加しており、各地のオリジナリティ溢れる追加機能には、大いに影響を受けて参考にさせていただいています。 この記事では、そのような各地の新型コロナウイルス感染症対策サイトの、個人的に「オッ」と感じた独自の機能や表現を挙げてみました。 注)前述の FOR
先輩が「飛び地を訪れる」のが趣味1 とのことなので、全国の飛び地を調べてみました。 「飛び地のまとめサイト」なんかも既にありますが、せっかく国土地理院さんが協力されているので、ここでは国土地理院が提供する地図データを使って飛び地を抽出してみましょう。 結果だけ見たい人は ココ の適当なファイルをクリックしてみてください。ファイル名の連番は 都道府県コード です。 使用する地図データと対象とする行政区画 国土地理院が提供する「地球地図日本」の「行政界」データを使います。 地球地図日本|国土地理院 このデータに含まれる行政界は「市区町村」なのでそれを対象とします(町丁目レベルの細かい飛び地は対応できません)。 また、データの精度は高くないので、市区町村レベルでは微小とされる細かな飛び地は拾えないものと思います。 この地球地図日本のサイトから、「第2.2版ベクタ(2016年公開)/全レイヤ」のフ
BlazorでiOS/Androidネイティブアプリケーションを開発可能にする「Mobile Blazor Bindings」、マイクロソフトが発表 - Publickey これなんですけど。「ざまりん乙」的な声が今回もチラホラ聞かれたので「マジか!それはすごい」と思って試してみました。 サンプルアプリを動かしてみた ASP.NET Blog / Announcing Experimental Mobile Blazor Bindings こちらの手順の通りで、簡単に試すことができます。1 まあ、ソリューションを見てみただけで Xamarin(Xamarin.Forms アプリ) なんですけども。 inspect してみた 続いて、Android 向けのプロジェクトをエミュレータで実行し、Android Studio 付属の Device Monitor で inspect してみました(
AWS Lambda のローカル開発環境を serverless-offline で構築して VSCode でデバッグできるようにする AWS Lambda の node.js による API 開発のために SAM Local を使っていたのだけど、リクエストの度に docker コンテナを起動しなおすその仕組みは、FaaS のコンテナ実行を模している点はよいのですけど、レスポンスが遅くて、開発を加速させるには足かせになっていました。 そこで Serverless Framework の serverless-offline を使用して、 docker を使わずに Lambda を模することにしました。 Serverless Framework の導入 その導入方法は、 Serverless + TypeScript + AWS Lambdaの開発環境構築 - Melchior を参考にし
この投稿は、 Why use Xamarin in 2019?! | Daniel Hindrikes を 元投稿者の許可を得て 日本語訳したものです(訳がヘンだったら教えてplz)。 先週、ストックホルムでモバイルデバイスにフォーカスした .NET のコミュニティイベントを開催しました。ひとつの大きな議論は、モバイルアプリ開発を始めるのにどんなツールやフレームワークを使いますか?でした。このブログポストはその議論にインスパイアされたものです。 Xamarin とはなにか? まず始めに、我々は Xamarin と Xamarin.Forms は同じものではない事を覚えておく必要があります、しかしこれらは同じものであるとよく説明されています。私は Xamarin.Forms を、複数のプラットフォーム向けの UI を共通のコードで構築するためのフレームワークと定義します。Xamarin(Xa
de:code が終わってからずっと Xamarin.Forms アプリでメモリリークするパターンについて考えています。 考えを吐き出すために、図が少ないですがだらだら書きます。「Xamarin.Forms の」と第を付けておきながら、それに限らない話な気もします。 Xamarin.Forms アプリを作ると、現在では一般的には下図のようになると思います。 私が作ったサンプル amay077/XamMaterialTodo: Xamarin.Forms Visual によるマテリアルな iOS/Android アプリのサンプル もこうなっています。 ここで、図の箱と箱をつなぐ先の ◆ は保持(UML クラス図でいう Composition のような)関係を表しています。たとえば、Android.app.Application は MainActivity を保持しています。 Xamarin
「ネイティブアプリ開発者は絶滅危惧種なのか?」への感想文 - ナカザンドットネット や Office 365, MS teams, Skype, @code, and the edge debug protocol are being rewritten in js instead of C++ with special MS tooling : programming への反応で、「最近 Xamarin 生きてんの?」という声がちらほら聞こえたので書いてみました。 もともとの 「ネイティブアプリ開発者は絶滅危惧種なのか?」 という問いには、「緩やかにそうなっていくでしょうね」 という冒頭の記事を書かれた @Nkzn さんとほぼ同じアンサー1 なので、この話題を Xamarin と絡めたらというネタで書きます。 マイクロソフトなのになんで React 使ってんの?Xamarin は? Of
DroidKaigi 2019、今年も楽しかったれす。 セッション、EXPO、conf-apps などの「個人の感想」です。 登壇の感想はまた別で。 セッション DAY1 西新宿駅じゃなくて、新宿駅西口に来ちゃったぞ — あめいぱわーにおまかせろ! (@amay077) 2019年2月7日 Server-side Kotlin for Frontend: 複雑なAndroidアプリ開発に対するアプローチ https://droidkaigi.jp/2019/timetable/70925 弊社でも、モバイル向けの REST API をそれ専用に作ったりしているので、それの発展形が BFF(Backends for Frontends) と理解できた。 たくさんのクエリと結果を含んだ「神API」のできてしまう問題も分かりみが深い。 今は Java9 でサーバーサイドを開発しているので、Kot
Xamarin Profiler と Android Profiler を併用して Xamarin Android アプリのメモリ使用量を測定するAndroid.NETXamarin Xamarin 製アプリのメモリのプロファイリングは、 .NET(mono ランタイム) が管理するオブジェクト Java(Dalvik) が管理するオブジェクト を意識する必要があります。 使用するツール .NET(mono ランタイム) が管理するオブジェクトのメモリ測定には、 Xamarin Profiler - Xamarin | Microsoft Docs を使用します。これは Visual Studio と連携するアプリで、IDE から Run Start Profiling とすると起動できるものです。 Java(Dalvik) が管理するオブジェクトのメモリ測定には、 Android Pro
INSERT INTO item SELECT '鈴木' as 所有者, * FROM item WHERE 所有者 = '田島' では、列数が合わないのでエラーになっていまいます。 INSERT または SELECT に列を列挙すればできるけど、こういうことをしたいテーブルが100くらいあるので、とてもやってられません。 そんなときは、 CREATE TEMPORARY TABLE tmp_item FROM item WHERE 所有者='田島'; UPDATE tmp_item set id = '鈴木'; INSERT INTO item SELECT * FROM tmp_item; というように、別のテーブルを経由するとよいです。 CREATE TEMPORARY TABLE tmp_item tmp_item としているので、このテーブルはDBから切断すると消えます。 SQL
TypeScript 3.0 がリリースされました。 Announcing TypeScript 3.0 / TypeScript 追加機能のひとつ、Project references は、ちょうど仕事で「どうするのがいいの?」と迷ってたところだったので、さっそくやってみました。 話としてはよくある、 複数のプロジェクトから参照される "共通プロジェクト" の在り方 です。 Project Reference 適用以前 Project Reference 適用前(つまり現状)は、次のような構成になっていました(説明簡略化のため、client -> shared のみを書いてますが serverside からも shared を参照しています)。 root ├── client │ ├── tsconfig.json │ └── src │ └── main.ts └── shared └
(バージョンが書かれていないのは公式Webサイトで情報を得られなかったもの) Node.js(JavaScript) はすべてのベンダーでサポート済み。 次に多いのは Java、その次が C#(.NET Core) になりました。 Java はマルチプラットフォーム前提ですが、 .NET Core も Linux や macOS などの非Win環境をフルサポートしているため、FaaS の実行環境が Windows でない場面でも使うことができます。 簡潔な処理だけを FaaS にまかせて、複雑な処理はホスティングしたアプリケーションサーバーやバッチサーバに行わせるのが一般的でしたが、サーバーレス、マイクロサービス化の流れが強くなってきているので、FaaS でやりたい事も増えつつあります。 その場合 JavaScript(TypeScript) ではツラい場面も増えると思われるので、他の(希
これ の通り、Rx には本来の目的のみを遂行してもらいたいので考えみました。 まずはこれを読もう 下記に書いてある以上の説明はないです(圧倒的感謝っ) 実例によるkotlinx.coroutinesの手引き(日本語訳) - Qiita [Kotlin]コルーチンのChannelのハマり所 | Developers.IO Kotlinコルーチンによるリアクティブストリームのガイド (日本語訳) - Qiita Kotlin の Channel と BroadcastChannel Channel は「キューのようなもの」と例えられます、BroadcastChannel も同じく。 Channel<T> は、送信者と受信者が 1:1 で、 BroadcastChannel<T> は、送信者と受信者が 1:n です。 Broadcast と言われるように。 両方使ってみます。 // Channe
Debugging with Visual Studio Code · GoogleCloudPlatform/cloud-functions-emulator Wiki の内容を少しアレンジして。 試した環境 macOS node - v6.11.5 VSCode - 1.24.1 Google Cloud Platform の任意のアカウント(ログインのみが必要で何もデプロイされません) firebase-tools と @google-cloud/functions-emulator をインストールします。
これ↓なんですけど、意外と RT や Like が付いてたので、ちゃんと書きますね。 しっかしMicrosoftのドキュメントシステム良く出来てるなー。右のEditボタン押すとGitHubが開いてすぐPR送れる。あちらでマージされれば即サイトに反映される。Contiributorsに自分のアイコンが増えた♪ これはフィードバックするのに「面倒」は理由にできないですぞ。https://t.co/9KhAwhV5PP pic.twitter.com/r46zFUvkEp — あめいぱわーにおまかせろ! (@amay077) 2018年6月12日 このツイは Microsoft の製品やサービスのドキュメントについてなんですが、 Microsoft Docs というポータルがありまして、同社のサービスの多くはここでドキュメント公開されている模様です。 ここで公開されているドキュメント群は、バック
Firebase Cloud Messaging を最新の開発環境で使おうとしたらいろいろハマったので手順をまとめてみました。 だらだら長くなったので短くまとめると、 com.google.firebase:firebase-messaging:17.0.0 と apply plugin: 'com.google.gms.google-services' が仲が悪い ので apply plugin: 'com.google.gms.google-services' を使わないようにした それに伴い google-services.json も使わないようにした Firebase のプロジェクト設定は環境変数から埋め込むようにした です。 1. とりあえず Android Studio で新規プロジェクトを作る Android Studio のバージョンは 3.1.2 Include Kot
ここ数年、特にモバイルアプリ開発で流行ってるUIデザインパターンならなんでもですが、MVVM を例にすると、Usecase における Repository からの結果の受信、ViewModel における Usecase からの通知、あるいは View の変更の通知に RxJava の Observable<T> を使用する例は多いと思います(かくいう自分もそう作ってきました)。 DroidKaigi 2018 のアプリもそうですね。 via DroidKaigi 2018 official Android app しかし最近、この「つなぎ」の役割に RxJava を使うのはやり過ぎでは?と思うようになっています。その理由を次に書きます。 RxJava を使うのをやめたい理由 1. Rx は、できることが多すぎる RxJava の学習コストが高いことは知られています。 つなぎの型が Obse
DroidKaigi2018 でもセッションがあった Flutter がβ版になりました。 グーグル、Android/iOS対応のUIフレームワーク「Flutter」ベータ版を公開 - CNET Japan これでまた、にわかにクロスプラットフォーム開発ツール(以下 "X-Plat Tool" と略)が盛り上がってる気がします。 Flutter が出たからと言って、Xamarin や React Native など、先行する様々な X-Plat Tools が死ぬわけでもなく、ただ選択肢が増えて嬉しいやら戸惑うやら、ということです。 ここでは、Flutter と、先行する React Native、Xamarin を(独断を交えて)比較して、それらの違いを見てみたいと思います。 共通化できる(とされる)プラットフォーム X-Plat Tool がどのプラットフォームまでカバーするかを比べて
sessionsFeedbackViewModel.isLoading.observeNonNull(this, { binding.progress.setVisible(it) }) うん、これだけのコードで it が false の時だけ動作しない、なんてありえない。 ここはシロだ、と判断しました。(setVisible() はこのアプリでの拡張関数なので、一応そちらも見つつ) ViewModel を調べる では次に ViewModel、 sessionsFeedbackViewModel.isLoading が false にならないのではないか? を疑います。 それは SessionsFeedbackViewModel.kt の次の箇所です。 fun submit(session: Session.SpeechSession, sessionFeedback: SessionFe
最近 Kotlin をよく使っているので、 C# とくらべて「お、これはイイな!」と思ったところを挙げてみました、今後足してく予定。 これ↓も似たような話かな。 C# + ReactiveProperty vs Kotlin + RxProperty : Command 編 - Qiita データクラス C# public class AddressCard { public string Name { get; } public string Phone { get; } public AddressCard(string name, string phone) { this.Name = name; this.Phone = phone; } } data class AddressCard(val name:String, val phone:String) fun main() {
LiveData について勘違いしていたことをいくつか からの続きです。 前記事では LiveData は、 購読解除を自動でやってくれるので便利 DataBinding(=ObservableField)としては使えない 最低限の合成しかできないので物足りない という事を書きました。 今回の記事では、上で挙げた微妙な3つの点を解消すべく、RxJava と LiveData と DataBinding をいい感じで併用してみたいと思います。今回もコードは Kotlin です。 RxJava with Android DataBinding RxProperty を使おう! RxPropertyでRxJavaとAndroid Data Bindingを連携する - Qiita はい終了。 RxProperty について書くの何度目なんだ、自分。 作者の @k-kagurazaka@githu
Android Architecture Components(以下 AAC) に含まれる 「LiveData」 のサンプルを Kotlin で書いてみました。 LiveData とは LiveData とは、「ライフサイクルに応じて自動的に購読解除してくれる通知プロパティ」です。 モダン(と呼ぶにはもはや古い?)なUIパターンでは、UI側はデータの変更を検知して自身を書き換えます。 すなわちUI側では、「データを購読する」というコードを書くわけですが、「購読をやめる」というコードも合わせて考えなければなりません。しかし Android の Activity や Fragment はライフサイクルが複雑で、購読を管理するのも一苦労であり、不具合の温床になりがちです。 LiveData は AAC に含まれる Lifecycle と深く結びつき、この「購読解除」をほとんど自動的に行なってくれ
今年も Advent Calendar 1番手、よろしくおねがいします。 さて、Windows + Visual Studio 2017 を使った iOS アプリの開発でも、 Remoted iOS Simulator Xamarin Live Player などの登場で、「おっ、これなら iPhone 端末なしで(Mac なしで) iOS アプリ開発できるんじゃね?」 という風説がチラホラ聞かれます。 私は「んなことはない」と考えているのですが、実際どの辺が「ほら iPhone 実機必要でしょ?」なのかを検証してみようと思います。 そして、 iPhone 実機が必要だということは Mac も必要だということになりますからね。Mac がないとアプリをビルドして実機に転送できないので。 今回は、 「iPhone 実機は必須」 → 「iPhone 実機がないと困ったことが起きる可能性がある」
ボタンを押したら、数値が1ずつ加算されていく、というやつの ViewModel 側 C# + ReactiveProperty の場合 Counter がラベルにバインドする数値、 Increment がボタンにバインドするコマンド。 public class MainViewModel { public ReactiveProperty<int> Counter { get; } = new ReactiveProperty<int>(0); public ReactiveCommand Increment { get; } public MainViewModel() { // Increment コマンドは、 Counter が 10 未満の間、使用可能 Increment = Counter.Select(x => x < 10).ToReactiveCommand(); // I
つい最近まで PCL な Xamarin.Forms では、 ReactiveProperty の 2.x 系しか使えないと思っていたのですが、いろいろな方の協力で使える方法が分かったので示しておきます。 今から ReactiveProperty を(Xamarin で)使ってみたいぞ、という人向けのクイックスタートも兼ねて。 1. ソリューションを作る Visual Studio for Mac で行きます。 新しいソリューションから、 アプリ - 空白フォームのアプリ を選んで、適当な名前で作成します。ここでは 「ReactivePropertySample」 としますね。 2. PCL のプロファイルを "44" に変える ソリューションが作成できたら、3つあるプロジェクトの中のコアプロジェクト(.Droid や .iOS のついてないもの)を選択して右クリック → 「オプション」を
Xamarin.Forms(以下 XF とします)を本格的に開発に導入してみようと思ってるんだけど、その時のプロジェクト(アセンブリ)構成はこんな感じかな、というのを考えてみた。 コンセプト XF を使う理由は、Viewのワンソース化よりも DataBinding機構が使えること いざという時逃げられるように XF への依存を最小限にする iOS/Android 対応アプリ開発のこと、他は知らん MVVM で PCL で、PCL のところを最大化する プロジェクト構成図 角丸四角形がプロジェクトを、矢印は依存を示す。 左から説明。 XF.Android, XF.iOS, XF.Core Xamarin.Forms ソリューションを作成するとテンプレで作られるプロジェクト群。 XF.Core でプラットフォームに依存しないView(ボタンとか)を、XF.Android/XF.iOS でプラッ
Kotlin のマルチプラットフォーム対応、アツいですね。 KotlinConf 2017 Keynote レポート | TechBooster JetBrains/kotlinconf-app: KotlinConf Schedule Application 上の kotlinconf-app の対応プラットフォームは、 サーバーサイド(Kotlin for Server-side, Ktor) Webページ(Kotlin/JS, React) Android(Kotlin/JVM) iOS(Kotlin/Native) となっています、すご! Xamarin と比べてどうよ? 普段 Xamarin を使用して Android/iOS アプリを開発しているので、クロスプラットフォームアプリ開発技術が増えて嬉しい限り。 しかも Kotlin で書けるのはとてもよいですね。 正直、C# より
私は、B2B系のシステム開発会社を3社ほど経験していますが、そのいずれも、 始業時間、終業時間と作業の内訳を 月末にEXCELで 提出する決まりがありました(うち1社は自社システムだったけど)。 基本的にダメ人間で、「毎日仕事終わるときに記入する」ということができないので、時には「Windowsのイベントログのシャットダウン時刻を抽出して」記入したりしていましたが、近年は在宅勤務になったこともあり、PCが起動(スリープ)しっぱなしなことも多く、これも使えなくなってしまいました。 これはもう誰かに「仕事終わった?」って聞いてもらうしかない。 現職では Skype を常駐させている(個人では Slack)ので、Skype の Bot に聞いてもらおう! ということで作ったのが「タイムカードボット」です。10日くらい自分で使ってて安定してきたので公開しちゃいます。 概要 使い方は簡単で、Skyp
Android で「浮いてるように見える」アニメーションを実装する機会がありまして。次の画像のようなものなんですが。 このアニメーションは、 2秒かけて上へ少し移動する 2秒かけて下へ少し移動する を「連続で」「繰り返し」実行させることで実現しています。 「連続で」とは、 1. のアニメーションが終わったら 2. のアニメーションを開始する、という意味です。 Java-Android では… これを Android の View のアニメーションAPI で実現すると、普通にひどいコードになります。次がそれ。 // 2秒かけて上へ移動するアニメーション final TranslateAnimation anim1 = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.
次のページ
このページを最初にブックマークしてみませんか?
『@amay077のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く