Shanling M6の使い勝手について

使い勝手について調べてもなかなか出てこなかったり、見つけられなかったことがちょこちょこあったのでまとめます

だいたいは使いにくかったところ、思い通りに動かなかったところなんかをまとめてます。すごいボロボロに書いてますが、音はとってもきれいなのでわりと満足してます

また、まともなDAPはこれしか持っていないため、音質がどうとかはうまく表現できないので省きます。(細かい音質がどうとかは省きますが、もちろんとっても良い音で音楽を聴けてます)

いまの構成

f:id:ayatec:20210128182602j:plain

  • Shanling M6
  • カナルワークス U12aEX
  • onso 05 4.4mm
  • Spiral Dot++

音源について

もともと音楽が好きでずっとYoutube Musicで聴いていましたが、オーディオ周りを揃えてからはハイレゾのためにAmazon Music HDを契約して聴いてます。やっぱりハイレゾはきれい

(一瞬mora qualitasも試したけど、曲数が微妙だったので無料期間中に解約)

私がM6を買うときに気にしたところ

  • Googleログインできるか
    • →普通にログインできた
  • Google Playストアが入るか
    • →思ったより簡単に入った
  • Youtube MusicとかAmazon Music HDが普通に使えるか
    • Youtube Musicは普通に使えた
    • Amazon Music HDはM6自体のスペック不足を感じるけど、聴くだけならまあ聴ける

M6で、思っていたよりも良かったところ

  • Youtube Musicとかが簡単に入った
  • Googleログインが普通にできた
  • 使いたいアプリを起動するだけなら、特に手間かからずにさっとできたところ

Google Playストアが入っていないということは知っていたので、ここらへんはちょっと不安だった

Google Playストアの入れ方

  1. プリインストールのAPKPureを起動
  2. google play store」と検索
  3. インストール
  4. 起動

これで普通にGoogle Playストアが入りました

Youtube Musicで音楽を聴くまで

  1. Playストアを入れる
  2. Googleアカウントでログイン
  3. Playストアで「youtube music」と検索
  4. インストール
  5. 起動

これで普通にYoutube Musicが使えました

Amazon Musicアプリがわりと微妙だった

音楽を聴くだけなら大体大丈夫だけど、思ったよりも微妙な挙動をしていた

例えば

  • アプリを起動するとAmazon Music HDとアニメーションで表示されるけど、その時点でガックガクで低スペックを感じる
  • プレイリスト一覧を開く→プレイリストをタップ→開かない→タップ→開かない→10秒20秒待つ→突然開く
  • 音楽再生をする→SDに音楽をダウンロードする→突然音楽が止まる→アプリが落ちる(これはかなり頻繁になる。ダウンロード周りはかなり怪しいので、聞きながらダウンロードはできないものと思ったほうが良いくらい)
  • 音楽を聴いてる途中、この曲をプレイリストに入れよう!→プレイリストに入れようとすると突然音楽が止まる→アプリが落ちる
  • 音楽を聴いてる途中、やっぱりあっちの曲を聴こう→能動的に違う曲を流そうとすると突然音楽が止まる→アプリが落ちる
  • その他、適当にプレイリストいじったりマイミュージックいじったり検索したりしてると突然落ちる

たしかに、DAP用にカスタムされたAndroid 7な上、Androidとしてはだいぶ低スペックな端末なので、広い心でこういうこともあるよね~~と思いたかった

んだけど、Youtube Musicはなんにも問題なくてきぱき動くので釈然としない、きっとAmazonがわるい・・・

一応、普通に音楽を流せるときもまあまあある。でも、止まることもまあわりとあるので、M6でAmazon Music HDを使うのは少し広い心が必要(もしかして気づいていないだけで私のはハズレ機種かなにか・・・?)

Amazon Musicアプリのダウンロード中は本当にひどい

ダウンロード周りと、曲を聴いてるときの突然の操作でアプリが落ちがちです。

ダウンロード周りは特にひどくて、ダウンロード中は音楽聴けないと思ったほうが良いくらいです。それなのに端末の画面を暗くしてるとダウンロードも止まるので、嫌がらせかと思うくらいダウンロードするのがしんどい・・・ハイレゾだと容量が多いから時間かかるしさらに・・・

Amazon Musicアプリでも、普通に音楽を聴くだけならまあ大体動く

アプリを開く→プレイリストを選ぶ(たまに反応が10秒とか遅れるけど我慢する)→曲を流す→端末横のボタンで再生停止、次の曲とかをカチカチする程度でずっと聴いている分には、落ちることはほぼない

