秘密の本棚

気になることをなんでも書きます

MacBook Pro をイイ感じにセットアップ 〜アクセサリ編〜

経緯

MacBookが欲しくなってしまってMacBook Pro 13'をAppleから注文、開封しセットアップしたもののアクセサリ類が届いていないためソフトウェアで完結するカスタマイズを行いました。
nexusuica.hatenablog.jp
今回は購入したアクセサリ類を紹介していきます。とはいってもどれも基本的なものばかりですが。

充電器

最近のMacBookは以前のMagSafeコネクタではなくUSB-Cコネクタを採用しているので、USB Power Deliveryに対応した充電器を購入することで充電が行なえます。MacBook Pro 13'に付属してくる充電器は60Wで高出力なのですが大型でかさばるため、出力はやや小さめでもコンパクトな充電器を購入しました。

YOJOCKという聞いたこともないメーカーのものなので若干不安でしたが、普通に使えました。Power Deliveryの出力は45Wなので付属のものよりやや小さいですが、充電がそれほど遅いというわけでもなくストレスフリーです。また、USB-Aの高速充電ポートも搭載しています。なにより一回りコンパクトなのが嬉しいのです。
f:id:nexusuica:20180907142818j:plainf:id:nexusuica:20180907142820j:plain
付属のアダプタとサイズ比較。この一回りの差が大きい

ケーブル

上の充電器と組み合わせて使うUSB-Cのケーブルを購入しました。

AmazonにUSB-Cのケーブルは山ほどありますが、MacBookを充電するためにはPower Deliveryに対応したケーブルでないと発熱などを起こし大変危険です。上の製品はちゃんと仕様上Power Deliveryに対応しており、実際に上の充電器と組み合わせてみても正常に充電できました。

ケース

MacBookを裸で持ち歩くのはさすがに怖いのでケースを買いました。ハードケースかスリーブか迷いましたが、使うときはそのまま使おうかということでスリーブにしました。

グレーの色はMacBookの相性がよく、質感も悪くない感じでした。ただ想定外だったのが、このスリーブに入れると厚さが3~4倍になり、かなりかさばってしまうという点。守ってくれるという意味では良いのですが、もう少しコンパクトにならないものかと思いました。
f:id:nexusuica:20180907142913j:plain
やや厚くなってしまうのが難点
一方でケースに付属してくるポーチは結構いい感じで、充電器やケーブルを収納するのにちょうどよいサイズ感でした。
f:id:nexusuica:20180907142911j:plain
ポーチはいい感じ

アダプタ

MacBookで避けて通れないのがアダプタ生活。端子がUSB-C(とイヤホンジャック)しかないので従来の端子・ポート類はほとんど使えません。

このようなハブを使うのも一手ですが、僕はHDMIやイーサーネット端子はほとんど使わないので、単純なUSB-AとUSB-Cのアダプタを購入しました。当然ですが非常にコンパクトで、今のところ正常に動作しているので満足です。

システムのカスタマイズもアクセサリも揃ったので、やっとマッカーデビューできそうです。

メルボルンから行くエアーズロック③:メルボルンを一日まるっと観光

前の記事:メルボルンから行くエアーズロック②:エアーズロックに登頂!

メルボルン市街を一日観光

エアーズロックからジェットスターメルボルンに戻りましたが、せっかくなのですぐには帰国せずに一泊したのちに一日メルボルンを観光し、その後帰国することにしました。

宿泊したのはメルボルンの中心の駅Southern Crossからほど近くにあるユースホステルです。海外のドミトリーに泊まったことがあれば、違和感なく泊まれます。

今回はこの日に回ったところのうち、特に興味深かった場所に絞ってご紹介します。なお、メルボルン市街にはトラムが走っており、ある一定のエリア内であれば完全無料で利用することができます。市街地中心部の観光地ならこれで回れるので、有効に活用するとよいです。

f:id:nexusuica:20180907132124j:plain

路線によって様々な車種のトラムが走っている

ビクトリア州立図書館

この図書館は1856年に開館したオーストラリア最古の図書館で、現在も多くの地元の人達に利用されています。蔵書数は約200万で、建物自体は古くても中はどんどんアップデートされています。内装も新しく綺麗でした。

f:id:nexusuica:20180907132317j:plain

近代的で開放的な閲覧室

