他人のWindows10からMacのパブリックに接続させる方法

 これ、何を今更、というネタに見えて、実は難解でした。
 ポイントはMac側のパブリックを誰に公開するかで、単にファイル交換目的で自分しか使わないのであれば、ネットやら本に載っている方法でいいんだけど、例えば教師用MacのパブリックをWindows10を使っている学生に公開する(まさしくバプリックな使い方)となると、途端に情報がなくなります。
 Macユーザーであれば、他のMacのパブリックフォルダーにはノーパスで簡単にアクセスできるのに、Windowsからはパスワード認証が必要であることが問題のポイントです。

 うちのコースは、入学とともに個人用MacBook Proを購入させますが、転コースや留学生など、どうしても手持ちのWindowsマシンしか用意できないという例も稀にあります。
 今年度がまさしくそれで、前例から多分5〜6年ぶり。 その間にMacもWindowsもOSが変化し、当時はなんとかなっていたMac-Win間のパブリックフォルダーを通してのデータのやりとりができなくなっていました。(Windowsがsmb1をデフォルトでオフにしたという話は関係なし)

 家に帰ってからEl Capitan(MacOS 10.11)のパブリックにWindows10から接続するテスト環境をセット。 結果、少し手こずりつつも解決策が見つかりました。

 ポイントはユーザー管理。
 ネットで一般的な情報では、システム環境設定の「共有」しか触れていませんが、ここの「オプション...」で出てくるユーザーは、同じシステム環境の「ユーザーとグループ」でコントロールされています。
 ですから、普通はここには管理者(多くの場合は自分)が表示され、そのパスワードはログインもできるレベルですから、そのまま他人に教えるわけにはいきません。(逆に自分だけが他のマイWindows10マシンからアクセスするならなんら問題はない)

 そこで「ユーザーとグループ」左下の+ボタンから、例えば「windowuser」(仮)という共有のみに権利を絞ったユーザーを作り、パスワードも「pass」みたいな簡単なものをセットします。 ログインはさせず、ローカルエリアだけのパブリック公開なのでこの程度のゆるさでも問題はありません。
Winpub1

 それから「共有」の「オプション...」を押すと、Windowsからアクセスを許可するユーザーのリストが出るので、windowuser左のチェックボックスをON。 するとパスワードの設定を迫られますので、ここに「ユーザーとグループ」で設定したパスワードを入力します。
Winpub2

Winpub6

 次にWindows10でエクスプローラーを立ち上げ、上部のフィールドに、¥¥192.168.1.1¥的なMac側のローカルIPアドレスを入力。(.localのホスト名でも可)
 するとユーザーとパスを聞いてくるので、先ほどMac側で設定した「windowsuser」の情報を入力。 これで上がりです。
Winpub3 Winpub4 Winpub5

 注意したいのは、ここでWin10上に現れるのはMac側の「共有」で管理者が恣意的に設定したフォルダーであって、「windowuser」のパブリックでない、ということ。 落ち着いて考えるとわかることながら、煮詰まっているときには意外とハマるややこしさかと。

| | コメント (0)

AppStoreで異なるバージョンのアプリを共存させる

 うん、Appleのアプリを開発してる人じゃないと全然意味が通らないタイトルだ。
 
 今回のAppleWatchアプリのアップデートは、Watchがシリーズ4となったことが発端でした。 一方で、最も古いWatchではこのシリーズ4用にアップデートしたバイナリは動きません。
 シリーズ1〜3は多分両方が動くんじゃないかと思いますが、残念ながら現物もなく、Watchを震わせるエンジンはシミュレーターでは限界がわからない、つまりあまりテストの意味がない。 よって、最も古いのと取り敢えず現時点で最新のバージョンをAppStore上で共存させたかったのです。

 AppStoreへの言わば業務用入口となるAppStore connectに新しいアプリをアップロードするとき、まずはマイAppから+ボタンを押して新規Appの項目を作らなくてはならないのはご存知の通り。
 ここに「バンドルID」という項目があり、結論から書くと、これがAppStore connectが、アップロードされたバイナリが新規なのかアップデートなのかを判断する根拠となります。
