mobの雑記

新米エンジニアがたまーにつぶやきます。

Jetpack ComposeのLocalUriHandlerにNEW_TASKは必要か?外部リンクとBack Navigationを検証する

結論:外部アプリかどうかではなく、戻る体験で判断する

Jetpack ComposeのLocalUriHandlerで外部リンクを開くとき、「外部アプリだから」という理由だけでFLAG_ACTIVITY_NEW_TASKを追加する必要はありません。

リンクを開くこと自体は簡単ですが、そのあとどこに戻るのかも気になるところです。元の作業の途中で少しリンク先を見たいのか、それとも別の作業を始めたいのか。この違いも含めて考えた方が良いのではないでしょうか。

今回の検証では、Recentsでブラウザとテストアプリが別々に表示されていても、Backでテストアプリへ戻れました。一方、Xアプリをインストールすると、NEW_TASKを付けたケースだけXが開き、BackでXホームへ移動しました。

もちろん、手元の環境での結果なので、どの端末でも同じになるとは限りません。今回は、どのアプリが開くかだけでなく、そのあとBackでどこに戻るかまで確認した方が良さそう、という話をまとめてみます。

背景:LocalUriHandlerはNEW_TASKを付けていない

そもそも、今回調べ始めたのはこんな疑問からでした。

ComposeのLocalUriHandlerはFLAG_ACTIVITY_NEW_TASKを付与していないが、外部アプリを開く場合は付けるべきなのか?

最初は「他のアプリのActivityなら、別Taskにしておいた方が良いのでは?」と思っていました。

ところが、実際に試してみると、Taskが別に見えてもBackで元のアプリへ戻れます。どうもTaskを分ければ良い、というだけの話ではなさそうでした。

せっかく調べてみたので、公式ドキュメントと実装、実際に試した結果を順に残しておこうと思います。

Android公式仕様:Taskはアプリの境界と一致しない

通常の起動と、Taskを変える要素

Taskは、ある目的に向かって操作するActivityの集まりです。通常は呼び出し元のTaskにActivityが追加されますが、起動先のlaunchModeやtaskAffinity、Intentのflagによっても変わります。アプリの境界とTaskの境界は、必ずしも一致しません。Tasks and the back stack

NEW_TASKは「外部アプリ用」のflagではない

NEW_TASKは、新しいTaskでの起動や既存Taskの前面化に関わるflagです。外部アプリだから必要、というものではありません。ランチャーのように独立した操作を始める用途が説明されています。Intent.FLAG_ACTIVITY_NEW_TASK

なお、Activity以外のContextからの起動ではNEW_TASKが必要です。今回のActivity上からの起動とは分けて考えます。Context.startActivity)

LocalUriHandlerのAndroid実装

では、LocalUriHandlerは実際に何をしているのでしょうか。AndroidXのAndroidUriHandlerを確認すると、起動処理は次の一行でした。

context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(uri)))

NEW_TASKは付けていません。確認した実装はAndroidUriHandlerの公式ソース(HEAD)です。検証に使用したComposeのバージョンとの照合は、公開前TODOに残しています。

検証方法:3通りの起動を比較する

というわけで、Composeで簡単なテストアプリを作ってみました。同じURLを、次の3通りで開いて比較します。

パターン 起動方法 NEW_TASK
1 LocalUriHandler.openUri() 標準実装では付与なし
2 Activity ContextからACTION_VIEW 付与なし
3 Activity ContextからACTION_VIEW 付与あり

呼び出し元のManifest

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:label="@string/app_name"
    android:theme="@style/Theme.LocalUriHandlerTest"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Task関連の設定は、デフォルトのままです。

実際に使用した検証コードの要点

実際の起動処理を抜粋します。ActivityのsetContent内で、各処理を別々のボタンから実行しています。

val context = LocalContext.current
val uriHandler = LocalUriHandler.current
var url by remember {
    mutableStateOf("https://x.com/kotlin/status/2070181489703088130")
}

// 1. LocalUriHandler(ボタンのonClick内)
uriHandler.openUri(url.trim())