図書館には閲覧室がいくつかあり、どの閲覧室でもインターネット環境と各席に電源が用意されていて作業にももってこいです。

一番特徴的なのがThe La Trobe Reading Roomで、放射状に閲覧席が並んでいます。ドーム状の屋根から太陽光が取り込まれ、全体的に明るく開放的でした。こんな図書館が地元にもあったらいいですね。

f:id:nexusuica:20180907132210j:plain

放射状に閲覧席が並ぶLa Trobe
f:id:nexusuica:20180907132312j:plain
f:id:nexusuica:20180907132543j:plain
電源も完備の閲覧席。チェスに興じる子供もいた

クイーン・ビクトリア・マーケット

メルボルン最大の市場で、生鮮食品から土産物まで幅広いものが手に入ります。広大な敷地は野菜・果物エリア、肉・魚エリア、加工食品エリア、服飾・雑貨エリアというふうに分かれています。山積みの果物の間を通って進んでいくのはなかなか迫力がありました。

f:id:nexusuica:20180907132449j:plain

新鮮な生鮮食品が並ぶ

雑貨エリアにはオーストラリアの小さな土産物をはじめ、なぜか蛍光色の安全着も売っていたりとかなり雑多でした。ここを適当にぶらつくだけでも面白いです。

f:id:nexusuica:20180907132843j:plain
f:id:nexusuica:20180907132659j:plain
なぜか売っている安全着。屋根の間から高層ビル群が見えた

加工食品エリアではその場で食べられるバーガーやサンドイッチ、ジュースなどを売っているお店があり、僕はミネストローネのスープを注文してみました。風が冷たかったので温まりました。

f:id:nexusuica:20180907132500j:plain

アツアツのミネストローネ。カップ並々まで入れてくれるので持つのが熱すぎる

なお、クイーン・ビクトリア・マーケットではほとんどカードが使えないので、現金を多めに用意していったほうが買い物を楽しめます。

ブライトン・ビーチ

メルボルン中心部から郊外電車に乗って南下します。郊外電車に乗るためには「myki」というカードを購入してチャージしておく必要があります。日本のSuicaと同じですね。Southern Cross駅の改札前にあるKioskで購入して乗り込みます。Richmond駅でSandringham行きの電車に乗り換え、合計30分ほど乗車してBrighton Beach駅で下車、海岸沿いを歩いていきます。

f:id:nexusuica:20180907133143j:plain
f:id:nexusuica:20180907133057j:plain
mykiを購入して電車でGO!

10分ほど北に歩くと、カラフルな木造の小屋が並んでいるのが見えてきます。これがBrighton Beachで、この小屋はBrighton Bathing Boxesと呼ばれています。

f:id:nexusuica:20180907133235j:plain

カラフルな小屋が並んでいるのはなかなか見られない光景

この小屋はもともと女性が水着に着替えるときの更衣室として100年以上前に建てられたものですが、今やその用途には使われず、現在は地元の人達に分譲されて釣具や海のグッズを保管するために使われているそうです。

さまざまな模様の小屋があってどれも個性的。多くの観光客がインスタ映えな写真を撮っていました。

f:id:nexusuica:20180907133232j:plain

友人同士で撮りあったり自撮りしていたりする人が目立つ

セント・キルダ

ブライトン・ビーチから電車で少し戻り、トラムに乗り換えて到着するのがセント・キルダ。根本から先までは歩いて10分はかかる大きな桟橋です。途中にはカフェとレストランがあって小腹を空かせたときには寄ることができます。

f:id:nexusuica:20180907133409j:plain

桟橋の先までは意外と長い道のり

このセント・キルダ、実はペンギンが見られる場所として有名です。メルボルンでペンギンと言えば、中心部からバスで一時間弱行ったところにあるフィリップ島のペンギン観察施設のペンギン・パレードがまず出てきますが、中心部にほど近いこのセント・キルダでもペンギンに会うことができます。

桟橋が曲線を描いているところの内側は大きな岩が並んでいて、その隙間にペンギンの巣があります。桟橋から少し下りてその隙間を頑張って探してみると、毛づくろいをしているペンギンがいました。結構鋭い目をしていました。

f:id:nexusuica:20180907133507j:plain

円弧状になっている部分の内側が石垣のようになっている

f:id:nexusuica:20180907133609j:plain

いた!!