Con1 
 でも、はて? バンドルIDって何だったろう?って思いますよね。 それを助けてくれるのが、この「新しいバンドル ID を Developer Portal で登録します」という一行。
 ここのリンクをクリックすると、突然Appleのデベロッパーサイトに飛ばされます。

 ここが非常にわかりにくくて苦労したのですが、答えとしては、左のサイドバーの「Identifiers>App IDs」をクリックすると、自分のXcodeで作ったアプリのID、つまりバンドルIDがずらりと出てきます。 つまり、このデベロッパーサイトは開発者のXcodeとも裏で繋がっているのです。 あなおとろしや。
Con2


 今回のWatchアプリの場合、シリーズ4用と言っても、初期型の言わば別名保存版ですから、IDは同じ。 これを見てAppStore connectはアップデートと判断します。
 よって、今度はXcodeでTARGET>General>Bundle Identifierあたりを別の名前にすることで、上の「新しいバンドル ID を...」云々で別アプリとして登録できる、ということがわかりました。
Con3
 Swiftやそれ以前のobjective-Cを含むXcodeの情報は多数ネットにあるのに比べ、このAppStore connectを含むアプリ管理に関しては希薄で、やっとプログラムから解放された後の疲れのだめ押しをされます。

| | コメント (0)

AppleWatch用メトロノームアプリ、シリーズ4に対応

Main_icon_round_ol やっとBeat on WristというAppleWatch用アプリがシリーズ4に対応しました。
 
 シリーズ4から要求OSのバージョンが上がり、それまでのが動かなくなっているのはわかっていながら、Xcodeの持病的バグである"signal SIGABRT"に苛まれて今になったという理不尽さ。
 おかげでAppStoreにネガティブなコメントがついてしまいました。
 
 ま、それはさておき、今回、初代AppleWatch用に最初のバージョンをStoreに残したままにすることにしました。 が、実はこれが難しく、普通にXcodeからApple Connectにアップロードすると、どうやってもアップデート、つまり先代(無印だけど強いていうならver.1)を置き換えようとします。
 いやいや、それじゃこまるんだって、とあれこれやって、新旧バージョンを両方残した、という話はまた改めて。
 
 でも長い間気になってたことが解決してすっきりしたわ。 ビールもうまい。

| | コメント (1)

Timerクラスとバックグラウンドの面倒

 ま、やっぱり私がすることだもんなぁ、そんなに上手く行く訳がないさ。
 テストしていた孤立校舎のチャイムアプリ、バックグラウンドに回ったら動かないことが判明。
 
 え?と思って調べたら、そうか、Timerを使っている限り避けられないのか、と今更になって納得。 簡単にいうと、このクラス、アプリがバックグラウンドに回った途端に動作が止まるしまう仕様なのです。
 以前AppleWatchのアプリでも苦労したにもかかわらず、再びドツボにはまったのかと、自分の思慮と知恵の浅さに呆れるばかり。
 
 そもそもなんでswiftというかAppleのOSはことごとくバックグラウンドでのアプリの動作を制限したがるのかというと、単なる横着とは責められない面もあります。 曰く、バックグラウンドでフォアグラウンドと変わらない動作を提供すると、例えばキーロガーなんてのがこっそりやりたい放題になる、つまりはセキュリティ思想が元になっています。
 
 とはいえ、多くのmacOS市販アプリは裏に回っても普通に動いていますから、当然回避策はあります。 ただ、ネットで出てくる対策は、対象がiOS,macOS曖昧で、かつ非常に難解。

 そこでポンコツな私は思案した。
 このチャイムアプリは私の勤めるたった一つの校舎のたった二つの教室でしか使われません。 しかも使用するのは教師のみ。(最悪私のみ) 一方で、すでに授業は始まっており、完璧を求めて長い時間を費やしている場合ではありません。
 しかも今はXcodeからAppStoreを経由せずともローカルでアプリの生成が可能。
 
 そうだ、クソで良いんだ。
 いや、良い訳ないんだけど、良いのだ。

 そう決めたら、話は早い。
 Timerを使わず、while(repeat while的なもの)で毎秒時間を拾い、条件が合えばチャイムを鳴らすように改造。 えっ?と思われたそこのあなた。 プログラムのエキスパートですね。
 そうです。 whileは無限ループへの近道と要注意の超初心者技法。
 確かに一旦動き出すと、チャイムに関しては期待通りの働きをするものの、レインボーカーソルぐるぐる、quitも含めて後は一切の入力を拒否します。 つまり明確に無限ループしてる、と。

 ただ、それを予想してこちらも速度制限目的のsleep()を一秒毎にかませたため、cpuの限りループすることはなく、半日稼働させてもアクティビティモニターでcpu/メモリ負荷共、全く問題はないことを確認。

 アプリの終了すらできないので、Command + option + escで強制終了するしかありません。
 でもきっちりと期待した通りにチャイムは鳴っている。 仕込んだイースターエッグも息災だ。
  
 とりあえずはこれでええやん?
 教員、下手すると私しか使わんやん?
 コンピューターが人の役に立ってるやん?
 
 ほんと、クソアプリでごめんなさい。
