THUMBS SHIFT→

このブログは主に親指シフトを用いて書かれています

djangoのコマンドでbashの補完を効かせる

sudo curl -o /etc/bash_completion.d/django  https://raw.githubusercontent.com/django/django/master/extras/django_bash_completion
echo "source /etc/bash_completion.d/django"  >> $HOME/.bashrc

ソース

django-adminとmanage.pyの補完が効くはずなんですが、僕の環境だとmanage.pyでTAB二回押すとエラーがでました(笑)。まぁdjango-adminとmanage.pyは同じ働きをするらしいので、django-adminを使っていくことにします。

poetryこと始め

pipenv はもはや死んだ*1ので、poetry使っていきます。

インストール

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python です。

RuntimeWarningが出る場合

/root/.poetry/lib/poetry/_vendor/py2.7/subprocess32.py:149: RuntimeWarning: The _posixsubprocess module is not being used. Child process reliability may suffer if your program uses threads.  "program uses threads.", RuntimeWarning)

みたいなワーニングが出る場合があります。僕の環境*2では出ました。このまま使っても問題ないらしいので気にならない人は飛ばしてください。

これを消すには、

curl -O https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
python get-poetry.py --uninstall
python3 get-poetry.py
vim $HOME/.poetry/bin/poetry

として、 #!/usr/bin/env python#!/usr/bin/env python3に書き換えます。これで僕は直りました。ソース

使い方

基本的にはnpm(yarn)と同じです。 pyproject.tomlpackage.jsonの役割を果たします。

一応説明しとくと、pyprojectにはインストールしたパッケージや、設定、独自コマンドなどを書くことができ、これがないと何もできません。

最初にやること

poetry init

で対話的にpyprojectを作ってくれます。Enter連打で最小設定のができます。もしくは-n (--no-interaction)オプションをつけても同じことになります。

パッケージのインストール

poetry add <pkg> -Dオプションでdevに追加されます。

環境構築

poetry install

これでpyprojectにあるパッケージを全部インストールしてくれます。 --no-devでdevは無視してくれます。

ちなみに、poetry.lockがあれば、完全に同じ環境を構築してくれます。pyprojectのみある場合は、インストールした後、poetry.lockを作ってくれます。poetry.lockはコミットすることが推奨されています。

仮想環境関連

環境の情報を表示したい時

> poetry env info

Virtual environment
Python:         3.7.1
Implementation: CPython
Path:           /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid:          True

System
Platform: darwin
OS:       posix
Python:   /path/to/main/python

--pathオプションで、仮想環境のパスだけ表示できます。

環境を消したい時は poetry env remove /full/path/to/python です。

VSCodeに環境が認識されない

こういう時は、 poetry env remove /full/path/to/python で環境を消して、 poetry config virtualenvs.in-place true --local で環境をルートディレクトリに作るようにして*3poetry install~/.venvに環境が作られるので、VSCodeに認識されるようになります。

pipが壊れたので、パッケージを削除したら直った話

久しぶりにpython触ったら、Pipenvは開発が停止し(issue見る限り頑張ってはいるけど追いついてない印象。まだ開発やってる〜〜?^^ってのが5つは立ってる)、PoetryやPyflowとか言う新参者が幅をきかせはじめているとかいう、魑魅魍魎が跳梁跋扈している状態なので、「覇権決まるまでとりまpip使っトコ...」ってなったんだけど、そのpipが壊れていたので力技で直した(?)備忘録。

本記事にかかれている手順を実行していかなる損害が出ようとも補償できません。

#以下は当然失敗する
pip install hoge
pip uninstall hoge
pip install -U pip

#再インストールのスクリプトまで失敗する
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

エラーメッセージをメモるのを忘れたが、FileNotFoundErrorとかPermissionDeniedとか出てたと思う。最初は権限関係かな?と思ってsudo付けてやってみたが違うっぽい。

よくよくエラーメッセージを見てみると、あるパッケージの構成ファイル(egg.infoだったかな?)が無いのでエラーが出てるらしい。

pip uninstall hogeでアンインストールもできない。どうにか削除したいので、思い切ってsite-packages/以下を全部消したら直りましたというお話しです。

たぶんnodeで言うnode_modulesとおんなじような扱いな気がしないでもないから消しても大丈夫かなぁって感じ。