ペンギンは日没近くの夕方になると巣に戻ってくるので、会える可能性が高いそうです。ペンギン目当ての場合はこの時間帯を狙うのがよいでしょう。

Eureka Skydeck 88

メルボルン中心部、川の対岸にあるユーレカ・タワーの最上階88階にある展望台で、メルボルン市街地を一望できます。展望台の高さは297mで、南半球で一番の高さだそうです。

今回訪れたのは日没後だんだん夜に移り変わる時間帯。空の色の移り変わりと市街の夜景が見事でした。展望台の足元には歴史あるFlinders Street駅があり、ひっきりなしに郊外電車が発着しているのを見ることができました。鉄道模型を見ているようでこれは飽きませんでした。

f:id:nexusuica:20180907133654j:plain

夕方から夜の時間帯がオススメとどこを見ても書いてある

f:id:nexusuica:20180907133651j:plain

Flinders Street駅は大忙し

ちなみに、展望台には「エッジ」という体験メニューがあり、この展望台から外にせり出した、ガラス張りのキューブに入るという高所恐怖症お断りのプログラムです。これになぜか追加料金がかかるのですが、やっている人がいました。

ほか諸々

この他、項目に起こすほどではないものの様々なところを訪れました。残りは写真とそのキャプションで。

f:id:nexusuica:20180907133824j:plain

メルボルン・セントパトリック大聖堂。結構賑わっていた

f:id:nexusuica:20180907133944j:plain

ブロック・アーケード。メルボルン中心部にはこのようなアーケードが数多く存在する

f:id:nexusuica:20180907134234j:plain

細い路地には飲食店が立ち並ぶ

f:id:nexusuica:20180907134629j:plain

ウォーターフロントシティ。観覧車以外特に何もなく寂れていたがぼーっとするには良い場所

f:id:nexusuica:20180907134623j:plain

トラムのある町並み。基本的にトラムの軌道には乗用車は入れない
f:id:nexusuica:20180907134415j:plain
f:id:nexusuica:20180907134357j:plain
ユースホステル近くのケバブ屋。これが結構美味なのだ

MacBook Pro をイイ感じにセットアップ 〜ソフトウェア編〜

経緯

これまで、主にTeXコンパイルするためにMacOSが必要な時があり、Mac miniをリモートで操作していたのですが、操作性の観点からMacBookがあると幸せになれるのではないかと思い、MacBook Proを入手することになりました。13 inchのTouch Barありモデルです。Touch Barの必要性はあまり感じていなかったのですが、第8世代CPUを搭載しているのはTouch Barありモデルのみのようでした。
さまざまなアクセサリ類を揃えなければならいのですがまだ荷物が届いていないので、今回は完全無料のソフトウェアで完結するMacのカスタマイズをご紹介します。

システムの見た目を変更する

セットアップが終了したら、まずはシステムの設定で完結するカスタマイズを行いました。まずは「システム環境設定」→「一般」の中にあるオプションを変更します。
アピアランス」を「グラファイト」に、「メニューバーとDockを暗くする」のチェックを入れ、「強調表示色」を「グラファイト」に設定すると、システム全体の彩度が下がってモノクロ感が出ます。前からMacのカラフルな感じがうるさいと思っていたので、これでスペースグレイの本体ともよく合うようになったと思います。

f:id:nexusuica:20180906134505p:plain
「システム環境設定」→「一般」
f:id:nexusuica:20180906121909p:plainf:id:nexusuica:20180906121907p:plain
設定前と設定後。彩度が下がって目に優しい

色温度を自動調節する機能「Night Shift」を有効化

最新のMacOSには夜間に目の負担を軽減するために色温度を調節する「Night Shift」という機能がありますが、デフォルトではオフになっています。これは「システム環境設定」→「ディスプレイ」→「Night Shift」で有効化できます。「日の出から日の入りまで」としておけば季節によって時刻を変動させながら夜間にNight Shiftをオンにしてくれます。
このNight Shiftですが、スクリーンショットを撮るとNight Shift適用前の画面がキャプチャされるので適用前後の比較を載せることができませんでした。

Touch Barをカスタマイズ

MacBook ProApple的目玉はTouch Barで、アプリケーションによって異なるショートカットを表示させることで作業の効率化を図ります。ただ、作業をしていてウィンドウを切り替えるごとにTouch Barの表示が変わって目にうるさいので、ショートカットを固定して表示しておくことにしました。
「システム環境設定」→「キーボード」内の「Touch Barに表示する項目」を「Control Strip(展開した状態)」に設定しておくと自分の好きなショートカットを固定して表示することができます。

