Swift Playgrounds 入門コンテンツの解説サイト作りました

少し前からサイドバーで紹介してますが、Apple がリリースしているiPad向けプログラミング学習アプリ「Swift Playgrounds」の攻略サイトというか、コード例と解説を掲載したサイトを作りました

Swift Playgroundsはアプリ内で教材コンテンツを追加ダウンロードする仕組みになっていますが、その入門コンテンツである「コードを学ぼう」の1と2の全ステージを本日ようやく網羅しましたので改めてご紹介。

プログラムに唯一絶対の正解はないので、単なる攻略サイトみたいなものを作るのは野暮かと思いましたが、それでも「プログラミングを勉強したいけど、身近に聞ける人がいなくて先へ進めず諦めてしまった」なんて不幸が回避できるならと思い、コードはあくまで正解“例”であることを強調しつつ、アプリ内の出題でカバーしきれてない部分の解説を丁寧にするよう心がけました。さっそく親子で参考にしていただいたというコメントもいただきやってよかったなと。

しかしやっと1,2が終わったとほぼ同時にPlaygrounds自体がアップデートされ「コードを学ぼう」も3がリリースされてしまいました。個々の解説を丁寧に書きすぎて結構時間がかかってしまったので、ちょっと今すぐ続きに着手できるかはビミョウな気持ちです(^^;)。まぁ、ざっとみた感じ3は基本を離れてよりクリエイティブな内容に寄っている印象なので、このサイトの役割としては少し範囲外かなという気もしています。Swiftの基本文法やループ、条件分岐、変数、配列といったプログラミング言語に共通の概念については「コードを学ぼう」1と2で一通り触れており、そのフォローという意味で一区切りかなぁと。まぁ1,2の反響や要望をみてまた考えます。

英語版が公開された時にいくつかのITサイトの連載やブログで紹介されたものはありますが、3月に日本語化されてから本格的に全ステージを網羅したものはたぶんまだなかったと思うので、まだ不完全ながらも、これからPlaygroundsにチャレンジしてみようと思う人の助けになればなと思います。

iPad Proを2017年版に買い換え

AppleのWWDC 2017直後のストア爆寸解除と同時に予約して購入しました。

iPad Proの12.9インチ+Apple PencilはUT仕事のノート取りに重宝しまくっていますが、ProMotionでさらに手書きの質が上がるならば惜しくはないなと。ProMotionは液晶のレンダリング頻度が60Hzから120Hzと倍増する技術のことで、スクロールなどが滑らかになると言われています。またもともと240Hzで座標をスキャンしているApple Pencilも、描画更新頻度が上がることで、見かけ上の遅延が40msから20msと短縮されます。これでより自然な書き味になるという期待です。

σ(^^)はタブレットやスマホを買う際に、「動画をよく観る端末は黒ベゼル、電子書籍をよく読む端末は白ベゼル」というポリシーを持っています。iPad Proは大画面な上に横向きにしてもステレオスピーカーであることが動画に向いているかと思い、初代は黒ベゼルのスペースグレーをチョイスしましたが、1年間使ってみてあまり動画を観る機会はなく、どちらかといえば電子書籍とノート用途が主だったので今回は白ベゼルのシルバーに。なにげにiOS機器で白ベゼル機種を買うのは十数台で初めてだったりします。

Apple Pencilはアップデートなしなのでそのまま流用。リアのシェルカバーもそのつもりだったんですが、カメラ周りのレイアウト(LEDライト追加)が違っていて互換性がないというので発売日前日に慌てて注文。今回もELECOMのクリアタイプです。後述のSmart Keyboardについてなぜか2017モデル用には対応がなくSmart Coverについてしか記載がなく不安でしたが、結果は余裕でした(2015年モデル用はちゃんとSmart Keyboard/Coverとも対応が明記されています)。

液晶フィルムは共用っぽいですが、一応ELECOMからは2017年モデル対応版が出ています。Apple Pencilでの書き味を重視して今回もペーパーライクをチョイス。

でもまだ貼ってません。iPad mini4やPro 9.7’で定評あるフルラミネーションディスプレイが綺麗で、視認性が落ちるペーパーライクフィルムを貼るのが惜しい、、やはりガラス面を直接Apple Pencilで書き殴るとカツカツ音/感が気にはなりますが、とりあえず次のUT仕事まではフィルム無しでこの綺麗さを味わっておこうかなと(キズはあんまり心配してません)。

噂では付属充電器が急速充電できるUSB-Cタイプ(MacBook 12’付属の29Wのもの)にかわるという話もあったんですが、開けてみると従来通りのUSB A 5Vタイプのものでした。iPad Pro 12.7’はバッテリー容量も大きくフル充電には時間がかかるので、やはりUSB-C充電器を使っておきたいところ。Ankerの充電器やASUSのモバイルバッテリーも揃えているのですが、惜しむ楽はUSB-C – Lightningケーブルが純正しか存在せず、値段はともかく1mタイプしかないというところでしょうか。携帯用にもっと短いものが欲しいものです。