create-react-appを使ってるプロジェクトでGithub Actionsを使うときのポイント

create-react-appはnpm|yarn testしたときにデフォルトで--watch --onlyChangedオプションを付けちゃう。そのためGithub Actionsでテストすると、タスクが終了しないので、ハングアップしてテスト続行不可になる。

By default npm test runs the watcher with interactive CLI. However, you can force it to run tests once and finish the process by setting an environment variable called CI.

When creating a build of your application with npm run build linter warnings are not checked by default. Like npm test, you can force the build to perform a linter warning check by setting the environment variable CI. If any warnings are encountered then the build fails.

https://create-react-app.dev/docs/running-tests/#continuous-integration

そのため、環境変数にCI=trueを追加しなきゃいけない。ドキュメントでは「普通はCIはCIサービス側で設定されてるよ」って書いてあるけど、Github Actionsではまだっぽい。まだベータ版だからね。

name: CI

on: [push]

jobs:
  test:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
      - run: yarn install
      - run: yarn test
        env:
          CI: true

CIを設定すると、yarn buildでWARNが起きるとfailする。

環境変数の追加の仕方は他にもある。↓

help.github.com

ちなみに CI=true yarn testは勿論のこと、yarn test --watchAll=falseでもローカルで同じようなことが出来る。知らなかった。 f:id:arark:20191214084310p:plain こんな感じでテストが実行されます。おぉー。

大学の講義の耐えられない虚無みについて

私萩原!この春から大学一年生!

「いっけな〜い。遅刻遅刻〜」

大学「はいきた?遅刻遅刻遅刻遅刻出席削っとくね欠席欠席欠席欠席欠席欠席講義ドーンわかった?わかった?わかった?演習演習演習演習演習演習なんでわからないの?なんでなんでなんでなんでなんで締切です締切締切はい先進みます宿題ドーン出した?出して出して出して出して出して出して出して出して?わからない?じゃあ単位落とすねドーンドーンドーンドーン」

大学の講義、まぁ大体クソだけどみんな適当に受けて単位とって卒業すると思う。

それは別にいい。虚無だけど。教授も生徒もやる気ないなら別にいい。お互い適当にやってこ?ってなる。

ただ、自分は改善しねーのにこちらにだけ努力を求める講師、てめーはだめだ。

講義の耐えられない虚無さ。教育のプロフェッショナルでもない大学教員が質の良い講義なんてできるはずがなかった。

ここでいう良い講義とは、他の手段に比べて講義はこういう点で優れているから絶対に講義という手段を選ぶべきである、という積極的動機が見つけられるもの、としよう。

この基準をもとに大学の講義を見てみると、明らかにその価値が薄い。講師はだらだらと間延びした話し方をし、聞いていると馬鹿らしくなるほどにもどかしい。そのくせわかりづらいとこの解説は一足飛びで、理解しないまま次に行かざるを得ない。

こんな講義なら教科書を読んだほうが100倍ましだから!

もういいから自作の資料を作るな。教科書を使え。車輪の再発明をするな。そもそもそれ車輪じゃねーから。丸太ぐらいの代物だから。なぜわかりづらい資料を再発明するのか。おいばか自著で講義をするのをやめろお前の解説はわかりづらいと言ったばかりだろ。しかもこれ!演習の解答ないじゃん!(略)じゃねえよ馬鹿にしてんのか。おめえは未解明の問題ポンポン解いとんのか?

こういう輩は大体演習を「講義を聞かせるための道具」だと思っている。

ちがうから!生徒がお前の講義を聞かないのは聞く価値が無いからだから!それを減点方式の演習で動機付けするのは違うから!いくら演習を出して聞かせようとしても中身のない講義は誰も聞かないから!

こういう講義にe-learningを導入するともっと酷いことになる。講義の質は変わらないけど演習だけものすっごく増える。演習クイズアンケート演習演習宿題。e-learning全然改善に役立ってねえじゃねえかよ。いや俺らも聞く価値のある講義なら聞くからね。無理やりきかせようと仕向けてくるから俺は怒ってんだぞ???お??

ん?

講師「えらそうなことを言いやがって.....。貴様ら大学生はまじめに勉強してきたとでも言うのか?」

悟空「だから落とした……」