f:id:nexusuica:20180906124403p:plain
「システム環境設定」→「キーボード」
さらに下部の「Control Stripをカスタマイズ…」をクリックするとTouch Barに表示する項目を選択することができます。
f:id:nexusuica:20180906124358p:plain
Control Stripのカスタマイズ画面
僕はよく使うスクリーンショット」「輝度調整」「Night Shift」「音量」「消音」「ロック」を登録しておきました。Touch IDの読み取り部の隣にロックを配置しておくとワンタッチでロックとアンロックができて非常に直感的です。
f:id:nexusuica:20180906124355p:plain
とりあえずこんな感じにしてみた

トラックパッドの使い心地をWindows風に

MacBookの特長の一つに精度の良いトラックパッドがありますが、Windowsユーザーの僕からすると若干操作性が違うので、設定を変更しました。

タップでクリック

トラックパッドを「トン」とタップするだけでクリックの判定がなされるように変更します。「システム環境設定」→「トラックパッド」内でチェックボックスを入れるだけです。デフォルトでこれがオフになっている理由がわかりません。

f:id:nexusuica:20180906124406p:plain
「システム環境設定」→「トラックパッド

ダブルタップでドラッグ

Windowsではウィンドウをダブルタップすれば選択状態になって自由に動かせる状態になるのですが、Macではそのようになっていません。僕はこの操作を非常によく使うので最初非常に戸惑いましたが、設定から変更ができました。「システム環境設定」→「アクセシビリティ」→「マウスとトラックパッド」→「トラックパッドオプション…」と進み、「ドラッグを有効にする」にチェックを入れます。これでダブルタップすれば項目のドラッグができるようになります。

f:id:nexusuica:20180906124409p:plain
「システム環境設定」→「アクセシビリティ」→「マウスとトラックパッド」→「トラックパッドオプション」

メニューバーのいらないアイコンを隠す

Macにさまざまなアプリケーションをインストールすると、常駐アプリのアイコンがたまってきて目に毒です。いらないアイコンを消すために、「Vanilla」というアプリをインストールします。
matthewpalmer.net
無料で利用でき、必要に応じてクリックすれば隠したアイコンを表示することが可能です。
有料でより高機能な「Bartendar」というアプリもありますが、個人的にはVanillaで十分です。
www.macbartender.com

壁紙を自動変更

以前の記事でも紹介した、壁紙を自動変更してくれる「FreshBackMac」を入れました。更新頻度を一日ごとに設定しておきました。
nexusuica.hatenablog.jp
arkanath.com

ウィンドウをスナップする

Windowsには標準でウィンドウをスナップする機能がありよく使うのですが、Macのウィンドウ分割機能は自由度が低くいまいちです。そこで、キーボードショートカットでウィンドウを一発で寄せてくれる「ShiftIt」をインストールしました。
github.com
オープンソースで完全無料で利用でき、自分の好きなショートカットを登録しておくことができます。動画を見ながら作業したりするときなどに重宝します。
有料ソフトでは「BetterTouchTool」が機能豊富で人気だそうです。トラックパッドの非常に細かい設定もできるようです。
https://folivora.ai/

Spotlight検索を半角に固定する

MacOSの超便利機能としてSpotlightがあります。Cmd+Spaceを押すとテキスト入力画面が出てきて、入力することでアプリケーションの起動やWeb検索を行えます(同様の機能はWindowsではスタートボタンを押せばできますね)。この入力画面で入力ソースが全角になっていると「Chrome」と打ったつもりでも「chろめ」になってしまったりして何かと面倒です。そこで、Spotlight検索を起動したときに自動的に入力ソースを半角にするように設定します。これは「Karabiner」というソフトで実現できます。
Karabiner - Software for macOS
下の記事を参考に設定するとできるようになります。
log.brdr.jp
ちなみに、これを設定するとSpotlightを起動すると常に半角英数になってしまうので、元のアプリケーションに戻ったら入力ソースが復元されるように、「システム環境設定」→「キーボード」→「入力ソース」で「書類ごとに入力ソースを自動的に切り替える」にチェックを入れておくと良いです。

AtCoder Beginner Contest 108

AtCoder Beginner Contest 108 - AtCoder

