So-net無料ブログ作成
前の10件 | -

Swiftの関数の引数のアンダーバー。 [プログラミング]

Swiftをやる時にいつも忘れているんだけど、わりとすぐに思い出せないので書いておく。

Swiftの関数で引数のところにアンダーバーが出てくるのが気になる。

override func draggingExited(_ sender: NSDraggingInfo?) {


例えば上のだと関数のところにsenderという引数があって、その型はNSDraggingInfoだということだけども、アンダーバーはなんだということになる。

答えはObjective-Cにあって、メソッドの引数に名前をつける習慣があって、C言語みたいに関数でやっている分には引数の順番で判別するのだが、クラスの中のメソッドの引数はキーバリューみたいに一揃えにしていかなければならない。だからそれを省略して書く時にアンダーバーが必要になってくる。

Objective-CのCocoaに対応するためにSwiftでも引数が順番だけじゃなくて名前で判別する仕組みを取っているというわけだ。引数が一つだけだとかは面倒だから省略するのが普通なわけだが、なんかいちいち省略しますよと宣言するというのが気持ち悪いがしょうがない。

なんでこんな事を毎回やっているのかというと、この事実を明示的に書いているところがあまりないからだ。Swiftをやっている人は大体Objective-Cのことを知っているし、僕みたいにいきなり思い立ってやり直すという人が少ないというのもあると思う。そもそも_で検索しても情報がなかなか出てこないしね。文法とかはやっぱり本とかがあったほうがいいに越したことはない。Swiftは一冊買ってあるからいいとして、Golangって持ってないんだよな。
これあたり欲しい。翻訳本で高いがな。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)



Swift本はこれを持っている。簡単すぎないから大体のことはよく読めば載っている。あまり親切とは言えないが、少なくともググってすぐ出てくる情報ばかりではない。

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

  • 作者: 石川 洋資
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/01/17
  • メディア: 単行本(ソフトカバー)