ただ、違うプレイリストを選んでみると落ちたり、あの曲聴きたいなって検索すると落ちたりすることがわりとある。もちろん、落ちないで普通に聴けることもある。ただ、普通のスマホとは比べ物にならないくらい頻繁に落ちる

音楽再生アプリの同時起動はしないほうが良さそう

音楽再生アプリとか、音楽のストリーミングアプリとか、端末の横についている、前の曲ボタン、次の曲ボタン、再生停止ボタンあたりで動きそうなアプリは、同時に起動しないほうが良さそう

例えば、Amazon MusicアプリとYoutube Musicアプリを同時起動した状態で、Youtube Musicから音楽を流しているとき、再生停止ボタンを押したらYoutube Musicの音楽が止まるんじゃなく、Amazon Musicから音楽が流れ始めるみたいなことが起こった。聴いているアプリだけを起動して、他のアプリはしっかりタスクごと停止しておいたほうが良い

一番ひどかったのは、mora qualitasとYoutube Musicを起動して、再生停止ボタン押したとき。どっちもが再生しようとする→たぶんmoraがyoutube musicを止めようとする→たぶんyoutube musicもmoraを止めようとする→無理やり止められたけどお互いやっぱり再生をしようとする→止められる、みたいなループに入って、再生停止、次の曲、あたりが連打された状態みたいになっておかしくなる

Androidを再起動したタイミングで、ランチャーアプリがデフォルトのものに変更される

自分の好きなランチャーアプリを使いたい人は注意

Androidを再起動したタイミングで、ランチャーアプリがデフォルトのものに強制で変更される

例えば、充電が切れたときとか、Amazon Musicアプリが落ちてそのままAndroidごと落ちたときとか、電源ボタンの長押しからM6を起動すると、ランチャーアプリがデフォルトのものに勝手にすり替わる

しかもその状態でホームボタンを押してもランチャーアプリの選択みたいなのは出てこないので、設定→アプリ→アプリ設定→ランチャーの選択 みたいな感じに設定を潜らないと再設定できないので若干面倒

よく言われてるけど、勝手に電源が切れる問題

設定のオートスタンバイってところで設定した分数が経つと、勝手にAndroidごと電源が落ちる。ここはオートスタンバイって名前だけで特に説明が書かれていないので、調べないとだいたいの人は引っかかると思う・・・

デフォルトでオフになっておらず時間が設定されてるので、使った人はだいたいみんな勝手に電源落ちるのを経験すると思う

これと、OS再起動でランチャーアプリがデフォルトになる問題が重なって、さらにめんどう

画面の反応がにぶい問題

画面のタップの反応は結構な鈍さです。AmazonKindleとかほどではないにしても、似たような鈍さを感じる。普通のスマホと同じ感覚でタップすると半分も反応しないので、しっかりゆっくり、ぐっとタップしてあげないといけない。めんどう

まとめ

いろいろ挙動がひどいところを書きましたが、音はとってもきれいなので満足してます、うれしい

AWSで作る、常時起動しない人のためのMinecraftサーバー

概要

  • Amazon Linux 2のEC2インスタンスMinecraftのサーバを建てる
  • コストを減らすため常時起動はせず、必要なときにインスタンスを起動する方式
  • 常時起動しないのでElasticIPを使わずに、でも毎回同じドメインでサーバに接続できる
  • AWSコンソールからインスタンスを開始すればサーバが立ち上がり、停止すればワールドが保存される
  • 工夫してコストカットしたり、MODを入れたりしているので、手間が多め
  • サーバを起動していない月は、現在サーバ1つにつき月額1$くらいで維持できてます(EBSのみ課金される)

使うもの

私の作りたいマイクラサーバ

  • 人数は少なめ、多くても4人程度を想定
  • やりたいときに集まってやるので、常時起動はしない
  • 少しMODを入れる

EC2を作る

インスタンス作成

Amazon Linux 2で適当にインスタンスを作成する

インスタンスタイプについて

micro系とかはスペック不足でラグがひどかったりエラー落ちしたりするので、厳しそう

  1. はじめにt2.microでやってみたときワールド生成の時点でエラー落ちを何回もしていた(0.0152USD/時間)
  2. t3.smallにしたらすんなり動いた(0.0272USD/時間)
  3. コストが気になったのでt4g.smallに移行した(t4g初めてつかったけどコスパすごい)(0.0216USD/時間)
  4. すごい勢いで移動するとワールド生成が追いつかないのでa1.xlargeにしてみたらすごく快適(0.1284USD/時間)
  5. さすがに高いのでa1.largeを使い始める(0.0642USD/時間)

インスタンスタイプはコストやプレイ人数、MODなどに合わせて適当に決めましょう