A - Pair

問題

A - Pair

考察

1以上K以下の偶数と奇数の選び方の個数を求める。偶数の個数はK/2で、奇数の個数は(K+1)/2で求まるので、その積を返す。

コード

int main(){
  ll k;
  cin >> k;
  ll even = k/2;
  ll odd = (k+1)/2;
  cout << even*odd << endl;
  return 0;
}

B - Ruined Square

考察

xy平面上の2点P_1,P_2の座標が与えられ、反時計回りに正方形を構成するように残り2つの頂点を定めるときの頂点の座標を求める。
\vec{P_1P_2}に着目し、残りの頂点の座標はこのベクトルを反時計回りに90°回転させて足していけば求まる。

コード

typedef pair<ll, ll> P;

P rotate(P s, P t){
  P p;
  p.first = s.second-t.second+t.first;
  p.second = t.second-s.first+t.first;
  return p;
}

int main(){
  P p1, p2, p3, p4;
  cin >> p1.first >> p1.second >> p2.first >> p2.second;
  p3 = rotate(p1,p2);
  p4 = rotate(p2,p3);
  cout << p3.first << " " << p3.second << " " << p4.first << " " << p4.second << endl;
  return 0;
}

C - Triangular Relationship

考察

1以上N以下の整数a,b,cに関して、a+b,b+c,c+aがすべてKの倍数となるようなa,b,cの組み合わせの個数を求める。
aを固定すると、b,cが満たすべき条件は「b,cはともにKで割って(K-a)\%K余り、かつb+cKで割り切れる」となる。結局、これは2\times(K-a)Kで割り切れるという条件のもとで、b,c1以上N以下の、Kで割って(K-a)\%K余る整数の中から選ぶと考えることができる。aKの倍数であるかどうかで場合分けして求めればよい。a-Kは負になることがあるので、剰余の計算をするときは十分大きいKの倍数を足しておかないと計算が違ってしまうので注意が必要。

コード

int main(){
  ll n,k;
  cin >> n >> k;
  ll ans = 0;
  for(ll a = 1; a<= n; a++){
    if(2*(k-a+n*k)%k!=0) continue;
    ll bc = (a%k==0) ? n/k : (n+(k-a+n*k)%k)/k;
    ans += bc*bc;
  }
  cout << ans << endl;
  return 0;
}

D - All Your Paths are Different Lengths

考察

整数Lに対し、20以下の自然数Nを定めて頂点1から頂点Nまでのパスの長さが0以上L-1以下のすべての整数をとるようなグラフを1つ求める。
まずLL=2^{x}とかける場合は簡単で、N=x+1としてi=1,2,\cdots,N-1について頂点iと頂点i+1の間に長さ2^{i-1}の辺と長さ0の辺を加えることで実現できる。
次にLがこの形で表せないとき、N=\log_2(L)+1として同じように辺を加えると2^{N-1}-1以下の長さのパスができるが、ここで「最大のパスの長さがL以上にならないようにパスを加えていく」ことを考える。
現時点で最大のパスの長さをmaxとおくと、max+1以上L-1以下のパスをつくるためには長さmax+1の辺を、この辺を通るすべてのパスの長さがL-1以下となるように頂点yと頂点Nの間に加えればよい。このyy=\log_2(L-max-1)+1と計算でき、この操作を行うことでmax2^{y-1}増加する。

コード

struct edge{ll from, to, weight;};

int main(){
  ll L;
  cin >> L;
  ll N = floor(log2(L))+1;
  vector<edge> E;
  for(ll i = 1; i <= N-1; i++){
    edge e;
    e.from = i, e.to = i+1, e.weight = 1<<(i-1);
    E.push_back(e);
    e.weight = 0;
    E.push_back(e);
  }
  ll max = (1<<(N-1)) - 1;
  while(max!=L-1){
    edge e;
    e.from = floor(log2(L-max-1))+1, e.to = N; e.weight = max+1;
    E.push_back(e);
    max += 1<<(e.from-1);
  }
  cout << N << " " << E.size() << endl;
  for(auto e: E){
    cout << e.from << " " << e.to << " " << e.weight << endl;
  }
  return 0;
}

雑感

今回は不参加で、後日解いてみましたがDはキツかったです。Nが20以下という制約も結構厳しいと思いました。最近2回はD問題が難しすぎます。