としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

2021年05月

3753817_s

Flutterでカメラを使ったアプリを作ってみたところ、エミュレータでは正しく動作したのですが、実機で動かしてみたところカメラが起動しませんでした。

この問題に対する解決策を調べたので紹介します。

今回は、以下のサンプルコードを使ってカメラが動くことを確認しています。





実機でカメラを動かす方法


結論になりますが、実機でカメラを動かすためには、

android→app→src→main→AndroidManifest.xmlに

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

の一行を入れてあげる必要がありました。これを追加しただけでカメラが起動するようになりました。

どこに入れればわからないという人もいると思うので、AndroidManifest.xmlのサンプルを以下に乗せておきます。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.camera_sample">-
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<application
android:label="camera_sample"
android:icon="@mipmap/ic_launcher">
android:requestLegacyExternalStorage="true"
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>






AndroidManifest.xmlを変更する必要があった理由


AndroidManifest.xmlを変更する必要があった理由ですが、Android11以降でデバイスにアクセスする方法が変更されたことが原因みたいです。

Android11以前の端末なら、上記のような変更なしでもカメラにアクセスできるみたいですね。

Android10nまでの情報がWeb上に多く存在していたため、原因を突き止めるのになかなか苦戦してしまいました…。



まとめ


Android11以降ではカメラを使用するためには、AndroidManifest.xmlを変更する必要がありました。

同じことで悩んでいる人の参考になれば嬉しいです。





本記事ではAndroid Studioで作成したFlutterアプリを実機でデバッグする方法を紹介していきます。

例としてgoogle pixel 4a でFlutterのサンプルアプリを動かしていきますが、開発言語や端末が違う場合でも基本的に同じ方法で実行することができます。



Android端末を開発者設定に変更する


Android Studioで開発したアプリを実行するためには、Android端末の開発者設定をONにする必要があります。

やり方ですが、最初に設定→デバイス情報画面を開きます。

Screenshot_20210530-220644

次にデバイス情報画面をスクロールして一番下にある、ビルド番号を7回タップします。

Screenshot_20210530-220654

するとPINの入力が求められますのでPINを入力してください。

これで開発者設定をONにすることができました。



アプリを実行する


Android端末の設定ができたところでアプリを実行してみましょう。

今回はFlutterのサンプルプロジェクトを実行していくので、Android Studioを作って新規プロジェクトを作成します。

キャプチャ

新規プロジェクトが作成できたらUSBケーブルを使い、PCとandroid端末を接続します。

接続が成功したら、Debug端末の選択メニューに自身のAndroid端末の機種名が表示されるので、そのたんまつを選択してください。

今回の例ではgoogle pixel 4aを使用しているので、Pixel 4a(mobile)を選択します。

キャプチャ

端末を選択することができたら、実行ボタンを押下してください。

キャプチャ


すると自分の端末でアプリが実行されます。

Screenshot_20210530-233826





実行できない場合の対処法


上記の方法で実行できない場合の対象方を紹介していきます。


USBケーブルが充電専用でデータ転送ができない場合


充電しかできないようなUSBケーブルを使用している場合、実行することができません。

この場合は、データ転送ができるケーブルを買いなおすしか対処法がありません。

以下のケーブルはデータ転送にも対応しています。




USBデバッグ設定がOFFになっている


ケーブルはデータ転送用だが実行ができない場合、開発者向けオプションのUSBデバッグ設定がOFFになっている可能性があります。

この場合、設定→システム→詳細設定→開発者向けオプション設定画面を開き、USBデバッグ設定をONにしましょう。



まとめ


本記事では、自分が開発したAndroidアプリを実機で実行する方法を紹介しました。

エミュレータでのテストには限界があると思うのでぜひ実機でデバッグする方法をマスターしてください。







PXL_20210530_044131740

瀬尾まいこさんの『あと少し、もう少し』を読みました。

中学駅伝をテーマに描かれている作品で、思春期の複雑な精神状態や人間関係を描いている小説でした。

読了後は、もう一度自分もこんな青春を過ごしたいと思うようなさわやかな気分になりました。

以下、あらすじと感想になります。




『あと少し、もう少し』のあらすじ