講師「俺が落としたんだ。大学生は何となく気に入らないんでね……」

f:id:arark:20191130142519j:plain

教養としての経済学 をよんだ

サイコパス3期でリーマンショックの話が出てきたので読んでみた。 唐之杜姐さんの安心感な。主人公組が自立してて常守とはちがうなぁって感慨に浸ったりしています。

ハードなSFを読むのに経済学とか金融とか、民族言語などなど広範な文系知識を要求されるのはよくあることで、むしろ魔法のように扱われる理系知識のほうがいらないということもある。

僕としてはSFで使える文系知識を求めてこの本を読んだのだけど、まぁ概ね期待に沿うような本だった。

本書は経済学部一年生に教授が伝えたいことを書いていくような形式を採っているので前提知識はあまりいらない。 興味のあるトピックとしては 1章のTPP,ギリシャ金融危機マイクロクレジット 2章のマーケットデザイン、中立命題、為替レートの決まり方 3章の貨幣鋳造 だった。 4章はつまらなかった…

文系学生向けに「なぜ数学を学ぶのか」という話題が何度も語られていて正直うざかった。本の想定読者的にしょうがないのだとは思うけども。

ハーモニーでは報酬系が時間に関して勾配が0になった完全に合理的な人類が描かれたけども(うろ覚え)、完全に合理的な人類が社会を形成するのはむずかしいんじゃないかなぁと思ってみたりしている。 ちなみに完全に合理的な人のことを経済人と言うらしい。 経済人だからこそ、初期条件が悪ければ、パレート効率の袋小路にはまって社会が硬直するのかもしれない。 一方で国家や民族がなくなるほど情報化されている近未来においてさえ情報の非対称性は(人間が体を持つ限り?)なくならないのでそれによって流動性が生まれるのかもしれない。

久しぶりに本読んだけど面白かったので続けたいな。

一体僕達はどのようにしてimmutable.js+TypeScriptの環境を運用すれば良いのか

JSクソだと言い続けてはや幾月、僕です。

モダン開発環境おじさん「React+Redux+Typescript+immutable.js環境は良いぞ。」

とはよく言われていますが、immutable.jsとTypescriptを併用しようとするとかなりめんどくさくなることに、取り返しのつかなくなった時点で気づくことがあるというのはあまり知られていません。

素晴らしくモダンなimmutable.jsがTypescriptと相性悪いなんてあるわけないやろwwwと僕も最初は思っていました。

では以下のオブジェクトを見てみましょう。

const o = {
    name: 'arark',
    playerId: '0001',
    level: 23
}

これを型付けするのは簡単です。

interface user {
    name: string
    playerId: string
    rank: number
}

じゃあこれはどう型付けしましょう

import { Map } from "immutable";
const m = Map({
  name: "arark",
  playerId: "0001",
  level: 23
});

そう。。。めっちゃ面倒くさいのです。そもそも自分で定義しなくても型推論してくれるもんだと思ってたし。 immutable.jsでは以下のような問題が発生します。

import { Map, fromJS } from "immutable";

// JSのオブジェクトの場合
interface user {
  name: string;
  playerId: string;
  level: number;
}
const o: user = {
  name: "arark",
  playerId: "0001",
  level: 23
};
const name_mutable = o.name //stringと推論される(型付けしなくても)
const level_mutable = o.level // numberと推論される(型付けしなくても)
const none = o.none // エラーになる

// 普通のimmutable.Mapの場合
const u = Map({
  name: "arark",
  playerId: "0001",
  level: 23,
});

const name_immutable = u.get("name"); //string | numberになる。stringと推定してほしい
const hoge_immutable = u.get("hoge"); //string | numberになる。エラーにしてほしい。

このように明らかにJSのオブジェクトとは異なる動きをします。幾つか解決策は見つかっていて 一つは自分でgetなどのメソッドの型定義をオーバーライドすることです。*1*2

interface User {
  name: string
  address: string
  phoneNumber: number
}

interface ImmutableMap<T> extends Map<string, any> {
  get<K extends keyof T> (name: K): T[K];
}

type UserMap = ImmutableMap<User>

const user: User = {
  name: 'yuki',
  address: 'tokyo',
  phoneNumber: 8108012345678
}
const userMap: UserMap = Map(user)
const n = userMap.get('name') // stringと推論される
const age = userMap.get('age') // エラー