Shotofchime_1

| | コメント (0)

macOSアプリ初挑戦

 うちの学校に新学期に向けて新たな校舎が建設され、どこのコースがどう使うんだろうと思ってたら、なんと我々グラフィックデザインが使えることとなりました。 何はともあれ、新しいことは悪くありません。

 校舎規模そのものが大きくないのでエレベーターはガラ空き、仮に誰か乗っててもみんな顔見知り。 廊下の照明やらトイレやらは全て人感センサー連動で、当然ヒーター、ウォシュレット完備。 手洗いも自動&エアタオル付き。

 が、本校舎から離れているのでチャイムが鳴らない。
 そこで、教師用のMacで簡単に鳴らせないかとみてみたら、これが案外できなかったりするのに気づきました。 毎日決まった時間になんらかの音で授業始まり・終わりを教えてくれるだけで良いのにね。

 PHPをどこかのサーバーにあげて、とも考えたけど、ブラウザを常に立ち上げておかなくてはならないのは色々不便。 てことは、macOS上で動くアプリを作って、ログインしたら自動的に立ち上がるようにすれば良いのかぁ、とまではすぐ思いついたけど、これまでiOSとwatchOSでの開発(ってな大層なもんじゃ無い。単なるポンコツプログラミング)ばかりで、Mac本体で動くmacOSアプリは未経験。

 ただ、やらなければならないことは単純だし、不特定多数に使ってもらうための配慮、例えば好みの時間を入力して保存するなどは不要なので、なんとかなるかも、とも考えました。

 んで今は丁度、日雇い殺しの十連休。 その空き時間を利用して、ではありません。 実はこれが幸か不幸かほぼすべて出勤。 しかし出勤しても仕事はほとんどなく、全く鳴らない電話の番と留守番のみ。 目の前にはMojabeで動くiMac。 そしてこの間何をやってても良いという、拘束なのか非拘束なのかよくわからない時間を過ごしています。

 そこでこのマシンにもXcodeをインストール。 やっとXcodeのくそ持病から回復したwatchアプリの仕上げをしながら初macOSアプリの開発も始めました。

 とは言っても、終わってみると実はwatchOS→iOS→macOSの順で簡単になるんじゃね?というのが正直な感想です。 気になったのは、ネット上にあるSwiftに関する記事の多くがiOSに絡んでいることくらいで、実際、フレームワークをインポートする際に「そんなものはない」と警告が出て気づきます。
 
 中身はというと、watchのメトロノームでも使ったTimerという機能を使って時間をチェックし、switch文が指定時間に適合したら音を鳴らす、という、「夏休み子どもプログラミング教室♪」なんてのに丁度良い程度のヌルさ。 未だに把握しきっていないdeligateなんて一切使っていません。
 鳴らす音はGaregeBandで作ろうかとも思いつつ、結局はフリーの英ビッグベンの鐘の音を拾ってきました。
 
 あらかたXcodeで試した後、AppStoreを経由せずに直接アプリをローカルに書き出して現在テスト中。
 これで問題なければ連休明けから実際に授業に使えるってもんです。
 
 ちなみにそれ以外の機能は全くないので、見た目はこんな感じ。 でも生成されるabout画面はちょっと一人前の気分。
 
 と思ったら? おや?