駅伝で毎年県大会に出場していた中学校で部長の桝井が三年生になった春、陸上部の名物顧問が移動になった。

代わりにやって来た顧問は、これまで運動経験がない美術教師である上原だった。

上原が頼りないと感じていた、桝井は自ら中学最後の駅伝大会に向けて部活関係なしで駅伝に向いているメンバーを募り練習を始めるが…。

駅伝のメンバーは、元いじめられっ子で陸上部の設楽、不良-授業をまともに受けない大田、足は速くはないが頼みを断れないジロー、プライドの高い吹奏楽部の渡部、陸上部の後輩の俊介、そして部長の桝井だ。

寄せ集めの六人は県大会を目指して、襷をつなぐ。

それぞれが、あと少し、もう少し、みんなと走りたいという意思を持ちながら襷をつなぐ姿に涙が止まらなくなること間違いなしの青春駅伝小説。



感想(ネタバレあり)



駅伝というスポーツの見方


駅伝と言えば箱根駅伝やニューイヤー駅伝などがテレビで放送されたりしていますが、これまで私はこれの駅伝を流し見する程度で真剣に見たことがありませんでした。

そんな駅伝に興味のなかった人間からしてみたら、駅伝は複数人で襷をつなぐだけであとは個々人で走るため団体競技というよりは個人競技という印象が強かったです。

しかし、『あと少し、もう少し』を読んでみて駅伝に対する理解が大きく変わりました。

駅伝では、区間ごとに走っている人間は一人かもしれませんが、各区間の走者は、チーム全員の気持ちを持ちながら走り、そして自分の想いをのせて襷をつないでいるんだということを本作から学ぶことができました。

本作は、各章で一人の走者に視点をあてながら物語を描いていましたが、物語のはじまりは襷を受け取るシーンで始まり、終わりは襷を繋ぐシーンで終わります。

各人物の想いが襷に乗っていることが分かり毎章、冒頭と末尾では泣いてしまいました。


この作品を読んだことがきっかけで今まで真剣に見たことがなかった駅伝を真剣に見てみたいと思いました。


メンバーの魅力


本作に登場する駅伝のメンバーは全員魅力的でした。

第一走者である設楽は、これまでプレッシャーをかけられないと速く走ることができなかったです。

しかし、この駅伝をきっかけにプレッシャーをかけられて無理に走るのではなく、期待されていることで頑張ろうという気持ちが芽生え成長していきます。


第二走者である大田は、努力してもできないことを恥ずかしく思い、最初から頑張ることを放棄した結果、不良になってしまいました。

この不良になったきっかけは中学生の心情を上手に描いているなと思いました。実際に大田のような理由で勉強をあきらめた人は多い気がします。

それでも、駅伝を走ることで努力することは恥ずかしいことではないということに気が付き努力している姿にとても感動しました。


第三走者であるジローは、家族の影響もあり周りに頼まれたらどんなことでも断れない人物でした。

最初は桝井がメンバーを集めるために頼みを断ることができないジローをメンバーに選んだのかと思っていましたが、実際はジローのようなムードメーカーが団体競技では大切なので選ばれていたのでした。

壮行会でジローが大田を怒るシーンでは、ジローの責任感の強さを感じることができジローかっこいいなと感じました。


第四走者である渡部は、一見いけ好かないやつのようにも見えます。

しかし実際は、両親がいなく祖母に育てられたという理由だけで周りにできない人間だと思われたくないために、どんなことにでも全力を尽くす努力家の人間でした。

作中で上原も渡部のことを一番中学生らしいと言っていますが、それに対してすごく共感できました。

周りと違うなど些細な理由でいじめなどに発展する中学社会でみんなと変わらないように生活したいという渡部の想いは全てのメンバーの中で最も中学生らしかったです。

個人的には全てのメンバーの中で渡部が一番好きです。


第五走者である俊介は、唯一中学二年生で後輩という立場でした。

俊介は桝井に対して尊敬だけではなく、恋愛感情のような特別な思いを持っていました。直接的には描かれていませんが、現代を考慮した少し他とは違うという人物を上手に描いていたなと感じました。