// 2. ACTION_VIEW(別のボタンのonClick内)
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url.trim())))

// 3. ACTION_VIEW + NEW_TASK(さらに別のボタンのonClick内)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url.trim())).apply {
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
context.startActivity(intent)

結果表示で確認できる範囲

画面のwas invokedは、呼び出し時に捕捉対象の例外が出なかったことを示すだけです。起動先、Recents、Back後の画面は目視で確認しました。

ここでいうBackはシステムの戻る操作です。アプリ内のUp操作とは区別しています。Principles of navigation

F-42A/Android 10での検証結果

Xインストール前:別々のRecents表示でも戻れた

まずはXを入れていない状態で試してみました。結果は、3パターンとも外部ブラウザが起動しました。

起動方法 表示されたアプリ Recentsの見え方 Backの結果
LocalUriHandler 外部ブラウザ テストアプリと別表示 テストアプリへ戻った
ACTION_VIEW 外部ブラウザ テストアプリと別表示 テストアプリへ戻った
ACTION_VIEW + NEW_TASK 外部ブラウザ テストアプリと別表示 テストアプリへ戻った

少なくとも、履歴が別に表示されるからといって、Backで戻れなくなるわけではなさそうです。

Xインストール後:全てXアプリが開いた

次に、同じ端末にXアプリを入れて試してみました。すると、今度は開くアプリ自体が変わりました。

起動方法 最終的に表示されたアプリ 記録されたBackの結果
LocalUriHandler Xのリンク先画面 テストアプリに戻った
ACTION_VIEW Xのリンク先画面 テストアプリに戻った
ACTION_VIEW + NEW_TASK Xのリンク先画面 Xホームへ移動し、テストアプリには戻らなかった

NEW_TASK付きの場合はBackではテストアプリに戻れず、Xホームへ移動しました。

Android Emulatorでの追加検証時の注意点

エミュレーター環境ではPlay Storeにログインできず、Chromeなどを最新状態へ更新できていません。これはGoogle Play 開発者サービスが更新できないためです。

Play Storeにログインするためにはパスワード検証+別端末からの承認が必要となります。また、エミュレーター独自の検証と思われますが、24時間後にGmailに届く認証メールから認証する必要があります。

そのため、エミュレーターでは実機と同じ状態での検証は難しいため、できる限り実機を用意することが重要となります。

TaskとBackward Navigationは分けて確認する

Android公式のTask解説にも、singleTaskで別Taskに起動した場合でも、Backで前のActivityへ戻るケースが記載されています。Taskの境界があること自体は、リンク元へ戻れないことを意味しません。Tasks and the back stack

NEW_TASKは、呼び出し元の履歴を消す指定でもありません。元のTaskは通常バックグラウンドに残ります。「Xホームへ戻った」ことだけでは、元アプリの履歴が失われたとは判断できません。Tasks and the back stack

X側で戻り先を用意した可能性

追加で調べたところ、NavigationのDeep Link解説に、今回の挙動に近い仕組みがありました。

Navigationコンポーネントでは、NEW_TASK付きの暗黙的Deep Linkに対し、リンク先だけでなくNavigation Graphの開始画面などを含むBack Stackを構築します。実際にはホームを経由していなくても、Backでそこへ戻れるわけです。

これはNavigationコンポーネントの仕組みで、すべてのアプリにOSが自動で行う処理ではありません。

今回のXも独自のBack処理でホームへ移動したと考えています。ただし、XがNavigationコンポーネントを使っているかも含め、内部実装は未確認です。

検証時は、次の3点を分けると整理しやすくなります。

確認するもの 確認したい内容
起動先の選択・中継 どのアプリ・Activityがリンクを受け取り、何を表示したか
Taskの構造 どのTaskにActivityが入り、既存Taskが再利用されたか
Backの体験 戻る操作でどの画面へ移動し、元の作業を再開できたか

UXとしてどう判断すべきか

現在の目的の続きを見に行くのか

例えば、アプリ内の説明を読んでいる途中で関連するX投稿を確認したい場合、期待する流れは「元アプリ → X投稿を確認 → Backで元アプリへ戻る」かもしれません。自分としても、投稿を見たらBackで元のアプリへ戻るつもりでした。