Shotofchime

| | コメント (0)

iPad公式webページに見るAppleの葛藤

 今のiPad Airが発売されたのはいつだったか、Appleの公式webページ をMacBook Pro.で見たとき、「あ、AppleがPCのwebサイトを捨てた」と感じました。

 かなり前からweb制作関係者の間では、「作るのはパソコンだけど、見るのはスマートデバイス」という矛盾が指摘されています。
 わかりやすいのが画面の縦横比。 パソコンは横長。 スマートデバイス、中でも一番多いスマートフォンは縦長。

 この課題についてはすでにレスポンシブという技術で、ユーザーの画面サイズに適応して臨機応変にコンテンツ表示を変える方法が定着しています(賛否もあるけれど)。 もちろんAppleもそうしていたんですが、ここにきてパソコンで見ると縦長のコンテンツが無遠慮にどかんと配置されて放置という決断が行われたのです。

 具体的にいうと、iPad Airの薄さを訴える部分、横長画面のパソコンではスクロール位置によって何が何だかわからないビジュアルが表示されます。 さらには画面いっぱいのテキストコピー。 一方でiPhone SEのように画面サイズが小さくても、画面が縦長ならまだ少しはマシに表示されます。
 つまり、それでいい、とAppleの担当ディレクターは判断したわけです。

Air2Air1Air3

 Appleのwebページは世界中のwebデザインに大きな影響を与えます。 フラットデザインの流布、HiDPI(高解像度液晶)対応やクソ重い動画表示などなど。
 それがこの決断ですから、う〜む、ついにwebデザインの世界はパソコンを見放したかぁ、と感慨深く捉えました。 いえ、別にそれを咎めようとする気は無くて、そういう時代なのか、と。

 ところが、それを確認しようと改めて後日Appleのサイトを覗いたら、同じiPadでもProの方は、パソコンで下方向にスクロールしようとすると勝手に右に右に移動します。 何よりこちらはAirと違って一つ一つのコンテンツが横長画面に対応完結しています。
 おやぁ?と思って今度はiPhone SEで見て見ると、こちらは普通に上下スクロール仕様。 なかなか凝った仕掛けですよこれは。
 
 すでにwebデザインは教える側からとっくに引退しておりますゆえ、あくまで一般ユーザー+α的な立場でしかありませんが、Apple(のwebデザイン担当)も模索しているんだなぁ、と感じた、けふこの頃。

| | コメント (0)

遮光カーテンで健やかな朝を

Curtain 陽当たりの良い家とか部屋って、爽快とか健康の枕詞みたいになってるんだけど、それが毎朝ガンガン寝ている顔に降り注ぐとなれば話は別。
 私の寝ている部屋がまさにそういう環境で、さらにこの季節、夏至に向かってどんどん夜明けが早くなってきます。
 「逃げても逃げても朝は追いかけてくる」という面白い歌がありますが、まだ起きる時間じゃないのに朝日にジリジリと照らされ、イライラしながら何度も寝返りを打って過ごす、ある意味地獄の季節とも言えます。
 
 で、ふと思い出したのが遮光カーテン。
 昔、北新地でバイトしてた時、高級キャバクラの社長が遮光カーテンを吊るしまくった部屋で日中寝ていると言っておられました。 なるほど。
 
 amazonで探したら、ほとんどが1級という最も遮光性が高い製品で、私としては級によってどれくらい遮光度が違うのかわからず、選択肢の多さから1級から選ぶことに。
 私の顔を照らす朝日は、掃き出し窓の半分からだけなので、半間と呼ばれる片方だけのタイプを選択。 こういう細かい品揃えは通販ならではかなぁ。 ただし色だけは半間にすると選択肢が減り、それまでかかっていた薄緑がなくて薄水色になりました。 これで三千円未満。
 
 さて、結果。 これはイイ!
 
 自室には他の窓もあり、朝になっても真っ暗ということはなく、それなりの時間になるとぼんやりと目が覚めます。 が、これまでのように朝日が眩しくてイライラすることもなく、目覚まし時計が鳴るまでゆったりとした時間を布団の中で過ごすことができるようになりました。 
 例のアプリを見ても、早朝、一旦覚醒してもまた深い眠りに落ちていることが示されていて、ああシアワセ。
 
 強いて不安材料を挙げるなら、真夏でもできるだけエアコンをつけずに寝たいので、この重くなったカーテンが窓からの風を抑えてしまうんじゃないかという一点のみです。 まぁ、夏が来ないとわからないけどね。
 
 もう一度書いておこう。 ああ、シアワセ。

