- 投稿日:2020-02-25T18:20:50+09:00
Instagram風SNSアプリをつくろう
Ver.1.1 updated @2020/02/25 by Shota Oshiro
完成イメージ
環境
Swift 5.0
Xcode 11.0
Mac OS 10.15.3 Catalinaこの記事で学べるスキル
- 画面遷移ができるようになる
レシピ
- プロジェクト作成
- CocoaPodsでライブラリの導入
実作業
プロジェクトを作成しよう
Xcodeを立ち上げてCreate a new Xcode Projectをクリック。
InstaSampleを作成しましょう!CocoaPodsでインストール
NiftyCloudMobileBackendのフレームワークをプロジェクトにインストールします。
一度プロジェクトを閉じてください。
ターミナルを立ち上げます。
まずプロジェクトのあるディレクトリまで移動してください。cd desktop
cd InstaSamplepodfileの作成と編集をします。
pod init
pod fileを編集して保存するNCMBをインストールします。
pod install
インストールが完了したらworkspaceの方からプロジェクトを立ち上げてください。
これでプロジェクトの作成は終了です。
次回はStoryboardの作成をしていきましょう!まとめ
参考
- 投稿日:2020-02-25T13:52:26+09:00
Macで日本語版のOverleafを使う
- メニュー → コンパイラ → LaTeX
- メニュー → Font Family → Monaco (等幅フォントにする)
- メニュー → スペルチェック → オフ (日本語ではスペルチェックできない)
- 再編集の右の下矢印 → Auto Compile → オン
- 以下のファイルをファイル名latexmkrcで作成する
$latex = 'platex'; $bibtex = 'pbibtex'; $dvipdf = 'dvipdfmx %O -o %D %S'; $makeindex = 'mendex -U %O -o %D %S'; $pdf_mode = 3;設定した結果
- 日本語ファイルを正しくコンパイルして表示できた
- カーソル位置がずれなくなった
- 投稿日:2020-02-25T10:47:29+09:00
MacBook Air 2012 HighSierra からCatalinaにバージョンアップを行う
目的
- MacBook Air 2012のOSバージョンアップを実施した時の方法をまとめる
すいません
- バックアップを必要とするデータが存在しないため今回は省略する。
条件確認
- 下記のWebサイトを確認して自分のMacがOSのバージョンアップ対象なのか確認する。
- 下記に簡単にバージョンアップ条件を記載する。
- OS X Mavericks 以降を搭載していること
- 記憶領域の空き容量が18.5 GB以上存在すること
- 下記に記載されたモデルより新しいこと
- 2015年 MacBook
- 2012年 MacBook Air
- 2012年 MacBook Pro
- 2012年 Mac mini
- 2012年 iMac
- iMac Pro
- 2013年 Mac Pro
- ACアダプターで給電できる環境にあること
- 安定したネットワークの回線があること
- Apple IDでApp Storeにログイン済みであること
実施手順
- ネットワークへの接続とACアダプターでの給電を確認する。
- Catalinaの取得
- インストールが完了すると端末が自動で再起動する。
- 下記の画面がでたら「続ける」をクリックする。
- 下記の画面がでたら「続ける」をクリックする。
- 投稿日:2020-02-25T03:28:20+09:00
【ゴリ押し?】Catalinaのミュージック.appでもiTunes Serverを使えるようにする
macOS CatalinaでもiTunes Serverを利用する方法
あの…Appleさん…困ります…
ただ私は自分の持つ音源を楽しみたいだけなんです…背景
mojaveまでは問題なくNASのiTunes Server機能で音源をホームシェアリングで再生できていたのに,Catalinaになって置き換わったミュージック.appだと再生ができません.これでは不便です.
無理やりiTunes.appをインストールすることで引き続き利用できていましたがこれでは根本的な解決ではありません.もやもやしていたので,ホームシェアリングはどういった仕組みなのかから調べてみることにしました.ホームシェアリング機能にはDAAPを利用している
DAAP(Digital Audio Access Protocol)というプロトコルで通信をしていることがわかりました.これはAppleによって開発されたものらしいです.Wikipediaを見てみるとよくわかります.https://ja.wikipedia.org/wiki/Digital_Audio_Access_Protocol
このDAAPによる共有をiTunesなどでは「ホームシェアリング」としていますよね.また,私が利用しているSynology ds-215jではiTunes-serverと呼んでおります.forkd-daapd
このdaap,実はかつてリバースエンジニアリングされたことによって,今も第三者的に開発が行われているらしく,このforked-daapdはこの記事を執筆時点(2020-02-25)でversion 27.1まで開発されていました.
なんと,version 27.0時点で今回のミュージック.appのDAAPの不具合が解決されているようです.じゃあどういった問題が起きていたのかといいますと,次の節で紹介いたします.クライアントからの要求の仕様変更
はい.題名の通り,やはりミュージック.appが悪かったです.仕様が変わっていました.
"@"になっている
ミュージック.appの要求の内容の仕様変更の一つに問題ありました.本来,'com.apple.itunes.extended-media-kind[:]1'のように要求が来るはずが'com.apple.itunes.extended-media-kind[@]1'と要求が来てしまっているため,音源データをクライアントに送信できずにエラーを吐いていました.forked-daapdに,この"@"で来てしまうことに対して対策を施していない場合,次のようになりました.
pi@raspberrypi:~ $ sudo service forked-daapd status ● forked-daapd.service - DAAP/DACP (iTunes), RSP and MPD server, supports AirPlay and Remote Loaded: loaded (/etc/systemd/system/forked-daapd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-02-24 14:55:47 GMT; 30min ago Docs: man:forked-daapd(8) Main PID: 3970 (forked-daapd) Memory: 46.3M (max: 256.0M swap max: 32.0M) CGroup: /system.slice/forked-daapd.service └─3970 /usr/sbin/forked-daapd -f Feb 24 15:22:13 raspberrypi forked-daapd[3970]: [ LOG] daap: Unknown operator '@' in clause 'com.apple.itunes.extended-media-kind@ Feb 24 15:22:13 raspberrypi forked-daapd[3970]: [ LOG] daap: Unknown operator '@' in clause 'com.apple.itunes.extended-media-kind@ Feb 24 15:22:13 raspberrypi forked-daapd[3970]: [ LOG] daap: Unknown operator '@' in clause 'com.apple.itunes.extended-media-kind@ Feb 24 15:22:13 raspberrypi forked-daapd[3970]: [ LOG] db: Could not prepare statement: no such column: f.album_sort Feb 24 15:22:13 raspberrypi forked-daapd[3970]: [ LOG] daap: Could not start query Feb 24 15:22:23 raspberrypi forked-daapd[3970]: [ LOG] daap: Unknown operator '@' in clause 'com.apple.itunes.extended-media-kind@ Feb 24 15:22:23 raspberrypi forked-daapd[3970]: [ LOG] daap: Unknown operator '@' in clause 'com.apple.itunes.extended-media-kind@ Feb 24 15:22:23 raspberrypi forked-daapd[3970]: [ LOG] daap: Unknown operator '@' in clause 'com.apple.itunes.extended-media-kind@ Feb 24 15:22:23 raspberrypi forked-daapd[3970]: [ LOG] db: Could not prepare statement: no such column: f.album_sort Feb 24 15:22:23 raspberrypi forked-daapd[3970]: [ LOG] daap: Could not start queryわかりやすいように図を入れておきました.正確には違うかもしれませんがだいたいこういう状態です.
forked-daapdはどのようにして解決したか?
詳しくはGitHubのこちらのissueを御覧ください.
https://github.com/ejurgensen/forked-daapd/issues/785一応かんたんに説明すると,forked-daapd v27.0以降では":"だけでなく"@"も返せるようにして対応したようです.ソースコードを見ていただいても良いのですが,saxonww氏のpatchがそのままソースコードにも反映されていますので紹介します.
https://gist.github.com/saxonww/3a2163bb0fbffcb12d4bb249cf79b8ac導入してみる
すでにエラーログなどを載せている時点でおわかりの方もいらっしゃるように,今回はRaspberry Piを利用してDAAPサーバを立てました.用意したものは次のとおりです.
・Raspberry Pi2 model B+ with Raspbian buster lite
・NAS(DS-215j)
・Mac mini 2018 (i7 customized)(ラズパイにsshするのに利用した.)(CPU関係ない)(イキらせて)構成したい環境
かんたんな図で申し訳ないですが,ラズパイでNASの音源がある場所をcifsでマウントします.そのマウントした場所をDAAPでクライアント(Mac)に音源を送るわけです.
NASをマウント
こちらの記事を参考にさせていただきました.感謝いたします.ですのでここでは簡単に紹介します.
https://qiita.com/nitbit/items/1ab1057b719be7ad0930$sudo apt update && sudo apt upgrade -y $sudo mkdir /mnt/nas $sudo chmod 777 /mnt/nas $sudo apt install vim -y $sudo cp /etc/fstab /etc/fstab.bak $sudo vim /etc/fstab/etc/fstab//NAS.local/music /mnt/nas/ cifs username=user,password=pass,file_mode=0444,iocharset=utf8,defaults 0 0 0マウント確認
私はDNSでサーバアドレスを指定していますが,ちゃんと動作したので,DHCPとかでIPアドレスが変わっても大丈夫です(多分).
IPアドレスで指定したい場合はそれでも良いと思います.$sudo mount -a $df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 14947920 2556756 11752044 18% / devtmpfs 217076 0 217076 0% /dev tmpfs 221408 0 221408 0% /dev/shm tmpfs 221408 3120 218288 2% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 221408 0 221408 0% /sys/fs/cgroup /dev/mmcblk0p1 258095 54366 203729 22% /boot //NAS.local/music 1918102616 542255520 1375847096 29% /mnt/nas tmpfs 44280 0 44280 0% /run/user/1000一応再起動
$ reboot
forked-daapdの導入
必須パッケージのインストール
めっちゃあります.
$ sudo apt update && sudo apt upgrade -y $ sudo apt install -y build-essential git autotools-dev autoconf automake libtool gettext gawk gperf antlr3 libantlr3c-dev libconfuse-dev libunistring-dev libsqlite3-dev libavcodec-dev libavformat-dev libavfilter-dev libswscale-dev libavutil-dev libasound2-dev libmxml-dev libgcrypt20-dev libavahi-client-dev zlib1g-dev libevent-dev libplist-dev libsodium-dev libjson-c-dev libwebsockets-devforked-daapdを拾ってきて入れる
Githubから拾ってきて展開,コンパイルなどしてインストールします.丁寧なことにサービス化ファイルも同梱されていたのでありがたくコピーしましょう.
$ git clone https://github.com/ejurgensen/forked-daapd $ cd forked-daapd $ autoreconf -i $ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var $ make $ sudo make install $ sudo cp forked-daapd.service /etc/systemd/system/設定ファイル編集
音源データの保存先を編集します.マウント済みの/mnt/nasにしました.環境に合わせて変更して下さい.
ちなみに先の節でちゃっかりvim入れてます.vimで私は編集しました.(入れちゃった貴方!vim使ってみませんか?)/etc/forked-daapd.conf# Directories to index directories = { "/mnt/nas" }サービス起動,確認
$ sudo systemctl enable forked-daapd $ sudo systemctl start forked-daapd $ sudo systemctl status forked-daapd一応再起動
$ reboot
動作確認
うまく動作すると,”マイライブラリ\/”をクリックするとラズパイのDAAPサーバが見えますね.
しかし,このときおそらくまだ曲のリストを更新できていないのでしばらく待ってみましょう.一応,現在の更新状況は次のようにして見ることができます.
私の場合はラズパイ2ということもありますが,2000曲くらいあったので20分くらいかかりました.$ sudo systemctl status forked-daapd.service ● forked-daapd.service - DAAP/DACP (iTunes), RSP and MPD server, supports AirPlay and Remote Loaded: loaded (/etc/systemd/system/forked-daapd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-02-24 15:55:23 GMT; 3min 1s ago Docs: man:forked-daapd(8) Main PID: 905 (forked-daapd) Memory: 254.8M (max: 256.0M swap max: 32.0M) CGroup: /system.slice/forked-daapd.service └─905 /usr/sbin/forked-daapd -f Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] main: - Websockets Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] main: - ALSA Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] main: - Webinterface Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] main: mDNS init Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] mdns: Avahi state change: Client running Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] db: Configured to use database file '/usr/local/var/cache/forked-daapd/songs3.db' Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] db: Now vacuuming database, this may take some time... Feb 24 15:55:26 raspberrypi forked-daapd[905]: [ LOG] db: Database OK with 0 active files and 6 active playlists Feb 24 15:56:14 raspberrypi forked-daapd[905]: [ LOG] scan: Scanned 200 files... Feb 24 15:56:56 raspberrypi forked-daapd[905]: [ LOG] scan: Scanned 400 files...更新が終わると,次のようになります.
Feb 24 16:06:52 raspberrypi forked-daapd[905]: [ LOG] scan: Bulk library scan completed in 686 sec Feb 24 16:06:54 raspberrypi forked-daapd[905]: [ LOG] lib: Library init scan completed in 688 sec (2305 changes) Feb 24 16:07:04 raspberrypi forked-daapd[905]: [ LOG] cache: Beginning DAAP cache update Feb 24 16:07:04 raspberrypi forked-daapd[905]: [ LOG] cache: DAAP cache updated Feb 24 16:08:45 raspberrypi forked-daapd[905]: [ LOG] cache: Beginning DAAP cache update Feb 24 16:08:51 raspberrypi forked-daapd[905]: [ LOG] cache: DAAP cache updated動作しました〜〜〜〜〜〜〜〜〜〜〜〜〜!!!!!!!
アルバムアートも出てる!(生成に時間がかかりました)(待ってれば勝手にやってくれるので大丈夫です)結論
ラズパイ2B+は100BASE-TXなのでハイレゾ音源(96kHz/24bit)だとキツイかな…と思ってたんですが,ちゃんと安定して止まらずに再生できて正直びっくりしました.
追記(2020-02-25) :ラズパイにWi-Fiドングルくっつけて2.4GHz帯(11n)接続にしてみても安定してハイレゾ音源(96kHz/24bit)とかも再生してくれました.つまり,家の(電源がある)任意の場所にこいつを置けばNASの音源をDAAPで共有してくれます.
これはエモ〜い!wwwあとさぁ…Appleさんさぁ…もうちょっとユーザフレンドリーにしてくださいよ…
え?ラズパイ噛ませた時点で根本的解決じゃないって?転がってたんだから仕方ないじゃん(遠い目)