ところが、NEW_TASK付きで観測した流れは「元アプリ → Xのリンク先画面 → BackでXホーム」でした。投稿を見たかっただけなのに、元のアプリを探し直すことになります。ちょっとしたことですが、使ってみると気になるところです。

もちろん、Xホームへ戻るのがいつも困るという話ではありません。何をしようとしてリンクを開いたのか、その流れに戻り先が合っているかが大事なのだと思います。

呼び出し側の判断は、リンク先での体験にも関わる

今回の結果からは、呼び出し側のIntent設計が、リンク先でのNavigation体験にも関わる可能性がうかがえます。

使っている側からすると、リンク元のIntentが原因なのか、Xなのか、Androidなのかは分からないですよね。

そう考えると、「元のアプリに戻れない」という不満は、リンク元にもリンク先にも向くかもしれません。このあたりは公式仕様の話ではなく、今回試してみて感じたことです。

起動先も自分たちのアプリなら、基本方針は起動先で設計する

起動先も自分たちで開発しているアプリなら、そのアプリをどのようなTaskとして扱ってほしいかは、まず起動先で設計するのが自然ではないでしょうか。ActivityのTask設計に加えて、Deep Linkを受け取った時にどんな戻り先を用意するかまで、起動先で考えるのが良さそうです。

ただし、launchModeだけで見え方や戻り先のすべてが決まるわけではなく、呼び出し側のflagが優先される場合もあります。既存Activityの再利用やBack Stackへの影響も含めて設計する必要があります。Define launch modes

なお、Navigation利用時はlaunchMode="standard"が推奨されています。起動先で設計することと、特殊なlaunchModeへ変更することは同じではありません。Handle deep links

Xのようにこちらで変更できないアプリなら、通常の起動から試し、必要な理由があればflagを変更するくらいが良さそうです。

実装時の判断基準

リンクを開く目的 今回の考察に基づく判断
関連情報を少し確認して、元の作業を続ける Activityからの通常の起動を出発点とし、Backでの復帰を検証する
自分たちの別アプリで、独立した作業を開始する 起動先のTaskとDeep Linkの戻り先を設計し、flagは個別の要件で検討する
管理できない別アプリを開く 通常の起動を出発点にする。NEW_TASKは相手を独立したアプリとして見せたいという理由だけで追加せず、必要性と実際の戻り方を確認する
「外部アプリだから」という理由しかない それだけを根拠にNEW_TASKを追加しない

まとめ

  • LocalUriHandlerのAndroid標準実装は、NEW_TASKを付けずにACTION_VIEWを発行しています。
  • NEW_TASKは、外部アプリを開くために一律で必要なflagではありません。Activity以外のContextから起動する場合の要件は別に考えます。
  • 起動先も自分たちのアプリなら、TaskとDeep Linkの戻り先を起動先で設計し、flagは個別の起動要件として考えます。

IoTLT福岡初参加!

ホームグラウンド福岡にて、IoTに関するLT会が開催されるとのお話を会社の人に聞きつけ、参加してみました。

高校の時に高校生版ロボコンなどに出場していたのも随分前の話ですが、久しぶりに回路設計やマイコンで遊んでみたなどのお話を聞けて懐かしい思いになりました。

エンジニアになって6年目ですが、エンジニアリングのイベントにリアルで参加するのは始めてだったので、忘れないようにメモを残そうと思います。

イベントリンク

iotlt.connpass.com

たなかさん

運営のたなかさんからIoTLTとはや福岡でのイベントの経緯などをお聞きし、主題のキーボード好きの集まるイベントに行ってきた話に。

あれは多分BMW…?のシフトレバーだったと思いますが、なんとシフトレバーでVimの操作ができるキーボードがあったとのこと。

着想がすごいなと思ったし、ネタとしてもとてもインパクトがありましたw

Yamadaさん

DMX baseとCoreS3を買った話。