[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus

  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/11/14
  • メディア: Kindle版




それにしてもguard文は必ずしも必要な感じはしないなぁ。便利は便利だけれど、他の言語であまり見慣れないものを見ると一瞬ムムムと感じてしまう。まぁ書いてあることを読める程度にはなっているけれども…。Swiftはコンパイラで検知できるバグは文法的に取っていく方針にあるみたいなので、ある程度書き方を強制されるところはあるかも。

タグ:SWIFT
コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2019/09/19 [Twitter]


コメント(0) 

なんかWindowsノートが欲しくなってきたなぁ。 [ハードウェア]

とりあえず、ノートはMacBookAirがあるので、そんなに困っていないのですが、何かWindowsノートが欲しかったりします。

デスクトップは6コアの自作マシンを年末に作ったので、使ってなくてもしばらくの間は満足しています。それにデスクトップ版のIce Lakeはまだまだだろうし、AMDのZen2のRyzenはコストパフォーマンス的にいいとは思いつつも、Bulldozer時に8コアのものを買ってしまったので、パフォーマンスが悪くても新しく買おうという気にはなっていません。

そもそもCPUなどのパフォーマンスで困る場面というのがほとんどないわけで、メモリにしても上限まで積まなくても全然困らない。昔はギリギリまであげても足りないということがあったけれども、用途がそんなにハードルが高くないんですよね。

というか、パソコンで楽しむことってのがあまりなくなったというのが正直なところ。Web閲覧とテキスト書きがほとんどの時間を割いている気がするんですよね。昔はエミュとかエンコードとか当時では余裕がないものを無理矢理やっていたんですが、今は本当に負荷のかかることはしていないですね。h.265のエンコとかやろうと思えば負荷のかかることはあるんでしょうが、それにしたってハードウェアでやってしまうことってのが多いんだろうし。

マシンパワーが役に立つことって、Macでコードをビルドするときぐらいで、そのMacはAirだったりするのでそこまで速いわけでもないんですよね。それとHomebrewもバイナリリポジトリになってしまったので、地元でコンパイルすることもなくなってしまったし。MacPortsとかどうなったんだろう。なんかAppleの技術者が絡んでいてクオリティがひどかった。問題を挙げたのに解決済みだと言われてキレて、Homebrewに移行しました。それが大成功したからよかったものの、Appleの技術者とOSSって基本的にあまり相性が良くないんじゃないかと思ってしまうのだけれど…。


現状Windowsマシンがいるというわけでもないんですが、Officeを使っているSurface3があまりにも動作がお粗末なのでそれを解消したいというのはあります。Officeってわりと動作が重いんですよね。Office2000をずっと使えていた頃は、マシンスペックが上がってサクサク動いて嬉しかったんですが、OSが上がっていくと使えなくなってしまっていたので残念でした。Officeってわりと新しいところを盛り込むために新しく買い換えないといけないところが痛かったりします。

まぁ今時はWindowsを使うのってゲームするかOffice使うかぐらいが主目的だろうし、実際Officeバンドルのマシンは日本には多いと聞く。MacにもOffice最近あるのかな? Office365があったくらいだから互換性の面ではある程度やりやすくはなっているんだろうけど…。一時期、OSXになってからやたらMSがMacに押しかけてきた時があったんだけど、アレはなんだったんだろうか。OSSにすり寄ってきたのも同じくらいの時だったかもな。その時はなんとかしてWindowsにOSSを取り込もうとしていたが、最近は真剣に一般的な方法でアプローチしているから時代は変わったものだ。

しかし、パソコンが何台あっても全部使うわけじゃないんだよな。昔だったら喜々として使っていたのだろうけど、今ではネットでつながっているにも関わらず面倒で使わないんだよね。自作にしても作って満足なところがあって、手段が目的になっていると言われても仕方ない。昔はパソコン上で楽しいことがたくさんあった気がするんだけど、そういうのを見つける若さがなくなってきたんだろうな。それと飽きたのもあるんだろうけど、わりと忍耐力が必要だったりもするので、興味が落ちると続けていくのは辛い。あと悪いことをやっている自分が楽しいってのもあったかもしれない。でも、そういうので楽しめるところは少なくなってしまった。

最近はUltrabook的なものも普通になって、みんなMBAirっぽい外装のノートばかりになってしまった。Apple自体もほとんど見た目を変えることをしなくなってしまったので、ある程度の完成を見たということなんだろう。それにしても色々なノートパソコンがあった時代は終わってしまったのだなと感じる。今こそSSDで小型化できるんだから、いろんな形状のノートパソコンを作れそうなものなのに、LibrettoやVaioみたいなちょっと変わったものが出なくなっている。UMPCみたいなものもあるけれども、わりとマシンパワーがなかったりするものも多いし、昔ほど食指が動かないんだよね。なぜだろう。

無駄に熱が出ずにパワーもあるノートが作れる今だから欲しい気はするんだけども、SSDの容量が少し過渡期である気はしている。256GB程度なら使えなくはないのだが、動画などをガンガン詰め込むとすぐにいっぱいになってしまう。そしてSSDが基板直付けも多くなっているので、後で変えるということもやりにくくなっている。OSのインストール的にもSSDを変えるというのはちょっと考えるところもあるし。

そこそこご予算をケチる方なので、コスパのせいで性能が犠牲になることが多い。なのでお値段がこなれてきてからの購入がほとんどになっている。パソコンパーツ的にはアーリーアダプタだったりするのだが、ノートパソコンとしてはそうでもない。

もはや中華製のものしか選択肢がない状態ですが、とりあえず日本語のOSが乗っていればいい。というか、日本のパソコンも統廃合も甚だしく、同じところが作っているってのも少なくないだろう。そんな中で個性的なノートパソコンが出てくるはずがないよな。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2019/09/18 [Twitter]


コメント(0) 

Twitterまとめ投稿 2019/09/17 [Twitter]


コメント(0) 

来季はアニメの続編が結構あって追うの辛そう。 [アニメ]

9月も後半に入って今期のアニメも終わりつつあります。最近は13話構成じゃなく12話のものが多くて、BD-Rに焼きやすくて嬉しい限りです。ものによっては2クールものを一層BD-Rに焼けるので、網羅的にアニメを焼いている職人としてはすんなり収まっていいのです。

しかし、アニメが終わる頃になるとBD-R焼き職人みたいな状態になっていますね。職人にしてはやっていることが単純単調すぎますが。機械的に作業を行うという点では職人っぽくはあるのですが、ある程度CM切って焼くだけだもんなぁ。でも、あとで人気になったり見るつもりがなくても時間ができて後々見たら面白かったという例があるので、深夜アニメなどは網羅的に見ざるを得なかったりします。

https://gigazine.net/news/20190908-anime-2019autumn/

いわゆるテンプレめいた異世界ものはそんなにないようで、ちょっと安心できます。あんまりアレ系のものは食傷気味で見たくなかったので、まぁ通常営業に戻ったということなのでしょう。


とりあえず

ハイスコアガールⅡ
七つの大罪
僕のヒーローアカデミア 第4期

ぐらいは必ず追っていこうと思います。これらはずっと見ているのでつまらなかろうが最後まで見届けたいという気持ちはあります。というか、最近そういう使命感でしかアニメが見れてない気がするんだよね。たまに面白い新作はあるものの、BD-Rに焼いて満足な場合も多く、後追いするにも時間もやる気もないということが多いんだよね。

アニメを追うのが辛いなら見なけりゃいいという人もいるのかもしれないけど、それをやめたら趣味らしいことはプログラミングぐらいしかないし、プログラミングってのもアニメを見る以上の熱量が必要なので続けてやっていくというのもしんどいものです。なので、精神的な支えとしてアニメのBD-R焼きという行為は避けられないものだったりします。にしてもBD-Rが溜まりすぎて置くとこに困る。

最近SeeQVaultのHDDも一般的になってきているので、ちょっと買ってデータ退避しようかなと思っている。レコーダーが死んでも他に引き継げそうだし。調べたらSeeQVaultのHDDに対応しているレコーダーだったし、値段もそこそここなれてきているっぽい。だけど買ったら買ったでBD-Rの焼き込み作業を怠るだけで、余計悪い方向へ行きそうな気がするんだけど…。

コメント(0) 
共通テーマ:アニメ

Twitterまとめ投稿 2019/09/16 [Twitter]


コメント(0) 

'NSInvalidArgumentException' (reason 'launch path not accessible')はSandboxの設定をいじって解決 [MacOSX]

ドラッグ&ドロップしたファイルのパスを取得して、Process()でコマンドラインのツールに渡していた。以下のエラーが出た。色々したがエラーが取れない。

*** Canceling drag because exception 'NSInvalidArgumentException' (reason 'launch path not accessible') was raised during a dragging session


起動させるコマンドにアクセスできないと言っている。見つけられないと言っているのか、言っている通りにあるけどアクセスできない状態になっているのかいまいちわからない。

        let task:Process = Process()
        task.launchPath = "/usr/local/bin/MP4Box"

としていたのだが上のエラーが出て見えないと言われる。
だけど
        let task2:Process = Process()
        task2.launchPath = "/usr/bin/open"

は見つからないエラーは出ず、openコマンドが普通に動作した。Homebrewのコマンドだから使えないようだ。なぜだ?

/usr/local/bin/MP4Box
の実体はファイルのリンクなのだが、
/usr/local/Cellar/gpac/0.8.0/bin/MP4Box
と直接パスを指定してもエラーが出る状況は変わらず。

下のリンク先ではファイルのパーミッションがダメだと直さないといけないよと言っていたけど

https://stackoverflow.com/questions/36732874/command-line-launch-path-not-accessible

コマンドをデスクトップのフォルダにコピーしてきて、ファイルもフォルダも777あたりにパーミッションを設定したけどダメだった。実行バイナリがダメになっているわけじゃないもんなぁ、と八方塞がりなのでした。


試行錯誤をやめてググることに集中してみたんだけど、どうやらSandboxとやらの設定らしかった。

https://qiita.com/YutakaMatsui/items/f83b272402a4699f72c2

.entitlementsというファイルの
App Sandbox
をYESからNOに変更するとファイルが見つからないよというエラーはあっさり消える。

なんというかXcodeの仕様に振り回されていたってことなのでした。セキュリティの向上に役に立っているのかもしれないけど、エラーが指定したパスが見つからないと出ているので、セキュリティの問題だとは気づかないよな。前にはこんなファイル無かったと思うし。

またNOからYESに戻そうとするとBuild Failedと出てきてビルドできなくなるんだけど、一回Clean Build Folderかなんかしてからビルドし直すとビルドできた。そういうところも嫌な感じ。とにかく、正しいファイルパスでlaunchできないのなら、Sandboxの設定が問題になっているかもよというお話でした。launch path not accessibleというメッセージは間違っていなかった…。

タグ:SWIFT
コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2019/09/15 [Twitter]


コメント(0) 

Apple Developerのサンプルコードの検索がひどい。 [MacOSX]

ドラッグ&ドロップのサンプルファイルをApple Developerのサイトで調べようとしたら、浅い階層のページの検索では出てこなかった。というか、何を入れてもヒットせず、何のキーワードを入れればsample codeのところに出てくるのか謎である。

https://developer.apple.com/search/

前はサンプルコードが一覧になったページがあったのにと、つらつらと調べていたら昔のページとかはアーカイブになっていた模様。

https://developer.apple.com/library/archive/navigation/


drag & dropのsample codeは下にあって、やっぱりちょっと昔のなのでSwiftのコードはない。まぁ同じCocoaを使っているのだから、手順は多分一緒のはず。

https://developer.apple.com/library/archive/samplecode/CocoaDragAndDrop/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000384

しかし、ページを刷新した時に起こりがちな事なんだろうけど、従来のページもググらずとも出てくるようにしてほしいものだ。往々にしてサイト独自の検索機能ってのは使えないものだけれども、そこにあるとわかっている場合はサイトが絞れて探す手間も少ない。というか、公式サイトの情報って一次情報として重要なんだから、そこのところはAppleもわかってやってほしい。


ググって他のサイトにSwiftのサンプルコードがあったんだけど、それと照らし合わせつつやっていこうかなと思ったり。

https://codeday.me/jp/qa/20190319/438506.html

というか、サンプルコード無しにリファレンスだけでコーディングするのは辛すぎる。

とりあえず( )を取ったらコンパイルが通るようになったので動作させたらパスが取れていた。そのパスをコマンドラインに投げて挙動見てみようか。進捗はお勉強していない割にはまずまず。Googleさまさまである。

タグ:SWIFT
コメント(0) 
共通テーマ:パソコン・インターネット
前の10件 | -