他とは違うという風に見られたくない、渡部と俊介の絡みは、読んでいて色々と考えさせられるものがありました。


第六走者である桝井は、行動力がある部長に適任という人物でした。

しかし、桝井は終始走りに関しては昔のようにうまく走ることができないという不調を抱えていました。

終盤でその不調は病気が原因だと分かりましたが、周りに相談することができず一人で悩みを抱え続けてしまいます。

そんな悩みを抱える桝井を他のメンバーが支えようとしていたシーンは、私自身にもしっかりした人物も悩みを抱えているかもしれないため、支える必要があるということを実感させられました。


顧問の上原について


新しく陸上部に就任した上原は、駅伝の練習が始まったときにはかなり頼りない顧問だという印象が強かったです。

中学の部活といえば土日に練習がある部活も多いがそれに不満を言ったり、掛け声は「がんばれ」の一つだったり、正直陸上部の顧問が務まるとは思えませんでした。

しかし、熱血教師ではない上原は人間的としてすごく魅力的だなと私は思いました。

部活がすべてだという教師は個人的な意見になりますが、生徒個人個人を見る力があまり強くない印象があります。

しかし、上原は生徒一人一人に対して教師という立場ではなく人間として向き合っていました。

教師と生徒の関係ではなく、同じ人間同士という関係を作ることができる上原を見ていてこんな先生が自分の近くにいてほしかったなと感じました。

この上原の人間性は、最後の桝井を応援しながら涙を流しているという場面で顕著に表れています。

駅伝メンバーと同じ熱量で仲間になることができている理想の教師だど思います。



まとめ


中学駅伝を通して仲間が繋がっていく様子を感じることができ、感動することができる作品でした。

陸上経験がない方や、私のように駅伝を見たことがないという人でも楽しめる作品ですので未読の方はぜひ読んでみてください。

また、本作のスピンオフ作品として第二区で走っていた不良の大田君を描いている、『君が夏を走らせる』という作品もお勧めですのでぜひこちらもセットで読んでみてください。










PXL_20210529_065946469.MP


喜多喜久さんの『はじめましてを、もう一度。』が文庫化されていたので読みました。

最初は、主人公が機械学習を勉強している理由などが物語とはあまり関係ないのでは…とか思っていましたが最後まで読むとそのあたりの理由もわかりおもしろかったです。

終盤ではカフェで読んでいたにも関わらず号泣してしまうほど感動してしまいました。

以下、あらすじと感想になります。

ネタバレもありますので未読の方はご注意ください。



『はじめましてを、もう一度。』のあらすじ


高校二年生の成績トップの理系男子・北原恭介は、学校の人気者である同学年の祐那から突然、「付き合ってください」と告白された。

祐那が恭介をからかうために冗談で告白したと思っていた。

しかし、詳しい事情を聞くと祐那が見た夢通りの行動を起こさないと恭介は、くだん様の呪いで死んでしまうらしい。

つまり告白を断ったら恭介は死んでしまうということだ。

呪いなんてありえないと思っていたが、真剣に話す姿をみて恭介は祐那と付き合い始めた。

思いがけず始まった二人の謎だらけの関係だったが、二人は同じ時間を過ごすにつれてお互いに惹かれあっていく。

しかし、裕那の夢の話には裏があった…。

彼女が言えずに抱えていた秘密とは何だったのか。



感想(ネタバレあり)


従来の喜多喜久さんの作品と比べると現実的な科学要素は、少なめでオカルトチックなくだん様の呪いが中心となっている物語でした。

それでもプログラミングや機械学習といった新しい技術を物語に上手いこと取り組んでいたり、ミステリー要素なんかもあったりして面白かったです。

祐那の夢の真実が明らかになるラストシーンでは、プログラムのように機械的に生きていた人間が恭介ではなく祐那だったということが分かり、物語に登場しているプログラミングの話と上手い事掛け合わせているなと感じました。


小見出しの日付と数字の謎


物語を読んでいて最初になんだこれと思ったのは小見出しにでてくる日付と数字でした。

第一章の最初の小見出しは「2838+1——【2017・3・28(火)】」、二つ目は「2848+1——【2017・4・6(木)】」でした。

