Pixel 7/7 Pro を購入するときの iPhone/Pixel シリーズ下取り価格一覧 (2022-10-08 18:00 現在)

1世代前のPixel 3が¥11,924 – ¥15,000、1世代先のPixel 5が¥49,805 – ¥61,500、Pixel 6およびPixel 6 Proが¥42,431 – ¥61,500で、最低額が最も高く設定されているのが3年前に発売された機種というあまりにも不自然な値段設定です。

👉 Pixel 7発売でPixel 4の下取り額が最大61,500円に爆上げ。中古スマホ店やメルカリから姿を消す hatena-bookmark


iPhone 6           ¥7,108 -  ¥9,380
iPhone 6 Plus      ¥7,176 - ¥10,100
iPhone 6S          ¥6,244 - ¥12,260
iPhone 6S Plus     ¥7,522 - ¥12,550
iPhone 7           ¥8,584 - ¥13,650
iPhone 7 Plus     ¥10,298 - ¥18,600
iPhone 8           ¥8,703 - ¥19,800
iPhone 8 Plus     ¥12,962 - ¥24,816
iPhone SE          ¥5,767 -  ¥9,250
iPhone SE2        ¥21,906 - ¥35,000
iPhone X          ¥12,072 - ¥25,900
iPhone XR         ¥14,614 - ¥29,202
iPhone XS         ¥14,357 - ¥33,600
iPhone XS Max     ¥22,351 - ¥40,600
iPhone 11         ¥41,885 - ¥61,500 *
iPhone 11 Pro     ¥36,876 - ¥61,500
iPhone 11 Pro Max ¥30,124 - ¥63,558
iPhone 12         ¥38,045 - ¥61,500
iPhone 12 Mini    ¥41,033 - ¥61,500
iPhone 12 Pro     ¥40,421 - ¥74,745
iPhone 12 Pro Max ¥46,777 - ¥84,915


Pixel          ¥6,469 -  ¥8,000
Pixel XL       ¥6,469 -  ¥8,000
Pixel 2        ¥5,903 -  ¥8,000
Pixel 2 XL     ¥5,165 -  ¥8,000
Pixel 3       ¥11,924 - ¥15,000
Pixel 3 XL    ¥11,211 - ¥15,000
Pixel 3a      ¥18,174 - ¥22,000
Pixel 3a XL   ¥17,462 - ¥22,000 
Pixel 4       ¥53,809 - ¥61,500 *
Pixel 4 XL    ¥52,347 - ¥61,500
Pixel 4a       ¥8,765 - ¥17,600
Pixel 4a 5G    ¥9,401 - ¥17,600
Pixel 5       ¥49,805 - ¥61,500
Pixel 5a (5G) ¥14,284 - ¥35,768
Pixel 6       ¥42,431 - ¥61,500
Pixel 6 Pro   ¥42,431 - ¥61,500

Pixel7-iPhone11
👉 Google Pixel 7 - Google ストア hatena-bookmark

このチャンスを見逃すな?!



👉 最新 Android Pixel7 端末をお得に購入するための3つのこと。 hatena-bookmark
👉 軽くて小さくて新しいスマホを買いたい iPhone14 vs Pixel7 hatena-bookmark


軽くて小さくて新しいスマホを買いたい iPhone14 vs Pixel7

悩む。

こまごまとした仕様の差はどうでもいい。

カメラもあんまり気にしない。

サイズと重さと価格。

 

■ iPhone14 128GB

x 価格 119,800円
o 重量 172g
o サイズ 146.7x71.5x7.8
x ディスプレイ 6.1インチ
x バッテリー 3,279mAh, MagSafeおよびQiワイヤレス充電

iPhone14
👉 iPhone 14とiPhone 14 Plus - Apple(日本) hatena-bookmark

 

■ Pixel7 128GB

o 価格 82,500円
x 重量 197g
x サイズ 155.6x73.2x8.7
o ディスプレイ 6.3インチ
o バッテリー 4,355 mAh, 急速ワイヤレス充電

Pixel7

👉 Google Pixel 7 の技術仕様 - Google ストア hatena-bookmark

 

■ まとめ

10万円を超えるスマホとかパソコンユーザーはいらなくね?

「iPhone は重い」というイメージが崩れた。

もう少し考えることにします。


KMM や マルチプラットフォーム を見据えて SQLDelight で Repository