私が高校生の頃はちょうどRaspberryPi2などが主流の時で、M5Stackはなかったはず…だと思います。

このイベントで始めてM5Stackの実機を見ることができ、あの大きさの中にセルラー通信機能まで含まれているということで衝撃を受けました。

そんなM5StackのI/Fボード?であるDMX BaseとM5Stackの新型?であるCoreS3を買ったよというお話でした。

IPSLCDとタッチパネル、カメラなど多機能で8,000円強ということでまたびっくり。

今のロボコンではひょっとしてM5Stackが主流なのかな〜と思ったりした次第でした。

Kaz54さん

Warbl電子縦笛とEU-ONE電子ウクレレのお話。

ベースとなるプログラムが綺麗すぎるとあんまりいじれないとか、センサーのキャリブレーションがちゃんとされてないとか、あ〜あるあるwと思いました。

実際に弾いてるところを見せてもらいましたが、圧力センサーと感圧センサーで読み取って綺麗に音が鳴っていたので、驚きました。

ウクレレの場合、弦がないので弦交換が必要ないこと、1音上げなどのチューニングはプログラムを変えるだけで良いなど、電子楽器ならではのメリットも。

YukiTamuraさん

C-FASEというスマートマスクのお話。

マスクの中にマスク型のこの製品を入れることで、音を増幅したり、スマホのスピーカーから出力したり、翻訳もできたりとマスクを付けた上でのコミュニケーションをより良くしようとアプローチされたそう。

結果として、今のところあまり成功していないらしいのですが、コロナ対策をしつつ、面と向かってコミュニケーションを取るためにマスクをテクノロジーで改良しようという、非常に面白いアイデアだと思いました。

C-FACE | donut robotics

Ogasawaraさん

nRF9160はいいぞ。

IoTにおいてインターネットはなくてはならない存在です。どこにおいても通信するためにセルラー通信が必須ですが、そんなセルラー通信を行うためのモジュールとして、nRF9160は比較的安価で優れモノというお話でした。

7年前ぐらいは0円SIMがあって、低容量・低速度だけどそういったセンシングなどの用途に使われていたなと思い出しました。あの頃はAndroidもまだ権限周りが煩くなかった時代だったので、Android端末からセルラー回線を通して通信なんていうのもあった気がします。

kaito1102さん

IoT活用アイデア「スマートお酌システム」

IoT活用のアイデアとして、グラスの中の状態(量・温度など)を取得・通知することで、適度なタイミングでオーダーを取ることや会社の呑み会なんかで都度上司のグラスを気にしなくても良いのでは?という面白いアイデアでした。

このお話の中でFD比率という言葉が出てきたので調べてみました。食べ物より飲み物の方が利益率が高いため、このアイデアを実現できればより効率的に飲食店の利益率を伸ばすことができるのでは?という非常に興味深い内容でした。

自分としては、グラスに電源を内蔵するのは重さやコストの面からしても現実的ではなさそうなので、非接触充電技術を用いてグラスに電源を供給しつつ、うまいことセンサーで状態を取得することができればなんかできそうだと素人ながらに考えました。

ShinriNakamuraさん

さくらのモノプラットフォームを利用したアプリケーションの開発について。

さくらインターネット社のさくらのモノプラットフォームというサービスを利用することで、IoTに挑戦するにあたっての障壁を数段飛び越えて、アイデアの実現に専念できるよという内容でした。

先程のお話でもありましたが、IoTにおいてインターネット接続は必須であるため、このサービスを利用することでインターネット回線と接続するためのセルラーモジュールが手に入るという初期コストが抑えられる魅力的なサービスだと思いました。

また、同社のさくらのセキュアモバイルコネクトというサービスを利用すると閉域網での通信が可能という、数年前にはなかったもので驚きました。

撮影させていただいた開発されているシステムの制御ボックス。ピンク色の基板がさくら社のセルラーモジュール。

Masakiさん

ShinriNakamuraさんと同じ会社の方だそうで、IoTを活用したアスパラガス栽培の灌水用システムといった商用システムにおいてのM5Stackのメリットという内容でした。