(AmazonではApple純正品を謳う商品でも偽物が届くリスクが高いので、商品リンクは掲載しません)

ファーストインプレ

正直ProMotionによるヌルヌルスクロールはさほど感動しませんでした。ただTrueToneのおかげか、液晶フィルムを貼ってないフルラミネーションディスプレイのフル性能のおかげか、電子書籍アプリでの紙感は素晴らしいものがあります。また、60Hzが倍速になるだけでなく可変フレームレートになることで、24Hzの動画が24Hzのまま表示できることにより滑らかさも、そもそも動画アプリ側の対応が必要なのかどうかもわかりませんが、「まぁそういわれれば滑らかかな?」という位。24Hzを60Hzにする時は、整数倍できないのでどうしてもガタつくという弱点が理論上はあるわけですが。

またApple Pencilについても個人的にはあまり期待した進歩は感じられませんでした。もともと文字を最速で書き殴る用途が中心なので、遅延がないことよりも筆跡が忠実に再現されることに関心があったんですが、それについては表示のレンダリング頻度が上がること自体はあまり寄与しなかったようです。

とまぁ、世の中で感激の嵐が吹き荒れる中、個人的には期待したほどの感動はない感じなんですが、動きがサクサクしたのは間違いないし、容量も32GBから64GBになったし、白ベゼルになったりと、返品して旧モデルを使い続けるセンはないかな、と。追々iOS11や最適化アプリが出そろって来た時に進化が発揮されることでしょう。

PHILIPSのシェーバーのライフサイクルの長さ

2017年6月現在、PHILIPSはソリかえ割という下取りキャンペーンをしています(同年7月31日まで)。

現行製品の7000シリーズと9000シリーズなら1万円のキャッシュバックが受けられます。9000シリーズの上位モデルで4万円くらいするので、これはかなり大きいです。

σ(^^)は2011年モデルのRQ1260を使ってて、大きな不満はないですが、PHILIPSのシェーバー自体は非常に満足しているし、この機会に最新モデルに買い換えるのもいいかなと検討しました。当時、洗浄機が付属するモデルはクリーニング液のランニングコストと置き場所を考えて敬遠し、本体は最上位で洗浄機が付属しないモデルにした気がしますが、あらためて調べるとクリーニング液は3ヵ月で1,000円程度だし、今なら置き場所が確保できなくもなさそうなので、S9551/26に狙いを定めました。最上位のS9731についてくるヒゲトリマーはいらないので、S9551を買って洗顔ブラシだけ単品で買った方が安くあがる計算です。

しかしここでふと気付いてしまいました。なんと2011年モデルのRQ1260用として売られている替え刃、というかヘッド部分丸ごとのパーツが、現行9000シリーズと同等品らしいのです。ヘッド丸ごと交換することで、切れ味が復活するばかりか、5方向から8方向の「輪郭検知」機能付きにアップグレードされてしまうわけです(逆にRQ12xxシリーズ標準のヘッドはもう廃盤ぽい)。

太っ腹ですね。電動歯ブラシとかではよくあることですが、まさかシェーバーでもそんなことがあるとは。旧モデル用の替え刃を並行して生産しつづけるより安上がりということでしょうか。洗浄機による自動洗浄には未練がありましたが、今月は物入りだったことも考え、節約してヘッド交換で切れ味だけを最新版にアップグレードすることにしました。あと洗顔ブラシユニットも使えそうなので注文。

左が9000シリーズ相当の新しいヘッド、右がRQ1260標準品です。新ヘッドには刃を取り外すのに別途治具が付属しています。旧ヘッドは中心から放射状の軸方向に角度が変化し、ヘッド自体の自由度を合わせて5方向に動くのが特徴でした。新型はさらに外刃にあたる丸部分が円周方向に角度がかわるので、それが3ブロックで+3して8方向を謳っています。

旧ヘッドは3つのブロックがそれぞれ外側に開き、金属の押さえリングをパカっと倒すと中の回転刃が取り出せました。新ヘッドでは3ブロック1まとまりでバカっと分離し、専用治具を使ってオレンジの押さえリングを完全に取り外して中の回転刃を取り出します。つまり、治具をもリングも無くさない様気を遣います。またレビューをみるとこのオレンジのリングが破損しやすいようで気を遣います。あと水道水でじゃばっと洗った後も、旧タイプならそのままスタンドに立てておけばよかったですが、新ヘッドでは別途外れた方を置く場所が必要になりますね。洗浄ユニットを使うなら気にしなくて良いんですが。

という感じで、取扱いについてはやや後退した気がします。コスト削減でしょうか。いずれにせよ旧ヘッドはもう手に入らないので選択肢はないわけですが。