👉 Getting Started - Multiplatform - SQLDelight hatena-bookmark
👉 SQLDelight 1.x Quick Start Guide for Android – Handstand Sam hatena-bookmark

マルチプラットフォームに対応していますが、

まずは、Android のみで使ってみると良いです。

👉 Getting Started - Android - SQLDelight hatena-bookmark

Todo アプリ向けの Repository を作ります。

Hilt と Flow を使っています。

 

■ インストール

Gradleまわりは書き方いろいろですけども適宜書き換えてください。


buildscript {
  repositories {
    google()
    mavenCentral()
  }
  dependencies {
    classpath 'com.squareup.sqldelight:gradle-plugin:1.5.3'
  }
}

apply plugin: 'com.squareup.sqldelight'

// android driver
implementation "com.squareup.sqldelight:android-driver:1.5.3"

// flow-coroutine extension 
implementation "com.squareup.sqldelight:coroutines-extensions:1.5.3"

 

■ スキーマ / クエリー

パッケージ名を、com.your.package としています。


-- app/src/main/sqldelight/com/your/package/data/Todo.sq

CREATE TABLE todo (
  id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  text TEXT NOT NULL,
  updated INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
);

INSERT INTO todo(text) VALUES ('宿題をする');
INSERT INTO todo(text) VALUES ('マンガを読む');
INSERT INTO todo(text) VALUES ('プールに行く');

selectAll:
SELECT * FROM todo ORDER BY updated DESC;

deleteAll:
DELETE FROM todo;

insert:
INSERT INTO todo (text) VALUES (:text);

update:
UPDATE todo SET text = :text, updated = (strftime('%s', 'now')) WHERE id = :entryId;

delete:
DELETE FROM todo
WHERE id = :entryId;

count:
SELECT COUNT(id) FROM todo;

Todo.sq ファイルをテキストで作成して、テーブル定義、実行クエリーとメソッド名を箇条書きします。

配置位置は、上記コメントの位置が自然で分かりやすいと思います。

この場合、SQLDelight によって以下に実装に利用するクラス群が生成されます。


app/build/generated/sqldelight/code/Database/debug/com/your/package/

 

■ Database Module

SQLDelightによって生成された Database クラスを利用して書きます。

今回は Android向けなので、AndroidSqliteDriver を使っています。


@Module
@InstallIn(SingletonComponent::class)
object DatabaseModule {

  @Provides
  @Singleton
  fun provideDatabase(@ApplicationContext context: Context): Database {
    val driver = AndroidSqliteDriver(Database.Schema, context, DB_NAME)
    return Database(driver)
  }

  private const val DB_NAME = "database.db"
}

JetpackCompose の UI である Screen-level の Composable はマルチに稼働しているので、 @Singleton としておくことを忘れてはなりません。

 

■ Repository

時間のかかる処理は Flow を使っておきます。


class TodoRepository @Inject constructor(
  private val database: Database
) {

  fun load(): Flow<List<Todo>> {
    return database.todoQueries.selectAll().asFlow().mapToList(Dispatchers.IO)
  }

  fun count(): Flow<Long> {
    return database.todoQueries.count().asFlow().mapToOne(Dispatchers.IO)
  }

  fun insert(text: String) {
    database.todoQueries.insert(text)
  }

  fun update(id: Long, text: String) {
    database.todoQueries.update(text, id)
  }

  fun delete(id: Long) {
    database.todoQueries.delete(id)
  }

}

Flow - Couroutine Extension は非常に便利です。


fun load(): Flow<List<Todo>> {
  return database.todoQueries.selectAll().asFlow().mapToList(Dispatchers.IO)
}

Cold な Flow で単発の List<Todo> の emit ではなく、データベースが変更されるたびに、新しい List<Todo> を emit してくれます。


@JvmName("toFlow")
fun <T : Any> Query<T>.asFlow(): Flow<Query<T>> = flow {
  val channel = Channel<Unit>(CONFLATED)
  channel.trySend(Unit)

  val listener = object : Query.Listener {
    override fun queryResultsChanged() {
      channel.trySend(Unit)
    }
  }

  addListener(listener)
  try {
    for (item in channel) {
      emit(this@asFlow)
    }
  } finally {
    removeListener(listener)
  }
}

👉 sqldelight/FlowExtensions.kt at master · cashapp/sqldelight hatena-bookmark

(更新中...)

👉 Jetpack Compose で Todo アプリを作ってみた - Qiita hatena-bookmark