エンジニア界隈においてはどの領域でもあることですが、車輪の再発明をしたものはやはり大量生産されるものには敵わないというものでした。

よほどニッチなものでも無い限り、今ある製品を自社向けにカスタマイズする方がコストが抑えられるよね…という我々スマホアプリエンジニアにとっても深く同意する内容でした…

撮影させていただいたアスパラガス栽培の灌水用システム。右に写っているタブレットで操作するそうです。

原__舞さん

原さんは中間市の生活支援領域を担当されている方で、「みんなで備える互助アプリ なかまのなかま」についてお話されていました。

中間市は人口に対する高齢者の割合が3割以上だそうで、認知症の方も少なからずいらっしゃるとのこと。

人間、老いはいつしか必ず訪れるものですが、そういった状況をテクノロジーを活用してみんなで支えていくことを目指されているとのことでした。

システムの内容は若干うろ覚えな部分がありますが、ベースはLINEトークを利用し、BLEを利用してと仰っていたので、恐らくAirTagのような仕組みで迷子になってしまったとしても近くの人が助けに行けるというものだと思われます。

ずっと福岡に住んでいますが、不勉強なもので恥ずかしながらそういった取り組みがされていることを全く知りませんでした。

福岡市は認知症フレンドリーシティ宣言を2018年に行っていたそうです…これからは県内や地域の取り組みについても学んでいければと思いました。

100.city.fukuoka.lg.jp

おわりに

まずはイベントに参加させていただきありがとうございました。

IoT分野に関わったのも久しぶりでしたが、やはり技術の進歩は早いもので、自分の関わっていた頃とはまた大分様子が変わっており大変勉強になりました。

コロナも5類となり、感染も落ち着いてきたことでこういったリアル会場でのイベントも活発になってきたので、できる限り参加して色々なお話をお聞きできれば…と思った次第でした。

Android Gradle Plugin 8のNew settings pluginについて

はじめに

AGP8で追加されたNew settings plugin(com.android.settings)について、早速試してみた感想と現状リファレンスの内容だと導入できないので、メモ書きとして残します。

導入方法

  1. プラグインを追加する

    リファレンスのやり方通り、apply plugin 'com.android.settings'を追加します。

    ※KTSファイルに変更している場合はそのままだと現状プラグインが対応していないため、導入できません。Groovyファイルに変更しましょう。

  2. pluginManagementブロックを追加する。

    現状このままだと、com.android.settingsプラグインの依存関係の解決ができません。そのため、解決方法をGradleに示す必要があります。

    ※pluginManagementブロックはsettings.gradleファイルの先頭に追加しましょう。

     pluginManagement {
         repositories {
             google()
             mavenCentral()
             gradlePluginPortal()
         }
         resolutionStrategy {
             eachPlugin {
                 if (requested.id.id == "com.android.settings") {
                     useModule("com.android.settings:com.android.settings.gradle.plugin:8.0.0")
                 }
             }
         }
     }
    
  3. androidブロックを追加する。

    ようやくandroidブロックを追加できます。includeやrootProject.nameの上にandroidブロックを追加しましょう。

    現状compileSdkやminSdkしか指定できないみたいです。defaultConfigやcompileOptionsは対応していないみたいです。

     pluginManagement {
         repositories {
             google()
             mavenCentral()
             gradlePluginPortal()
         }
         resolutionStrategy {
             eachPlugin {
                 if (requested.id.id == "com.android.settings") {
                     useModule("com.android.settings:com.android.settings.gradle.plugin:8.0.0")
                 }
             }
         }
     }
    
     apply plugin 'com.android.settings'
    
     android {
         compileSdk = 33
         ...
     }
    

試してみた感想

まだ未完成感が非常に強いです。現状extで設定している奴らを一掃できると大いに期待したのですが、まだ無理そうでした。。。

もう少し時間が経ったら再度チャレンジしてみようかな。。。?

日本語の情報がないので、もう試した方いらっしゃったらコメントで教えていただけると助かります。

CalDigit TS4 を購入した話

購入した話と言っておいて、半年程経過しました。