これは期待した通りに動き、問題も無いように思えます。しかし他にもある setIn, updataIn, mapなどのメソッドを使っていくたび新しく定義しなければいけないと考えるとかなり手間です。

もうひとつは

blog.mayflower.de

にあるように

import {Map, List} from 'immutable';

type AllowedValue =
  string |
  number |
  boolean |
  AllowedMap |
  AllowedList |
  TypedMap<any> |
  undefined;

interface AllowedList extends List<AllowedValue> {}

interface AllowedMap extends Map<string, AllowedValue> {}

export type MapTypeAllowedData<DataType> = {
  [K in keyof DataType]: AllowedValue;
};

export interface TypedMap<DataType extends MapTypeAllowedData<DataType>> extends Map<string, AllowedValue> {
  toJS(): DataType;
  get<K extends keyof DataType>(key: K, notSetValue?: DataType[K]): DataType[K];
  set<K extends keyof DataType>(key: K, value: DataType[K]): this;
}

const createTypedMap = <DataType extends MapTypeAllowedData<DataType>>(data: DataType): TypedMap<DataType> => Map(data) as any;

などと複雑な型定義をすることです。

「ファック!!!!!!!!!!俺は開発をしたいんであって型定義をしたいんじゃんねえええええええええ」

というのは至極まっとうな意見であって、実際僕もそう思います。ここまでくるともはやimmutable.jsが開発の邪魔になってくることさえ有ります。

そんな悩みに対する回答を、私はstackoverflowの奥地で見つけました。

stackoverflow.com

この一文に注目してみましょう

we converted to immer and we don't want to look back.(中略)We are happy.

そう、わざわざimmutable.jsなんて使いづらいものを使う必要はなかったということをこのコメントは気づかせてくれました。

このTypescriptとの不親和は本家リポジトリでもつとに指摘されていることではありますが、以下のissueに見られるように、なかなか改善される見込みはありません。 Immutable.js is essentially unmaintained · Issue #1689 · immutable-js/immutable-js · GitHub immer.jsに乗り換える人も多いようです。

僕?僕は使いません。もはや戻れないところまで来てしまったからさ......

word死すべし慈悲はない

wordの悪口で一晩明かせるとうそぶく漢、僕です。レポートでoffice製品を強要されて腹がたったので悪口を書いていきます。そして東工大は工業大学を名乗るのをやめろ。

テキストファイルじゃない

もうこれが全にして一、一にして全。microsoft第二の失敗、ソフトウェア界のapple pencil(第一世代)、Magic Mouseの後継、最後に書き足された蛇の足、ネタバレ絵をRTするアホ、e-tax誕生の遠因などと言われています。ちなみにmicrosoft最大の失敗はwindowsです。全ての悪は.docxがバイナリファイルだということに起因しています。

エディタが選べない

テキストファイルじゃないのでエディタが選べません。これがプレーンテキストだったらどんなに良かったことか・・・。特にwordの数式記述は東工大の学内システムの如くクソなので、使っているうちに不満がたまり、レポートを書く気力がゴリゴリ削られていきます。

構造とデザインの分離ができない

wordは典型的なWYSIWYGエディターです。だから見出しを太字にしただけで見出しになったと勘違いしてる奴がいます。というかそういうやつしかいません。太字は!!!!!見出しじゃ!!!!!!ない!!!!!!! 見出しはアウトラインで階層的に表示される、メタ的に意味づけされた物のことを言うんじゃボケ!!!!!!!!wordでちゃんと階層的に文書を作ろうとすると、マウスとキーボードの往復でストレスしかたまりません。いちいち「新しい小見出しを作成」なんてクリックさせてんじゃね〜〜〜〜〜〜〜。

構造とデザインの分離が出来ないとどういうことになるかと言うと、「太字部分の書式一括で変えたいな〜」って思った時に出来ません。一つ一つ自分で書き換えていくしかありません。いやホントは出来るのかもしれん。でもそもそもテキストファイルであれば簡単に出来たことをわざわざ難しくしないでくれ。それにWYSIWYGだからコピペが死ぬほど無理。

wordで図形とかコピペしようとすると(そもそもテキストエディタで図形を書かせるなと言うのはある)大体崩れますよね? 自社製品のファイル間くらい!!!!!簡単に!!!!コピペ出来るようにしろ!!!!!