あまりケチるとまともにプレイできないので気をつけて・・・

EBSのサイズについて

ストレージは途中で増やすことができるので、いったん最低の8GBで作る→足りなくなったらサイズを増やせば良い

逆にストレージを小さくすることはできないので(別のEBSを作ってそっちに移す形ならできる)、適当に20GBで作ってみたけど、数百MBしか使ってないから最低の8GBで良かった・・・と私みたいにならないように

セキュリティグループについて

  • イクラ用に25565/tcpを開ける
  • 適当にSSH用の穴も開ける

Elastic IPを使わないドメイン解決の仕組みについて

qiita.com

こちらの記事を参考に、こんな仕組みを作る

  1. イクラのEC2インスタンスを起動
  2. EC2の起動を検知して、EventBridgeからLambdaを起動
  3. 起動検知したEC2のIPアドレスを、Route53を通して任意のドメインのレコードとして追加

これで、Elastic IPを使わずに毎回同じドメインを使えるのでとても便利(一応レコードが行き渡るのに若干のタイムラグがあるが我慢する)

ただ、常時起動するマイクラサーバならEIPも無料で済むので必要ないかも

仮想マシンにマイクラサーバを入れる

必要なものの用意

  • Javaは古いのだと不安定ってちらっとみたので、新しいものを入れる(よく調べてない、てきとう)
$ sudo yum update
$ sudo yum install java-1.8.0-openjdk

イクラサーバの準備

MCVersions.net - Minecraft Versions Download List

このあたりから、ほしいバージョンのマイクラサーバ.jarを探してくる

$ mkdir ~/minecraft
$ cd ~/minecraft
$ wget https://launcher.mojang.com/v1/objects/35139deedbd5182953cf1caa23835da59ca3d7cd/server.jar

1回サーバを起動する

$ java -Xms1024M -Xmx1024M -jar server.jar nogui

ライセンスに同意する

$ echo 'eula=true' > eula.txt

MODを入れるならforgeとかを適当に入れる

Downloads for Minecraft Forge for Minecraft 1.16.5

このあたりから、ほしいバージョンのforgeを探してくる

$ wget https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.16.4-35.1.4/forge-1.16.4-35.1.4-installer.jar

forgeのインストール

$ java -jar ./forge-1.16.4-35.1.4-installer.jar nogui --installServer

forgeサーバを1回起動してみる

$ java -server -Xms512M -Xmx2048M -jar ./forge-1.16.4-35.1.4.jar nogui

イクラのクライアントを起動してつないでみる→つながる→一旦止める

> stop

必要ならMODを適当に入れる

インスタンス起動時にマイクラサーバを自動起動する

$ sudo vim /etc/systemd/system/minecraft.service

/etc/systemd/system/minecraft.serviceにこんな感じのユニットファイルを作る

[Unit]
Description=Minecraft Server
After=network-online.target

[Service]
WorkingDirectory=/home/ec2-user/minecraft
User=ec2-user

ExecStart=/bin/bash -c '/bin/screen -DmS minecraft /bin/java -server -Xms512M -Xmx2048M -jar ./forge-1.16.4-35.1.4.jar nogui'

ExecReload=/bin/screen -p 0 -S minecraft -X eval 'stuff "reload"\\015'

ExecStop=/bin/screen -p 0 -S minecraft -X eval 'stuff "say Server Shutdown. Saving map..."\\015'
ExecStop=/bin/screen -p 0 -S minecraft -X eval 'stuff "save-all"\\015'
ExecStop=/bin/screen -p 0 -S minecraft -X eval 'stuff "stop"\\015'
ExecStop=/bin/sleep 10

Restart=on-failure
RestartSec=60s

[Install]
WantedBy=network-online.target

ユニットファイルを読み込んでみて、読み込んだか確認する

$ sudo systemctl daemon-reload
$ sudo systemctl status minecraft

Loaded: loadedみたいになっていれば読み込まれているので、起動できるか試す

$ sudo systemctl start minecraft
$ sudo systemctl status minecraft
$ screen -r minecraft

screenでマイクラのコンソールに入れたら、Ctrl+A > dで抜ける

クライアントからも接続できるか、さっきと同じワールドにはいれているか確認してみる

大丈夫そうなら、自動起動するようにする

$ sudo systemctl enable minecraft

これで、

できるようになってるはず

最後にテスト

  1. インスタンスを再起動する
  2. 起動まで1分程度まってあげる
  3. Route 53にレコードが登録できていることを確認する
  4. クライアントから接続できることを確認する