この要素をみたとき一つ目と二つ目の小見出しの数字の差からなんとなく日付を表しているということは察することができたのですが、なんの日付かまでは分かりませんでした。

恭介が生まれた日…?とか思っていたのですが恭介は高校2年生なので計算があわない。

プログラミングが物語で出ているから16進数に置き換えるのかとかも思いましたがこれも計算があいませんでした。

私は、祐那が「約8年前にくだん様の呪いにかかった」と言っている場面で数字の正体に気が付きました。

そうこれは佑那がくだん様の呪いにかってから経過した日付だったのです。

しかし、まだ一つだけ疑問がのこっていました。それは、冒頭部だけ「+1」という演算子がついていたということです。

この正体は、物語の終盤で佑那が同じ夢を繰り返してみていとことが分かった場面で正体に気が付きました。

この「+1」は夢の中ではなく、現実世界で恭介と佑那がはじめて、「はじめまして」といった日のことだったのです。

あえてその日を「2839」とは書かずに「2838+1」と書くのはすごくおしゃれですね。


「3000+∞」の世界の二人は果たして幸せなのか


『はじめましてを、もう一度。』は最後にプロローグという題で死んだ祐那と再び出会うために、恭介が作ったシミュレーションの世界で二人が再開したことが描かれています。

再び出会えたことに二人はとても幸せだといった風に物語はしめられています。

これを読んで私は、本当にシミュレーションの世界で再開した二人は幸せなのかという疑問が残りました。

二人が再開できたのはもちろん喜ばしいことですが、それはあくまで恭介が作った仮想シミュレーションの世界でです。

恭介はまだ生きているので、シミュレーションの世界に現実の思考などを持っていくことは可能かもしれません。

一方、祐那は既に死んでいるためこのシミュレーションの世界の祐那はあくまで恭介が自分の理想通りに作成した人間ということになります。

つまり二人は、永遠にシミュレーションの世界で一緒に過ごすことはできるかもしれませんが、それは本当に二人にとって幸せなのか少し疑問に感じました。

もし、現実に自分の好きな時代を再現できるようなシミュレーションシステムが開発されたら、ほとんどの人間がシミュレーション依存になりそうな気がして、恐怖を感じました。


ハッピーエンドだからそれでいいじゃないかと思う人もいるかもしれませんが、他の方はこのエンディングを読んでどのように感じたのかが少し気になりますね…。



まとめ


『はじめましてを、もう一度。』は単純なSF恋愛小説だというとらえ方もできますが、考えさせられることもありかなり面白かったです。

また、プログラミングという小説では表現しにくいテーマを上手に扱っているなとも思いました。

この作品の影響でプログラミングに興味を持ち始める人とかもでてきそうですね。



Flutterでアプリを作ってみようとしたところ様々なアプリでよく目にする、

キャプチャ

のアイコンの出し方が分からず小一時間ほど悩んだので、同じことで悩む人がへるように出し方を書いておきます。

記事を書いたあとに気づいたのですが、Drawerを設定したらデフォルトでハンバーガーボタンが設定されるようで私の調査は無駄に終わりました。



Drawer以外でハンバーガーボタンを使いたいという人は参考にしてください。(そんな人いないだろ)




『三』(ハンバーガーボタン)の出し方


結論からですが『三』のアイコンは以下のコードで出すことができます。

Icons.dehaze_sharp

キャプチャ


ちなみに私はこれを見つけるためにFlutterの公式のアイコン画像のページのアイコンとひたすらにらめっこしていました。




上記で紹介したもののほかに、線の細さが違う似たようなアイコン他に3つありました。

キャプチャ

芸術的センスにかけている私からしてみたらこれらをどう使い分けたらいいか分からないという。



サンプルコード


以下は、『三』をヘッダーに表示させるサンプルコードになります。

import 'package:flutter/material.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
// 表示する Widget の一覧

Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // <- Debug の 表示を OFF
home: Scaffold(
appBar:AppBar(
leading: Padding(
padding: const EdgeInsets.all(8.0), // マージンの設定
child: Icon(Icons.dehaze_rounded), // アイコンの種類
)
)
),
);
}
}


キャプチャ





↑このページのトップヘ