| | コメント (0)

擬似幽体離脱体験

Snore あれからずっと愛用しているsleep cycleというiPhoneアプリ
 
 基本無料なんだけど、自動で録音してくれる自分のいびきを聞こうとしたりすると年額3,000円かかります。 しかも一回キリではなく毎年額3,000円。
 一応アプリ開発者の端くれ(ほんとに端くれ)である以上、ヘボなXcodeと戦う同士としても購入をためらうべきではないとは思いつつ、セコい私はやっぱりためらってしまいます。
 
 ところがこれ、一ヶ月の間はお試し期間として有償版と同じ機能を無償で試すことができることがわかり、ならば、と一応購入。 そして録音されたいびきを聞いてみた。
 
 う〜ん、シュール。
 
 これまで友人と旅行に行った時や、同居人にいびきを指摘されたことはあるので、決してそれを否定することもないながらも、それを聞いたことはありませんでした。 いや、別に特になんていうこともない、普通のいびきなんだけど、こうして客観的に聞けていることの方がとても不思議です。
 なんていうか、自分が幽体離脱し、爆睡している自分の傍らに座り込んで自分のいびきを聞いている、そんな感じです。 これでもし寝顔の録画でもあれば完全に臨死観察シミュレーション。 いや、やっぱりシュール。
 てなことを今後も続ける趣味はないのでお試し期間が終わる前にキャンセルします。


 


 話変わって、始まったばかりの新学期、学生がiPhoneのAirDropで延々と見も知らぬ男性の腹筋画像を送りつけられた、という話をしてくれました。
 
 ではこのいびきの音声ファイルを勝手に送りつけるというテロはどう?

| | コメント (0)

Xcode10の怠惰

 三ヶ月ほど前、自作のメトロノームwatchアプリがAppleWatch4で動かないことが判明。
 あぁそうか、Watch4はiOS 12、watchOS 5を要求するんだったけ、と気軽にXcode10を立ち上げてみたのが地獄の始まり。
 今まで通りビルトまではできるのに、Watchのシミュレーターでアプリが立ち上がりません。
 
 Xcodeのデバッガでは「Simulating crash: Condition failed:"NO". Couldn't instantiate class」と出て、そのあとに自分が作ったエクステンションの名前が続きます。 が、メインのエラーメッセージはあの呪いの「signal SIGABRT」。 そう、むしろswiftの文法エラーの方がありがたいという厄介もの。 Xcode遣いを悩ます何が何やらわからんエラーです。
 これはいわばXcodeの非常に原始的とも言えるバグみたいなもので、今回はXcodeのバージョン10にしたことが直接の原因、ネットを見ても多数の症例と解決策があるものの、どれが自分のトラブルに有効なのかわからない。

 あまりにも意味不明なので、GSの深夜バイトも含めて時々立ち上げては解決策が見つからないというのが約三ヶ月続いて半ば諦めモード。 でもこれで諦めるのも癪に障るし、今後のトラウマになること間違いなし。
 んで、今度は昼間に二日ほどじっくりと(いや、他の会社で仕事中だったんだけどね)時間をかけてあれこれやってたら、プロジェクト名を変更するという海外の情報が半分役に立ちました。
 半分、というのは、名前を変えてみたものの、それを元にした各種ライブラリの名前が違うというトラブルが出て失敗。 何じゃそれ、と落胆しつつ元の名前に戻したら、signal SIGABRTが消えました。

 何じゃそれ〜〜〜〜〜〜っ! 三ヶ月の苦労はなんやって〜ん!
 