ある程度使用感がわかりましたので、ブログに書き起こしたいと思います。

結論から言うと、MacBookユーザーなら持っておいて損なしの一品です。 どんな所が良かったのか、ご紹介していきます。

CalDigit TS4 (Amazon)

安定性

まず、安定性です。接続できるものが一杯あるとか、なんとかかんとか、いっぱいありますが、毎日使う物として一番に重要なのは安定性ではないでしょうか。

TS4を購入する前は、家電量販店で購入したj5create JCD383を使っていました。

もちろん普段使いには文句なしですし、持ち運びもできるため、重宝していました。

しかし、転職を期にテレワークへ移行し、毎日ディスプレイ・キーボード・有線LANを接続することになると、根本の接触が悪くなってしまったのか、10回ぐらい刺し直さないと認識しなくなりました…

真面目に朝起きていた初めの頃ならまだしも、ちょっと慣れてきてミーティングぎりぎりに起きる時に認識しないとマジで焦ります。(無線LANがあまり安定しないのです…)

朝早く起きろや!という話ですが、何も朝だけ発生するのではなく、例えばちょっと別の部屋で作業…などと一旦抜こうものならまたやり直しです。

10回ぐらいで認識するならまだ良く、5分ぐらい置いて繋げてみて…なんて繰り返すので、時間の無駄です。

その点、TS4はこの半年間認識しなかったということはほんの数回ぐらいしかありませんでした!(認識しなくても1回刺し直せば認識してくれる…!)

これでミーティングぎりぎりで起きてもダイジョブというものです。

接続できるインターフェースの多さ

なんといってもCalDiditのTSシリーズで最も特徴的なのは、そのインターフェースの多さでしょう。

TS4では以下のインターフェースがあります。

前側

  • MicroSDカード
  • SDカード
  • フォーン端子
  • USB-A
  • USB-C x 2
  • USB

後側

  • USB-C
  • フォーン端子
  • マイク端子
  • USB-A x 4
  • 有線LAN
  • Thunderbolt4 x 3(内1つはPC接続用)

このようによっぽど接続するような人でもない限り間違いなく持て余すと思います。そのくらい余裕の接続数です。

給電パワー

こんなでかいものを机の上に置く時点でそれ以外のものは置きたくないですよね?

これ1つで十分と言われる理由は給電ワット数の多さにもあります。a

メインPCへの給電ワット数は98Wと16インチMacBookPro用の充電器に匹敵します。MacBookAir・MacBookPro13インチユーザーはもちろん、大電力を必要とするヘビーユーザーも安心です。

また、前側のUSB-Cは1つだけ20W出力とiPhoneの急速充電可能なワット数になっているので、USB-C - Lightningケーブルがあれば急速充電可能です。

ファームウェアの更新

これはデメリットというか、少し困った点だったのですが、今の所ファームウェアの更新がWindowsPCからしかできません。

下記のダウンロードサイトに書いてありますが、

The macOS updater is currently in development and will be released as soon as it is available. In the meantime, please use the Windows Thunderbolt Firmware Updater below, and apply the firmware update using a Thunderbolt or USB-C Windows computer if you have the opportunity.

とあり、現状WindowsPCからしかできないとのことです。私はBootCampでWindowsを使用しており、無事にアップデートすることができたのですが、大半の方はアップデートできないのではないかと思います。

downloads.caldigit.com

あとがき

半年程使ってみた感想を書いてみました。ほとんどが良い意見ばかりなので、私も買う時に結構調べたのですが、買ってみてよかったと思います。 唯一の難点は値段だけか。円安の影響で更に上がりましたね...(Amazonで現在6万)

2階へ有線LANを。

最近は仕事が忙しく、なかなか面白いことができていませんでした…

 

今日は、家のLANを無線から有線に変更したので、ご紹介しようと思います。

 

我が家は賃貸なのですが、2階建てで光終端装置が1階、自分の部屋は2階という構造です。

 

ですので、1階の終端装置から2階の自分の部屋まで、有線LANを引っ張ってくる必要があります。

 

