Tech
-
「7 日間でハッキングをはじめる本」を読んだ
今回読んだ「7 日間でハッキングをはじめる本」では、TryHackMe という Web サイト を利用して、合法的に脆弱なサイトをハッキングし、攻撃者が使うツールを学ぶことができる。 -
Android 14(API レベル 34)にアプリを移行する
Android 14 対応は、主にセキュリティ関連の変更が必要となります。この記事では、対応した移行項目とフォアグラウンドサービスのリジェクトに対する修正内容を共有します。 -
Android アプリ改善 2023 年(version catalogs, build-logic, Baseline Profiles)
最新の Android Studio から新規プロジェクトを作成すると、見慣れない書き方がちらほら登場します。この記事では、仕事の Android プロジェクトをその最新のビルド構成に追従したときの覚え書きと、今年対応したビルド時間と起動速度の改善内容について触れます。 -
ベースラインプロファイルによるアプリの起動時間短縮
ベースラインプロファイルをアプリの AAB, APK に含めて配信することにより、アプリの起動時間が短縮されます。ベースラインプロファイルに関する詳細は 公式ドキュメントに任せ、この記事では実際の導入方法を共有します。 -
静的サイトジェネレーターを Next.js から Astro に乗り換えた 🧑🚀
2011 年当初 WordPress で書き始めたこのブログは、途中からは Hugo による静的サイトに置き換わり、その次は Next.js, そしてこの記事からは Astro を採用しています。 -
Android 13(API レベル 33)にアプリを移行する
例年通り 9 月に Android メジャーバージョンが公開されると思いきや、今年は 8 月中旬に来ましたね。ということで今週はお仕事のアプリを Android 13 対応していました。 -
AWS Route 53 から Google Domains への移行
現在、このブログは Next.js + Firebase Hosting + AWS Route 53 を利用して運用しています。今回、利用しているウェブサービスの棚卸しとして、Route 53 から Google Domains への移行を行いました。 -
静的サイトジェネレーターを Hugo から Next.js に乗り換えた
職場のプロジェクトに Next.js を導入する事例が増え、流石に勉強するかと Next.js のチュートリアルを触りました。以前、チュートリアルを遠目に眺めた感じでは Next.js は Server Side Rendering フレームワークという印象でしたが、v9.3.0 以降 Static Site Generation(以降、SSG)機能に注力しているように見えます。 -
YAMAP Android の CircleCI 環境
YAMAP エンジニア Advent Calendar 2019 の 15 日目の記事を担当する rakuishi です。 この記事では「YAMAP Android の CircleCI 環境」をお話します。 -
ARCore: AR 空間に緯度経度をもとにオブジェクトを配置する
Android では ARCore という AR を表現できるライブラリ群が提供されている。これを利用して、ヘンゼルとグレーテルのように、自分が歩いた場所を緯度経度として保存しておいて、その緯度経度にクッキー(球)を置くアプリを作ろうと試みた。 -
Android App Bundle でアプリサイズを削減
Android Studio 3.2 + Android Gradle Plugin 3.2 の環境が揃えば、以下のふたつの機能が使えるようになります。 -
GitHub Organization に紐付く Project の CircleCI 設定方法
CircleCI Local CLI をインストールするProject に .circleci/config.yml を設置し、対応環境の記述をするcircleci build .circleci/config.yml で成功するまで調整する(キャッシュ機能など一部足りない機能があるため、ある程度は割り切る)成功すればそれを master ブランチ(デフォルト)に push するhttps://circleci.com/ から GitHub アカウントでログインする左上の “Swith Organization” より企業アカウントを選択する”ADD PROJECTS” より、Project を探す。権限が足りなくて “Contact repo admin” となっているため、管理者に問い合わせて “Set Up Project” より “Start building” を押してもらうそれ以降は管理者でなくても “Follow Project” できるようになる後は手元で config.yml を調整したり、push して動作を確認する -
Google Pixel 3: ARCore で拡張現実を体験してみた
Google Pixel 3 を買いました。写真が肉眼の印象に近いのと、低めのバイブレーションが特に良いですね。 -
既存のプロジェクトの Support Library を AndroidX に移行する
Android の下位互換性を提供している Support Library の整理の一環として、AndroidX という仕組みが導入されました。2018/09/21 に 1.0.0 がリリースされたので、プロジェクトを AndroidX に移行しました。この記事はその時のメモとなります。 -
Kotlin: 関数オブジェクトと Invoke でクリックイベントをシンプルに書く
Kotlin では関数をオブジェクトとして扱うことができます。そして、その関数オブジェクトを invoke() すれば、その関数を発火することができます: -
Android 9 Pie 時代のフォアグラウンドサービス
Android 9 Pie(API レベル 28)が正式にリリースされ、会社でも Android 9 対応のアプリをリリースしました。 -
Vue.js / Nuxt.js を採用した Web 開発で得た知見
2018 年に入ってからは Vue.js / Nuxt.js を採用した Web サイト開発に携わっています。ログイン機能がある Web サイトで、データは API サーバーを叩いて取得するという構成。最近のフロントエンド開発は、感覚としてはアプリ開発ですね。 -
Python の深層学習ライブラリ Keras で手書き文字の認識を始めよう
去年の始めに読んだゼロから作る Deep Learning では、外部ライブラリを極力使用せずにディープラーニング(深層学習)の基礎を学べる良書だった。この記事では、ニューラルネットの構造を簡単に記述できる Keras ライブラリを使用し、手書き文字の認識まで一通り行う。 -
何故、仮想通貨ごとに値段がかなり異なるのか?お買い得に見える仮想通貨の時価総額を見てみよう
現在、ビットコインの値段は 100 万円に届いています。凄いですね。一方、イーサリアムは 5 万円、ネムやリップルは、20 ~ 30 円となっています。一見、ネムやリップルがお買い時に見えますが、時価総額を比べるとまた違う見え方ができます。 -
「お客様用ビットコインアドレスは変わることがあります。」ってどういうこと?ビットコインのアドレスが複数作られる仕組みとは
bitFlyer でビットコインの受け取り用のアドレス確認画面の注意書きに「お客様用ビットコインアドレスは変わることがあります。」と書かれています。 -
オープン型・クローズド型のブロックチェーンの特徴から見る、ビットコインとリップルの違い
前回の記事では、ブロックチェーンの特徴について見てきました。ブロックチェーンと聞くと、ブロックチェーン = ビットコインという固定概念からか、誰でも参加できる、すなわちオープン型をイメージしがちです。 -
仮想通貨以外にも利用されるブロックチェーンの特徴(改ざん耐性・低コスト・低障害)
ブロックチェーンは、もともとビットコインのための技術として開発されましたが、過去の取引の改ざんが難しいという特性から、現在では、仮想通貨以外の分野にも利用されます。 -
ビットコインの抱える問題点とこれからの可能性(可能性編)
ビットコインでは、時間あたりの取引数が限られており、送金がなかなか行えない状況が続いています。このことをスケーラビリティ問題といいます。どの程度、送金が行えない状況かは、以下の記事に書いています。 -
ビットコインの抱える問題点とこれからの可能性(問題点編)
ビットコインには、スケーラビリティ問題(単位時間あたりに処理できる取引の量)を筆頭に多くの問題を抱えています。この記事では、その問題点(または危険性、リスク?)について紹介します。 -
「仮想通貨をフィアット(Fiat)に戻す」とは?
仮想通貨の情報を集めているとよく**フィアット(Fiat)**という単語を目にします。自分は、仮想通貨を始めてからこの単語に触れたので、一般単語ではないと思います。 -
仮想通貨初心者ガイド(11/22 更新)
仮想通貨をはじめるために必要な知識をざっと得るための記事です(11/18 更新)。販売所の選びかたから売り買いの仕方、仮想通貨の技術や背景も紹介します。 -
仮想通貨のネットワーク維持に使われている仕組みを比べてみた。Proof of Work, Proof of Stake, Proof of Importance
ビットコインではそのシステムを維持するために、プルーフ・オブ・ワーク(PoW)という仕組みが使われています。今のところ、ビットコインは時価総額こそは一位ですが、ビットコインが採用している PoW は問題を抱えています。 -
何故、ビットコインは分裂するのか?まだまだ成長途中のシステムか、あるいは継ぎ接ぎだらけのシステムか?
仮想通貨(ビットコイン)の世界に出会うまで通貨が分裂する、という表現は聞いたことがありませんでした。そして、その世界に慣れ親しんだ今でも通貨が分裂するのは、不思議な表現だなと思います(法律的には仮想通貨は、通貨ではなくモノですが)。 -
仮想通貨のクレジットカード決済は便利だけれど、手数料が高め
仮想通貨を買うためには、仮想通貨取引所の指定口座に振り込んで日本円で買うか、クレジットカードで直接仮想通貨を買うことが出来ます。 -
仮想通貨の普及により全銀ネットは消えてなくなる?全銀ネットとは?
「全銀ネットは消えてなくなる」SBI ホールディングスの 2018 年 3 月期第 1 四半期、決算説明会において、SBI ホールディングスの北尾吉孝社長が発言した内容です(記事末尾に参考として挙げてあります)。 -
仮想通貨(ビットコイン)はいくらから買えるの?実はワンコインから始められます!
11 月 12 日現在の 1 ビットコイン(BTC)あたり日本円で 71 万円。「1BTC 買うのに、給料何ヶ月分なんだ?ビットコインが流行ってるけど、自分には無理だな―」と思っていませんか? -
ビットコインは何故、金に例えられるか?ビットコインと金とマジックナンバー 21
ビットコインはしばしば金に例えられます。ここでは、ビットコインにまつわる 21 の数字を通して、その理由を見ていきましょう。 -
ビットコインを送金するときの確認・承認・Confirmation とは何なのか?
bitFlyer でビットコインを送金するときの注意書きには、以下のように書かれています。 -
仮想通貨を売り買いするときに注意したい値段の差(スプレッド)
仮想通貨を売り・買いするには、ふたつの方法があります。仮想通貨販売所を使う方法と、トレード画面で売り買いする方法(取引所)です。 -
法定通貨と仮想通貨の基軸通貨
法定通貨に基軸通貨があるように、仮想通貨にも基軸通貨があります。それを知っておくと、仮想通貨の値動きに理由付けができるかもしれません。 -
ビットコインの取引をリアルタイムで見てみよう
ビットコインの取引をリアルタイムで見れるサイト chainFlyer では、グラフィカルに、いま世界中で行われている取引を見ることができます。 -
仮想通貨(ビットコイン)は、それを維持する人(マイナー)への報酬をどのように用意しているのか?
多くの国家はその国の法定通貨を発行しています。これは、国の銀行が流通量をコントロールすることができる、他国に自国の経済活動を大きく左右されないようにする、などのメリット(思惑?)があるからだと思われます。 -
仮想通貨(ビットコイン、オルトコイン)の種類と時価総額
自分が仮想通貨を始めたとき、仮想通貨はビットコインだけだと思っていました。 -
仮想通貨(ビットコイン)と電子マネーはどう違うのか?
わたしたちが日常的に使っている日本円という通貨は、コインやお札といった手で触れられるリアルなかたち、通帳に記帳されたインク、またネット銀行上のデジタルな数字として認識することができます。 -
Android Oreo: アダプティブアイコン実装ガイド
Android Oreo では、端末メーカーが選択したマスクに応じてアイコンが自動生成される、アダプティブアイコンを利用できます。開発者は、背景色(もしくは画像)とフォアグラウンド画像を用意すれば、それぞれの Android 端末に沿う、いい感じのアイコンがホーム(ランチャー)、ショートカット、設定、共有ダイアログ、オーバービュー画面に並ぶことになります。 -
Android Oreo: 通知とサービスのフォアグラウンド実行
Android Oreo (API Level 26) を compileSdkVersion, targetSdkVersion とするアプリは、通知と、サービスのフォアグラウンド実行に対して新しく制限が加えられました。従来の SdkVersion を指定してビルドしたアプリを Android Oreo 上で動かす場合は、影響はありません。 -
仮想通貨取引所で購入した NEM ($XEM) を Nano Wallet に送金する
ここ 2 ヶ月の仮想通貨の値動きが面白くなく、Android Widget アプリを作ったり、ブロックチェーン技術の本を読んだりしています。その暇潰しの一環として、仮想通貨取引所で購入した NEM ($XEM) を Nano Wallet で管理してみることにしました。 -
仮想通貨の価格をウィジェットに表示する Android アプリを作りました
この 3 ヶ月ほど、仮想通貨を初めてて、NEM(単位は $XEM)や Ripple(単位は $XRP)を含めた仮想通貨を買っています。ついでに、ブロックチェーン技術関連企業の株と、原子番号 78 のプラチナを買いました。貴金属を買うのは、鉱石を集めていた小学生の時の夢の延長でした。 -
Quicka: SFSafariViewController が使えるようになりました
以前から要望を頂いていた内蔵ブラウザの代わりに SFSafariViewController を使えるようになりました。SFSafariViewController では、標準 Safari のログイン情報やクッキーを引き継げます。 -
Google Fit と連携できる体重管理アプリを作りました
GW を利用して体重管理アプリを作った。今年の目標は「自分を好きになる」で自分のコンプレクスのいくつかはお金で解決できそうだということでまあ色々としている。その中のひとつが「平均体重まで太る」というのがあり、ジムに行って筋肉をつけている。今のところ 1 ヶ月に 1kg のペースで増えている。 -
Error:Minimum supported Gradle version is 3.3. Current version is 2.14.1.
Android Studio で Gradle のバージョンを上げた際、下記エラーで躓いたのでメモしておきます。 -
「オフライン郵便番号検索の決定版! - 郵便番号検索くん for Android」を 3 年ぶりにアップデートしました
最近、放置していたアプリのアップデートを頑張っていて、iOS の「Quicka2 - 検索を快適に」「オフライン郵便番号検索の決定版! - 郵便番号検索くん」に続いて、Android の郵便番号検索くんをアップデートしました。アップデートしたと書きましたが、実は別アプリとしてリリースしています。 -
Macbook Pro / Touch Bar: macOS Sierra 初期設定
仕事で新しい MacBook Pro / Touch Bar を使うことになったから、macOS Sierra の初期設定を自分用のメモを兼ねてまとめておきます。基本的に、4 年前に書いた記事から変わっていません。ガリガリ魔改造しているわけでなく、標準のシステム環境設定と、最低限のアプリを使用しています。 -
「ゼロから作る Deep Learning」を読んだ
Deep Learning(深層学習)を勉強するために、ゼロから作る Deep Learning を手を動かしながら読んだ。手書き数字の画像データ MNIST を正しく判別するのが本書のテーマだ。 -
Amazon S3 で運用しているブログを HTTPS 化した
勉強のためにブログを HTTPS 化しました。このブログは静的サイトジェネレータ Hugo で生成したファイルを Amazon S3 にホスティングしており、ドメインも Amazon Route 53 で管理しています。 -
Alfred 2 Workflow Window Resizer
ホットキーからウィンドウサイズを最大にしたり、左右に分割する時に Moom · Many Tricks を愛用していたのだけれど、同機能を AppleScript を利用して Alfred Workflow に落とし込んでみた。Alfred は仕事効率化 macOS アプリ。Workflow 拡張機能を使うには、有料のパックを買う必要がある。 -
Hello, React.js!
今の業務では、JavaScript で Single Page Application を作る機会はないのですが、後学のために React.js の開発環境の構築と、いくつかチュートリアルを写経しました。この記事では、React.js アプリをビルドし、Hello, World! アプリを作成するところまでを紹介します。 -
Jupyter (IPython) Notebook の Output を等幅フォントに変える
データサイエンスの勉強のために、Python 3.5 とデータサイエンスのための各種ライブラリが詰まった Annaconda をダウンロードして、Jupyter (IPython) Notebook を使用しています。 -
iOS と Android の画像周りチートシート
iOS 7 以降(iPad 含まない)、Android 4.0 以降で必要になる画像素材をまとめています。 -
ネット配信されているアニラジの更新情報をまとめたサイトを作った
仕事で RESTful API サーバーを Ruby on Rails で開発した。その時の勉強のために借りた VPS(仮想専用サーバー)を再利用して、普段聴いているアニラジの更新情報をまとめたサイトを作った。 -
Amazon S3 にサイトのホスティング先を移行した
このブログは静的サイトジェネレータ Hugo によって生成された静的ファイルをアップロードして作られています。今回、ホスティング先を Sakura Internet から Amazon S3 (Simple Storage Service) に変更しました。 -
さくらの VPS:WEBrick と Unicorn + Nginx で Ruby on Rails の表示まで
さくらの VPS に Ruby on Rails の環境を導入するまでの手順をまとめました。まずは、Ruby 付属の Web サーバー WEBrick による動作を確認し、その後に Unicorn + Nginx による動作を確認します。 -
さくらの VPS:環境設定から Web ページの表示まで
こういうのは数日後に確実に忘れるのでメモしておきます。 -
Docker で WordPress サイト開発を始める
以前、WordPress のローカル仮想環境の構築を Vagrant を利用した VCCW で試したことがあるのですが、以下の理由から使うのを諦めたことがありました。 -
Android のライブラリの作りかたと Bintray にアップロードするまでの手順
Aileron という Android のライブラリを作成しました。Activity や Fragment の生成時に、Intent に詰めた引数を取り出す手間を減らすためのライブラリです。ちなみに、Aileron(エルロン)とは、飛行機の補助翼のことです。 -
CSS 初学者だった頃に知りたかったこと
この記事では、自分が CSS 初学者だった頃に知りたかったことをまとめています。 -
依存性注入(DI: Dependency Injection)と Dagger 2
依存性注入(DI: Dependency Injection)という単語を知ってはいたけれど、その意味を知らなかったので調べた。また、前に書いた Todo-Android という Android アプリを元に依存性注入を考えた。 -
Google Play ミュージックを導入後、メディアキーで iTunes を操作できなくなった時の対処法
Google Play ミュージックで、月額制のサブスクリプションサービスが始まったので、一ヶ月間視聴している最中なのですが、その拡張機能を入れたあたりから Mac のキーボード上のメディアキーで iTunes を操作することができなくなり、代わりに Google Play ミュージックが操作できるようになりました。 -
OkHttp: Call.cancel が MainThread で実行されてクラッシュする
会社で開発している Android アプリで、通信に Square の OkHttp ライブラリを使っているのだけれど、HTTPS 通信時 Call.cancel() が MainThread を触ってクラッシュすることがあった。Android 3(API Level 11)以降、同期的な通信は OS によって許されていないためだ。 -
Floating Action Button のちょっとした落とし穴
Material Design に登場した部品で一番感動したのは、Floating Action Button(通称、FAB)である。 -
RxJava Operators 私的チートシート
RxJava には、それを扱うための数多くの関数(オペレーター)が用意されているが、頻繁に使うのは極一部だったから、今までに使ったオペレーターとその使用例をまとめてみた。 -
RxJava を使って、非同期通信処理とテストを書いてみた
例えば、ある通信処理で得られるトークンをもとに、次の通信処理を行うケースを考えてみる。Android アプリでは、同期的な通信は許可されていないから、非同期処理を続けて書く必要になりそうだ。これを愚直に実装すると面倒なことになりそうだが、RxJava で解消しそうだった。 -
Material Design と Realm の勉強がてら作った Todo アプリを公開しました
-
Web Components フレームワーク Polymer を使って付箋メモアプリを作ってみた
この一週間ぐらい Polymer という Google が作っている Web Components のフレームワークを試してみた。Web Components と Polymer のざっくりとした説明と、作った付箋メモアプリについて紹介します。 -
現在 Finder で表示しているフォルダ位置を Terminal で開く Alfred WorkFlow を作りました
ランチャーアプリ Alfred の Powerpack を買うと、ユーザーが組んだスクリプト(Workflow)を動かすことができる。以前から自分も作ってみようと思っていたが、どこから手を付ければよいかよく分からなった。 -
Hugo Zen: これから Hugo を始める人向けのミニマムなテーマを作りました
Hugo Zen という、静的サイトジェネレータ Hugo で使えるテーマを作りました。理由は、公開されているテーマ hugoThemes には、主張が強すぎるものが多く、どれを参考にオリジナルテーマを作ればいいか分からなかったからです。 -
Critical を使用して、レンダリングブロック CSS を排除する
WordPress から Hugo に移行して、ブログのテーマがある程度出来たので、Google のウェブパフォーマンスツール PageSpeed Insights にかけたら 73 でした。ちなみに、ページのパフォーマンスが高いとされる数値は 85 以上。 -
WordPress から Hugo に乗り換えました
2011 年 8 月 25 日から数えて 3 年と半年、このブログは WordPress で運営してきたのですが、この記事から Hugo という静的サイトジェネレータで運用します。 -
Android: ButterKnife で findViewById, setOnClickListener をシンプルに書く
レイアウト XML に書いた id を findViewById で紐付けたり、ボタンが押されたアクションを使う時に setOnClickListener すると、割とコードがごちゃごちゃしてしまう。 -
アート/デザイン指向のプログラミング環境 Processing
グラフィック描画やアニメーションをプログラムすることが苦手だ。何度かそれ関係を仕事で Objective-C で書いたことがある(これとかこれとか)。だけれど、苦手だし、だけれど、興味のある分野であり続けてた。というわけで Processing でその技術を磨くことにしてみました。 -
レスポンシブ Web デザインのサイトを作成する時に、知っておきたいこと
最近、レスポンシブ Web デザインのサイトを仕事で作成しています。レスポンシブは、PC・タブレット・スマートフォンなどのあらゆるデバイスに適したサイトを単一 HTML で表現する手法です。このブログもレスポンシブを採用していて、左右の横幅を狭めていくとページのレイアウトが変わります。 -
Compass で画像サイズを取得して背景画像に利用するミックスインを書いてみた
テキストを画像に置き換えたい場合があります。例えば、見出しの h1 ~ h6 タグのテキストを画像にする場合です。 -
Compass を使用して CSS スプライトを作成する
HTTP リクエストを減らすポピュラーな方法として CSS スプライトがあります。個別の画像をひとつの画像にまとめて、座標を指定することで個別の画像として見せる手法です。 -
スタイルシートを楽しくする Sass & Compass を導入してみる
最近は HTML/CSS を書くのが仕事になった。CSS は、半年前までは何となくで書いてきたが、この頃は、マークアップされた HTML に思い通りのデザインを CSS で載せられるようになった。 -
Google Chrome 拡張機能を開発する 〜 ポップアップを表示するまで 〜
Google Chrome では、拡張機能をインストールするとブラウザに新しい機能を追加できます。 -
SQLite3 でデータを CSV, html のテーブルタグ形式でエクスポートする
SQLite3 で、データを CSV 形式、および html のテーブルタグ形式で出力する方法を紹介します。ここでは、Mac の Terminal で操作しています。 -
Android Studio: プロジェクトのすべてのファイルから文字列を検索する
Android Studio で、プロジェクトに含まれているすべてのファイルから検索する方法を紹介します。 -
Mac: ターミナルで ssh 接続(公開鍵認証)をする
ターミナルで ssh(Secure Shell)接続して、サーバーにリモート接続する方法を紹介します。ssh 接続には、公開鍵認証を利用します。リモートにパスワード認証で接続する方法は、こちらの記事を参考にしてください。 -
Mac: ターミナルで ssh 接続(パスワード認証)をする
ターミナルで ssh(Secure Shell)接続して、サーバーにリモート接続する方法を紹介します。ssh 接続には、パスワード認証と公開鍵認証のふたつがあるそうですが、今回はパスワード認証による方法です。 -
Sketch で始める iOS の自作 UI 素材 〜 UINavigationBar 背景画像の作成と実装例 〜
iOS アプリが標準パーツで動く形になって、次に気になるのは UI 素材をどのように自作するかです。素材は引き伸ばしてもギザギザならないベクタ形式で作成するのが好ましいですが、代表する illustrator が高価で、始めるハードルが高いように思います。 -
iOS: Nend SDK 2.0 に含まれている SBJson が重複する時の解決方法(duplicate symbols エラーを回避する方法)
広告ネットワーク Nend の SDK がバージョン 2.0 にアップデートされました。広告識別子の利用開始と、ターゲティング広告をユーザー側が拒否できる(オプトアウト)できる仕組みが用意されたようですね。 -
マウスカーソルの座標をリアルタイムに取得する
OS X でマウスカーソルの現在位置の座標をリアルタイムに取得する方法を紹介します。 -
NSTableView にデータを表示させる方法
iOS でアプリを作る際に一番利用していたパーツは、UITableView だったので、OSX でも同様の NSTableView の使用頻度が高いと思います。 -
Arduino をはじめよう 〜 総合開発環境のダウンロードから、LED を点灯させるサンプルプログラムの実行まで 〜
2013 年の目標は、電子工作を齧ることなので、初心者向けの Arduino(アルドゥイーノ)に触れてみました。 -
SQLite3 をターミナルから操作する。データベースの作成から CSV ファイルのインポートまで
小さくて動作の早い SQLite というデータベースが iOS アプリでよく使われています。データベースを使用するアプリを書いてみたいので、SQLite3 を勉強することにしました。