これがhtmlだったりmarkdownだったら<h1>#だけで見出しになります。表示を変更したかったらテキストじゃなくて出力プロセッサの方を変えれば良い。webで言えば、htmlじゃなくてCSSを変えればいい。html+CSSがwordだと思ってください。h1などのマークアップタグを使わずにpタグのインラインCSSのみで書かれた文書がwordです。どうです?クソエディタオブザワールドじゃないですか?

文を書く以外のことが出来てしまう

wordだと図形を書けます。アホか!!!!!なんでテキストエディタで図形書かなきゃいけないんじゃ!!!!!かけるんだったらちゃんと文の回り込みとか設定しやすくしろや!!!!文章の回り込み回避のために連打された改行のせいで何度レイアウト崩れに涙をこらえたか。

wordで図形が書けるせいで、一体どれだけの学生がコピペが出来ないことに悩まされたか課題をだす教授側はわから無いんでしょう。コピペ不可の表紙を使うことを強制してる電気電子系、お前やぞ。そして東工大は工業大学を名乗るのをやめろ。

数式記述がクソどころじゃない

wordで数式を書こうとします。 リボンから数式をクリック→上付き文字、下付き文字などの中から求める構造をクリック→数字を入れる。ギリシャ文字の場合リボンから選ぶ→更に複雑な構造の場合永遠ループ

う、う、うぜ〜〜〜〜〜〜💢💢💢幸いにして、wordでは一部のtex記法がサポートされています。ですがそもそもtexも書きづらいので、多少のストレスを緩和するだけで、やはりストレスが貯まるし、もはやtexで良いです。

gitで管理できない

別にgitじゃなくてもいいです。なんか一般ユーザに優しいVCSがあればそれでもいいです。いかに優れたVCSであろうとも、対象がバイナリファイルになってしまってはバージョン管理するメリットがなくなります。このせいでいくつreport_v1.docx, report_v1_rev.docx, report_v1_rev_checked.docxなんて言うファイルが生み出されたことか・・・。それはそれとしてdocxの改訂にはセマンティックバージョニング(的なもの)使えや!!!!!!

OSが限定される

Windowsを使っている人の8割は家族を人質に取られているというのは有名な話ですが、一部のレジスタンス(他OS)では実質wordファイルの編集が出来ません。できるだけwindowsと距離を置きたいことを主目的として生活している僕のような人にとってはエディタどころかOSも制限されるのはもはや人権侵害。macはどうなんだろう。あんまり不具合とか聞かないので最近は完全に互換性があるのかも知れません。

じゃあどうすればいいのさ

pandocを使いましょう。

qiita.com

ただこれでも完全じゃなくて、ギリシャ文字などが文字化けしてしまうことがあるので結局wordを使ってます。頼むからwordじゃなくてPDFもOKにしてくれ。

東工大は工業大学を名乗るのをやめろ。

「OPPO Reno A 」のレビュー:コスパ最高の日本向け中華スマホ

OPωPO ←Reno Aのコスパの高さに嗚咽を抑えられないOPPO

Too long;Don't read

みなさん財布使ってますか?今すぐ捨てましょう。

最近は政府がキャッシュレス決済を推進してくれているおかげで、だいぶ色々な所でキャッシュレスでお買い物ができます。僕のバイト先もPayPayが使えるようになりました。

でもQRコード決済はなぁ~~~個人情報おもらしするし(〇Pay)、特典もおにぎり2個だけだし(7〇ay)、競合が多すぎてすぐつぶれそうだし(7P〇y)、使える場所もコンビニ1社しかなさそう(7 P a y)。って思ってる人多いと思います。

ただSA行ったときに気づいたんですけど、QuicPayとかiDとかそこら辺の非接触決済は対応してるってとこも多いんですよね。じゃあFelica搭載端末買うかってなったところでスマホを探すとします。するとこんな感じのスマホがどさどさ出てきます。

f:id:arark:20191007215258p:plain
なんじゃこのCPU!?
f:id:arark:20191007215514p:plain
なんじゃこのメモリ!?(arrows U)
f:id:arark:20191007215935p:plain
貧弱ぅ!(AQUOS sense2 SH-M08)