ネット上に(一戸建てで)そういったことをされている先人の方々の知恵を拝見するのですが、なにぶん賃貸なので、なかなか厳しいなと思っていたところです。

 

だったのですが。無線LANの余りの遅さに耐えきれず…

 

ヨドバシで20MのLANケーブルを購入してしまいました。

 

https://www.amazon.co.jp/%E3%82%A8%E3%83%AC%E3%82%B3%E3%83%A0-LAN%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%95%E3%83%A9%E3%83%83%E3%83%88-LD-GF-BK20/dp/B000AP9UYC/

 

踏まれたときのことを考えて、フラットが良いのではないでしょうか。

好みによるかとは思いますが。

 

そして、近くのホームセンターで以下のものを購入。。

 

f:id:mob123:20190623194033j:plain

 

・リピートタイは余ったLANケーブルをまとめるのに使用しました。

別にリピートタイでなくてもいいと思いますが、外せたほうがコスパがいいので。

 

・コードステッカーは壁を這わせるのに使用しました。

といっても、壁紙に直で貼るわけにはいかないので、ドア枠や階段枠などを利用して貼っています。

 

・マスキングテープは今回の主役です。

まず、綺麗に剥がせるというのが大前提です。剥がせないと怒られます。

メーカはどこでもいいとは思いますが、それなりに名の通っているものが無難かと思います。

 

さて、コードステッカーはどのようにして使ったかといいますと、以下の写真のようにして貼っています。

 

f:id:mob123:20190623194732j:plain

 

マステの上に貼っています。

こうすることで、コードステッカーをはがすときに困りません。

ミスった時の貼り直しも楽です。

 

床配線も以下の写真のようにしています。

f:id:mob123:20190623194922j:plain

 

幅広のマステでカバーしてます。

マステでLANケーブルをサンドイッチする形です。(ケーブルの下に一枚、ケーブルの上から一枚)

こうすることで、LANケーブルを踏んだ時にケーブルの被覆の跡が床に残らないのではないかと思います。(多分)

 

 

肝心のスピードですが、超安定していますw

夜の混雑時間帯に100Mは余裕で出ます。

今までの無線では、1Mぐらいしか出ていなかったです。良くても10M位…

 

プロバイダはOCNで、OCN光IPv6アルファを契約しています。

今話題?のNURO光はどうなんでしょうね。福岡にもやってきましたが。

 

 

というわけで、有線LAN化のご紹介でした。

賃貸の2階だからなあ、と諦めていましたが、正直高い無線LANのルーターとか子機を買うならこっちのほうがおすすめだと思います。

私も散々無線LANに金を費やしてしまったので…(スマホは快適になりましたが。)

有線LANで快適なネットライフを送りたいと思います!

それではまた!

ハードオフに行ってきた

こんにちわ。

今回は初めて、自作erの聖地?ハードオフに行って来ました。

そこでこんなものを拾ってきました。

f:id:mob123:20190209233340j:plain

Radeon HD 6970です。税込み2160円でなぜかファンの箱に入ってました。

 

この間、長年使いこんだGTX650をついに捨ててしまったので、代わりのものを探していました。

中古品でGTX690も売っていましたが、1万円...

性能UPもしますが、少々出費がかさみます。

そんなときに見つけたのがこいつです。

動くかどうかはわからないけど、安かったので買いました。

 

結果動いたので、よしです。

ただ、予想以上に大きかったので、ケース内の組み替えを行いました。

f:id:mob123:20190209235520j:plain

配線が汚いのはご愛敬です。

結構前にヨドバシで5000円で買ったケースですが、拡張性はなかなか。

一瞬入らないんじゃないかと、ヒヤヒヤしましたw

 

次、PCを全部組みなおすまではどうにか持ちそうです。

2500円で得をした感じです。

あけましておめでとうございます

気づけばあっという間に2018年は終わってしまいました。

2018年からブログを始めましたが、書こうと思っていることがなかなか書ける状況になく…

2019年こそはmacを買って、iOSとAndroidその他色々書いていきたいと思っております。(ボーナスも入りましたし…)

本年もどうぞよろしくお願い致します。