今後できたら良いなと思うこと

  • 定期的 or サーバ終了時に、ワールドをS3にバックアップ
  • 今は私がインスタンスを起動する必要がある → 適当にウェブを用意して、参加者でも起動ボタンで起動できるような仕組み
  • 一定時間誰もいなかったらインスタンスを停止する仕組み
  • CPUクレジットがなくならないように、週1程度一瞬自動で起動してすぐ落ちるような仕組み

デザインするときはUIキットを入れると楽になるみたい

例えばFigmaiPhoneの中に画面を入れたイメージを作りたいときとか、自分でiOSっぽいものを作っていくのは大変

と思ったら、UIキットっていう便利なものを作って配布してくれてるみたい。例えばこんなの

files.design

ウェブデザインの進め方

ウェブデザインの進め方

まともな個人プロジェクトを作ったことがなかったので、 作りながらいろいろ整理していこうの一環で、自分用の適当メモみたいなもの
ちょっと用語とかも怪しいので、ちょうどいい単語がパッと浮かんで来なければ適当な言葉で濁しちゃう

範囲の想定

どんなものを作りたいかはある程度はっきり設計できている状態から、コーディングの前まで

やることを整理

決めること

  • ページのレイアウト

とかとか

やること(作業)

順番にすすめていく

まず下書き

細かい装飾とかは置いといて、適当に思いつくところから書いていく
最初から考え込むより、とにかく量書いてからイメージ合わせてくほうが結果近道な気がしてるので、どんなページが必要で、どんなコンポーネントが必要かある程度わかってれば適当に書いて並べていく

iPadApple Pencilで、Conceptsを使って適当に書いていった

concepts.app

めっちゃ使いやすくて気に入ったので有料プランにした
無料だと、たしか細かいコピペとかサイズ変更とか移動とかできなかったと思う

最初からPC上でポチポチ形を作っていくのは、たぶん慣れてないとかなりしんどいし、時間がかかる
紙にペンで書くでも良いと思うけど、デジタルだとコピペもサイズ調整もやり直しも一瞬でできるのでおすすめ

注意点

ものの大きさに注意
デスクトップって結構広い
サイズ感が違うと、実際に作ったときの噛み合わなさっていうのが出てくると思うから、適当なウェブページでも開いて、

  • アイコンならこれくらいの大きさかな
  • 検索バーはこれくらいの幅かな

とかをちょくちょく確認したほうが良さそう

下書きをレスポンシブにしていく

書いた下書きを、軽くレスポンシブにしてみる
ここでもサイズ感を気にしておく

デスクトップが先かスマホが先か、どっちが良いかはまだわかってない

この段階はすでに片方が大体できてるので、適当にコピペなり脳内補完なりするとわりとすぐ終わる気がしてる

ワイヤーフレーム作る

Figma使った

www.figma.com

なにか深い理由があってFigma選んだわけじゃなくて、前から使いたかったから
FigmaとかSketchとかXDとかいろいろ調べてて、なんとなくこれかなあとFigma選んだ

コンポーネントは後から

よくこういう系でコンポーネントたくさん作っちゃいたくなるけど、とりあえずページ作ってみて、後から適当にポチポチコンポーネントに変換でも良いと思う

最初にコンポーネントたくさん作っても、実際には使わないものがあったり、組み合わせてみると違和感があったりで無駄がいろいろ出る気がするので(もしかしたら気がするだけかもしれない)

とにかくまずページを作ってみるを優先したほうが良いかなと思ってる

個人のプロジェクトなら特にそうだけど、ユーザーから見えないところですんごい頑張っても「時間もったいなかったね」ってなることが多い気がする

もちろん趣味でやってるならやりたいことやればいいし〜〜とかいろいろ思うことはあるけど、今回はコンポーネントは後回し

色も後回し

上と同じで、とにかく決まってることをバッと進めたほうが良いとおもう

色は組み合わせとかいろいろあるし、実際のUIに当てはめてみないとわからないことだったりあると思うので、いったん後回し

ここらへんから先はまだなのでここまで

firebase init functionsしたとき、yarnで管理してるのにnpmでインストールしますか?って言われて困ったとき

yarnで管理しているプロジェクトにFirebaseのFunctionsを追加するとき

$ firebase init functions

して選択肢に答えていると、こんなことを聞かれる

Do you want to install dependencies with npm now?

私(え、yarnで管理してるのでnpm使わないでください)

と思いつつも、とりあえずyesしてみるとmy-project/functions/packege.jsonって感じで、 プロジェクトのfunctionsディレクトリが作られ、その中でnpmが使われていた。

プロジェクトとしてはyarnを使ってるので微妙な顔になるけど、内部の別ディレクトリでnpmを使うだけなので悪影響はなさそう