スマホのCPUに詳しくない人はSDMをGTXに置換した感覚でそんなに違いはありません。

まぁあえて貧弱スマホを選びましたが、同価格帯にはHUAWEIOPPOASUSなど海外の高コスパメーカーがひしめく中でわざわざこんなスマホを選ぶのはちょっと刺身にタンポポ載せる仕事を強制されるくらい人権を奪われた気になります。高性能かつFelica搭載なものもありますが大体フラッグシップなので10万くらいします。

Felica機って大体両極端なんですよね。

「もっとこう・・・全部そこそこの性能で、使ってて不満がないスマホはないのか・・・」

あ り ま す

OPωPO

ここでOPPO Reno A 128GBの性能を見てみましょう。

パーツ スペック
CPU SDM710
RAM 6GB
ROM 128GB(実質105GBくらい)
バッテリー 3600mAh
認証 画面内指紋、顔
ディスプレイ 有機EL(水滴ノッチ)
Felica もちろん搭載
ちなみに 保護フィルム、ケース付き

これで\38,800です。素敵スペックですね。ちなみにこれは予想外だったんですが、なんと販売開始1分でSIMフリー版は売り切れました。Twitterではあんまり盛り上がってなかった気がするのになんでだ・・・。

使ってみて

とにかくストレスフリーです。Google PayでSuicaが使えるのでわざわざ財布から出す必要なし。コンビニではQuicPayで爆速会計。自販機もいけます。有機ELは発色が綺麗で、前のスマホ(p10 lite)と比べてみると明らかに彩度に差がありました。

保護フィルムもケースもついてくるので余計な出費はなし。来てすぐ使い始められます。 唯一の欠点はちょっとでかいこと。女性はきついかも?まぁ不満に思うほどではないし、画面分割で使えるスペースが増えたので良しとしましょう。

カメラ

Oppoはカメラを推してるスマホメーカーなので写真も見てみましょう。写真はブログに直貼りしてて画質落ちてるので、解像感とかは参考程度に見てください。

f:id:arark:20191008180329j:plain
RenoA多分夜景モード
f:id:arark:20191008175722j:plain
P10lite
さすがにp10 liteと比べると雲泥の差ですね。p10liteだと暗いところがつぶれているのがRenoAだとちゃんと見えます。 もうちょっと夜景モードを見てみましょう。

f:id:arark:20191010053801j:plain
夜景モード無し
f:id:arark:20191010053943j:plain
夜景モードあり
f:id:arark:20191010053847j:plain
なし
f:id:arark:20191010053835j:plain
あり
f:id:arark:20191010053911j:plain
なし
f:id:arark:20191010053859j:plain
あり

かなり夜景モードが効いてますね。黒でつぶれてるところや、光がにじんでるところがくっきり映ってます。

夜景モードのほかにもポートレート、パノラマ、エキスパート(exposureとWBとAFとEVをいじれる)、タイムラプス、Google Lensモードがあります。

ついでに10倍までズームできたので一応撮ってみました。

f:id:arark:20191008180738j:plain
10倍ズーム
まぁこんなもんでしょう。P30proが異常なんや!

僕は最後列から板書を撮れる能力があればそれで満足です。

ゲーム性能

僕はFGOをやってるんですが、明らかにロードも描写も速くなりました。"天地乖離す開闢の星"も、”星馳せる終幕の薔薇”もカクつかないだと・・・?

手動ですが、ローディング時間計測しました。3回やって平均とってます。一括DL済。

場面 時間
アプリ起動→ロード終了まで 11.6秒
種火開始→ロード終了まで 12.7秒

すごい!はやい!って言いたいけどこう見ると種火のロード結構長いな・・・。p10 liteだったらもっと長いのか・・・。

便利機能として、ゲーム中にピクチャーインピクチャーでLINEの返信ができます。キーボードもフロートしてるのでつかいやすいf:id:arark:20191008202328p:plain メモリが6GBもあるので色々他のタスクやってからFGOつけても落ちてないです。ブラウザで攻略見てtwitterやって戻ってきてもまだ生きてる。え?まだキルされて無かったの!?ってことがまま有ります。あとゲーム中熱くなることはないです。こういうちょこちょこ便利な所が結構うれしい。

認証