Project_name いや、世界のApple系開発者はこんなヘボなフレームワークを使わされているんだと思うと思わず涙目になってしまいます。
 アップルのサイトでは子供や女性をプログラム開発に招き入れる様々なイベントやら取り組みが超ハッピートーンで紹介されていますが、あれを見るたびこのsignal SIGABRTの低次元爆弾のことを思い出してしまいます。
 
 あ、この解決策、たまたま今回のsignal SIGABRTでは正解だっただけで、原因&対策は千差万別であることを覚悟してください>藁をもすがる気持ちでここに辿り着いたXcode難民の方々

| | コメント (0)

風邪を一晩で治す

 以下、この年始に書き始めたんだけど、忙しくて途中でほっぽらかしていたネタです。
 まだ雪が降る地域もありつつ、いかにも季節外れの話ですが、とりあえず書き上げたので掲載しておきます。
 いや、薬って怖いっていうのが世間で主流ながら、正しい知識、あるいはアドバイスがあればピンポイントで自らの体を守ることできますよ、って話です。

Medic

 冬の郵便局は広い。 いや、冬でなくても広いのだろうが、冬しか入ったことがない。 そしてカラッカラに乾燥し、暖房は動いているとうっすら汗ばむぐらい完備。
 これ、風邪感染の最高環境かと。

 案の定三日目くらいに異常に喉が痛くなり、ああこれまずいなぁ、と警戒していたら翌日鼻水がだらだらと。 そして時々ゴホッと咳が。
 幸いこの日は夜の仕事が無かったので、よっしゃ、一晩で治したる、と医薬品登録販売者のテキストを取り出す。 なんでそんな本を持ってる? 訊くな!大人なら。

 発熱は人間本来の免疫だから放置。 そして多分布団に入ったら咳が酷くなるから、咳止めは寝る前に服用。 鼻水が酷いので、この歳になって初めて鼻炎スプレーも購入。

 この鼻炎スプレー、値段的には一番安いものだったけどよく効いた。
 成分は?と見ると、ナファゾリン塩酸塩、クロルフェニラミンマレイン酸塩、リドカイン、あら、痔の薬と同じ。 血管を収縮させて出血を止める、という成分が、鼻水も止めるという、そっか、人体にとって痔血と鼻水は等価だったのか。 う〜む、口がケツの穴だったという生物が住む星にたどり着いた星新一の話を思い出してしまった。

 咳止め薬(専門的には鎮咳薬と呼ぶらしい)は、要は風邪に対する過剰な免疫を抑える仕組み。
 夜寝ている時にひどく咳き込んで、起きると止まるんだけど、また横になると咳き込むというのは、副交感神経(リラックスする時に働く:睡眠時はその最たるもの)によって気管支が収縮して咳が出やすくなるのだというのを知ってとても納得。 よってお薬はアドレナリンを刺激、この仕組みを緩和するのだそうです。

 上記鼻炎スプレーのナファゾリン塩酸塩もこのアドレナリン作動成分を持っていますから、「風邪の時には安静に」とはいいながら、神経的には興奮作用が効くという、一見相反する事実を知って感心するばかり。

 てなこと考えながら薬局で鼻炎スプレーを探しているうちにも鼻水がダラダラ流れ出てきました。 ティッシュの手持ちはなく、たまたましていたマスクがなければとても悲惨でみすぼらしい風体になっていたはず。
 急ぎ家に帰り、スプレーを噴射すると、目に見えて鼻水が止まりましたから、う〜ん、改めて薬はすごい。

 てなことで、熱を敢えて抑えない、という狙いが効いたのか、翌日には鼻水、喉の痛みは無くなり、もちろん咳き込むこともありませんでした。 お〜、真冬に一晩で風邪を治すってすごくない?

 Getting better with a little help from my medicine.

| | コメント (0)

«多分、大阪限定パロ