肝心の剃り味については、もともとPHILIPSはしばらく使って刃の研磨が進んでからが実力と言われているので、まだなんともです。確かにアゴなどの先端部分にあてた時に、新ヘッドの方が密着度が高いなぁという気はします。

 

シャツのちょっとしたシワ取りに VIVREAL衣類スチーマー

このハンディスチーマーがAmazonで高評価だったので買ってみました。安い綿シャツが洗濯してしわっしわの時、さっと最低限のしわとりができればいいなと。アイロン用意するの面倒だしそんな場所もないし。

パナソニック 衣類スチーマー ダークブルー NI-FS530-DA

パナソニック 衣類スチーマー ダークブルー NI-FS530-DA

7,900円(11/12 02:30時点)
Amazonの情報を掲載しています

当初、Panasonicのちゃんとしたのにしようかとも思ったんですが、値段がかなり違うし、割とすぐに使わなくなるリスクも勘案して。大きく違うのは、Panasonicのはプレスするためのパーツがついたアイロンであるのに対し、VIVREALのものはスチームが吹き出すのをあてる感じ。生地は別途自分で引っ張って伸ばす必要があります。ので、ハンガーで壁にかけつつ、本機を置いたり持ったりできる置き場所が確保できるとベストですね。仕組みは小さい電気ケトルのフタに穴が空いてる、と言う趣なので、方向けすぎると水(熱湯)がこぼれます。写真右のポケットのあたりはそれでぶちまけました(笑)。またスチームをあてた直後は布とはいえ結構熱いのでスチームをどれだけあてて、何秒まって伸ばすか、みたいなところで慣れやコツが必要ですかね。合わせのボタンがない側のとこなんかは、ピシっと引っ張った状態で上からスゥーっとあててくと面白いようにしわが取れていきます。逆に襟のところはあんまりうまく仕上がりませんでした。
てことで使用前、使用後です。完璧ではないですがまぁ急いでる時にとりあえず格好付くくらいにはなるかなと。

Panaのと比べて仕上がりの差は気になりますが、まぁそんななにマメに毎回使うわけでもないので、コストパフォーマンスで考えたらこっちで良かったかなと。

macOSで特定ドメインのDNS問い合わせサーバーを固定する

先日、自宅のネットワークにWiMAX2+ルーターを追加して、時間帯や端末毎にゲートウェイを振り分けて使い分ける体制を構築したのですが、ひとつ困ったことが置きました。LAN内からLAN内のサーバーへのアクセスです。YAMAHAルーター(以下RTX)はいわゆるヘアピンNATには対応してないのですが、特定のホスト名に対して固定のIPアドレスを返す簡易DNSサーバー機能があるので、LAN内からRTXにDNS問い合わせした時はプライベートIPアドレスが返るようにすることでLAN内からも同じホスト名でサーバーにアクセスできていました。

ところが先の記事の体制にしたことで、IPv6でのDNSサーバーがDHCPv6かRA経由で振ってくるようになってしまい、macOSの仕様上そちらが優先されてしまうぽいのです。つまり、Macから自宅サーバーのホスト名を調べるとIPv4についてもプライベートIPではなくグローバルIPがWiMAX2+経由で返ってきてしまい、結果としてRTX(光回線)経由だとLAN内サーバーが見えなくなってしまいます。

回避手段として簡単なのはDNSサーバーを固定しまうことですが、外に持ち出すノートPCだとそれはそれでトラブルになってしまいます(あるいは逐一ネットワークプロファイルを切り替えなければならなくなる)。

そこで見つけた方法は、/etc/resolver/フォルダにドメイン毎のDNS設定を追加する方法です。自ドメインに関する問い合わせだけは、強制的にRTXのIPアドレスをDNSサーバーに使うようにします。またそれだけだと外出先で問題になるので、短めのタイムアウトを指定しておき、外出先でローカルIPアドレスによるDNSサーバーから返事がもらえなければあきらめてDHCP由来のDNSサーバーを使う、という感じにするわけです。

方法は、/etc/resolver/フォルダに、振り分けたいドメイン名(例えばhoge.com)をファイル名としたテキストファイルを作り、以下のような内容を書いておきます。

nameserver 192.168.0.1
options timeout:1

1行目は文字通り指定したいDNSサーバー。2行目はタイムアウトまでの秒数。これだけです。再起動なども必要なく反映されるぽいです。

scutil –dns

とすると、現在のDNS設定が出てくるので、

resolver #9
domain   : hoge.com
nameserver[0] : 192.168.0.1
options  : timeout:1
flags    : Request A records, Request AAAA records
reach    : Reachable, Directly Reachable Address

などという表示が見つかればOKです。*.hoge.comに関するDNS問い合わせは192.168.0.1を使う、ただし1秒で応答がなければ諦めてシステムデフォルトのDNSサーバーを利用、という形になります。