期待していた画面内指紋認証ですが、顔認証があるのでそんなに使いません。持ち上げたらもうロック解除されてるので。

レスポンスも、指紋だと一拍挟んでから認識される感じでちょっと遅いです。場所が触覚でわかるわけじゃないからちょっと迷うってのもあります。

でもロマンあるからOKです!

キャッスレス決済

これに関してはRenoAのレビューではありませんが・・・。

google payにカードを登録するとこんな感じでリストアップされて、色んな決済方法が使えます。

f:id:arark:20191011124435j:plain
google payの画面

買って間もないので非接触決済のみ対応してる店にはまだ行ってませんが、多分大幅にキャッシュレスで会計できる店が増えてると思います。

ただGoogle Payに登録したLINE PAYカードを登録したQUIC PAYで支払うというこのわかりづらさはなんとかならないのか。

サイクリストに最適

僕は自転車乗るんですが、おサイフケータイ+防水防塵のRenoAは実はとってもサイクリングに合うんですよね。サイクリングに行くときは背中のポケットに、スマホと現金をジップロックに入れて走るんですが、小銭があるとじゃらじゃらして出しづらいし違和感もある。

その点RenoAは現金いらずでコンビニで補給食買えます。QRコード決済でも現金いらずで買い物できるんですが、いちいちジップロックから出すのがめんどくさい。google payなら非接触でとってもスムーズです。防水なので突然の雨でも安心という至れり尽くせりの仕様。

まとめ

発売前は普通にこのスペックだったら5万してもおかしくないと予想していたのでかなりお手頃感があります。少なくともpixel3aと同じかそれ以上だと思ってました。

キャッシュレス決済も、政府がでかいキャンペーンをうってることと、セブンイレブンQRに対応したことでようやく完全移行の土壌が整った感じがします。

よっしゃ~~~~~キャッシュレスで買い物しまくるぜ~~~~~~。

あれ?

f:id:arark:20191008190137j:plain
口座残高
お前…消えるのか…?

Github実践入門 をよんだ

なーんか感覚でcommitしてんな〜〜って人、いますか? 感覚でcommitをするな。

とは言ってみたものの、この本にcommitの粒度が詳しく解説してあるわけではないです。できるだけ細かく。コミットメッセージ以外のことはやらない、と書いてあるくらい。

この本はあくまでGithubの使い方であって、Gitの使い方ではないので基本くらいは知っておきましょう。あと当たり前のようにシェルとコマンドも使えるようになっておきましょう。windowsに救いはありません。これなんかおすすめ。

arark.hatenadiary.jp

個人で開発してるとgitの使い方良くわかんなくなりますよね。え、私のコミット、汚すぎ・・・?

ブランチがなんぼのもんじゃい。漢はmaster一本よ。とばかりに執拗にmasterにcommitしてる人もいるでしょう。やめようね!

また、本文に書いてあるように、gitの使い方はProGitを読むと知識が補完しあっていい感じに読み進められます。猿でもわかるgitとかどこの新入社員が書いたとも知れないGit入門などという記事を読むと時間の無駄になります。ProGitを読め。この機会に今まで曖昧だった理解を直せてよかった。

初版がちょっと古いのでUIの解説とかは今のと違いますが、まぁ本質的に差はそんなにありません。

内容としてはやっぱタイトルにもあるようにプルリクを重視したものです。他にも、issueの使い方が書いてあったのがとてもためになりました。

issue立てる!?ベテランかお前みたいに思ってたんですけど案外そんなことはないんだと知りました。commitメッセージに#1とか書くと対応issueへのリンクになるとか、へぇ〜〜って感じです。

github-flowの使い方もためになりました。github-flowはデプロイ中心のスタイルだからCIツールを使ってテスト自動化しようね。とか知らなかった。travisCIの使い方も簡単に紹介してくれたので便利。今だとGithub actionなのかな?

たぶん本書を読むとOSSプロジェクトに参加できます。GitHubなんかうまく使えてないな〜とか、OSS参加してつよつよコーダーになりたいな〜〜とか言う人は読むと幸せになれます。

追記:

この本を参考にして、個人で開発してたコードをgithubに上げて、issue立てたら知らない人から「hey!これ直していいかい!」ってコメントが来たのでマジ焦りました。でもちゃんと動作確認して、プルリクマージできました。まじでありがとう本書....