タイトル「the bloom of halation」の元写真です。 昨日は23℃でとても暑かったです。 今日は同じ気温ですが、曇天なのでまだ過ごしやすかったので良かった。。 #theta360fan https://theta360.com/s/lG2xjcDQp9EvMvZAfizfTzQ8W?utm_source=app_theta_tumblr&utm_medium=social
EXPECTATIONS
No title available

Janaina Medeiros
YOU ARE THE REASON
Cosmic Funnies
𓃗
cherry valley forever
Monterey Bay Aquarium
sheepfilms
todays bird
Peter Solarz
Today's Document
noise dept.
One Nice Bug Per Day
trying on a metaphor
🩵 avery cochrane 🩵

Kiana Khansmith
Claire Keane
Not today Justin
Misplaced Lens Cap
seen from Türkiye
seen from United States

seen from United States
seen from United States

seen from United States

seen from Egypt
seen from Canada
seen from Austria
seen from United States

seen from United States
seen from United States

seen from T1

seen from Colombia
seen from Russia
seen from United States
seen from United States

seen from United States

seen from United States
seen from United States

seen from United States
@thezombieto
タイトル「the bloom of halation」の元写真です。 昨日は23℃でとても暑かったです。 今日は同じ気温ですが、曇天なのでまだ過ごしやすかったので良かった。。 #theta360fan https://theta360.com/s/lG2xjcDQp9EvMvZAfizfTzQ8W?utm_source=app_theta_tumblr&utm_medium=social
セミナーで使用する写真です。 タイトルは「コロナ忘れのサクラ」。 #theta360fan #sakura3d https://theta360.com/s/lVlC1WudnAUmxLt0TEEpkzK4W?utm_source=app_theta_tumblr&utm_medium=social
セミナー用写真です。札幌撮影会の2回目の参加です。 #theta360fan https://theta360.com/s/bXdIy6SNoSiH2eb8oN0nagRma?utm_source=app_theta_tumblr&utm_medium=social
セミナーで使う写真です。 これは自分でも360°写真のきっかけになった作品の元写真です。 できた作品は撮影会にも出品させていただきました。 #theta360fan https://theta360.com/s/sGUNL714kdS403XtvBptxCT9k?utm_source=app_theta_tumblr&utm_medium=social
セミナーで使う画像です。 自撮り棒の説明用です。 #theta360fan https://theta360.com/s/nSgMeCqhxFWCL0CamwUIdqSSu?utm_source=app_theta_tumblr&utm_medium=social
touchesBegan(_:with:)とかXcodeの警告とか
touchesBeganについて。
今回はtouchesBegan(_:with:)を久しぶりに触ってみた。札幌Swiftでいつもやってる内容ですが、忘れてなくてよかったです。
なんかQiitaの記事によると、touchesBegan、touchesMoved、touchesEndedは、タッチイベント三兄弟と言われる模様。
Xcodeの警告について。
「Initialization of immutable value 'touch' was never used; consider replacing with assignment to '_' or removing it」の黄色三角形の警告が出る際について。
この警告は、質問サイトteratailにある「swiftのfor文でエラーが出ます immutable value i'' was never used: consider replacing with '_ ' or removing it」によると、「(あなたが今作った)その変数は、不変の上に使われていないので、変数を作る意味がありません。アンダーバー(_のこと)に変えて使ってないと明示してください」ということだそうです。
質問サイトの回答でも説明されていますが、要はその変数を使えば消える警告だそうで、気にせずコードを書き進めていけばいいそうです。
私もよくこの警告が出ます。今回は関数を定義した段階で出ました。そりゃ定義しただけで使うのはこれからですから、「さっさと使えやボケ」とでも言わんばかりの警告は、なんだかXcodeがブラック企業の理不尽な上司みたいでちょっと閉口しました。
ただまあXcodeとしては、リアルタイムでエラーや警告を出すことで、いち早くコードの不備を発見してもらいたい一心からやってることなので、あまりカリカリしないでおおらかな気持ちでいた方がよさそうです。
エラーや警告が出てもまずは気にせずに一通りコードを書き上げて、いざビルドしようとした段階でもまだ出ているものについて対応するというやり方がいいように思えます。
おまけ。
警告文に「immutable(不変)」という文字があったので調べてみたところ、プログラミングの上でのイミュータブルというのは、プログラムの予測可能性を担保する上で重要な概念みたいです。
Javascriptの例ですが、「JavaScriptでイミュータブルなプログラミングをする」という記事が参考になりました。
ちょっと長い記事なので、時間がある時にでも読んでみるといいかもしれません。ただやはりあくまでJavascriptの例についての説明なので、Swiftにそのまま適用できるものではなさそうですが…。
[以上です]
タッチイベントとか
新しいApple Watchリスペクト。
↓
https://www.apple.com/jp/apple-watch-series-5/
https://wired.jp/2019/09/11/apple-watch-series-5/
嘘です。XcodeのAsset Catalogに入れておいた、アプリの背景に指定する画像ファイル名を間違えてコードに書いたので「ダメ!」と怒られているだけです。
この背景に指定できる画像なんですが、なんか画像によって指定できたりできなかったりしてよくわかりません。体感なのでオカルトですが、どうもpngのは指定できやすく、jpegのはダメと言われる場合が多い印象。でもpngでもダメといわれることもあるし、jpegでもいける場合があって、混迷の度合いが増すばかりです。
なお、ダメなjpegをpngに変換してもやはりダメと言われます。これだけは確実っぽい。いずれにしても原因はわからないので、ほとんど役に立たない情報ですが…。
あと、SKLabelNodeで絵文字を表示しようとした際、背景画像と似た色の絵文字を指定すると、なんか時々、消滅する現象が起きます。
これもまた原因不明ですが、見にくいので似た色は避けた方が良さそうです。
うーん…有益な情報に極めて乏しいなこの記事。
追記。
Xcodeのエラーで、今まで問題なかったコードに急に「override' can only be specified on class members」が出るときは、ブレース({}の括弧)が欠けている場合が多いので、まずそこをチェックした方がいいです。
特に、後ろの閉じるブレース(}のこと)が足りないパターンがほとんどです。
[以上です]
SKShapeNodeで折れ線と滑らかな曲線の描き方
もうこれは定型文なんだそうです。理屈や疑問なしで、覚えて終了。
【コード】
var points = [CGPoint(x: 0, y: 0), CGPoint(x: 100, y: 100), CGPoint(x: 200, y: -50), CGPoint(x: 300, y: 30), CGPoint(x: 400, y: 20)]
↑これで点を設定する。配列なのでいくつでもよい。CGPointなので中身はint型。
let linearShapeNode = SKShapeNode(points: &points, count: points.count)
↑これで折れ線を描く。点の個数はcountのプロパティで自動取得できるので、点の数が変わっても問題ない。pointsのところにある「&」は何なのか分からないが、誰も気にしている人はいないので、もうこういうものだと思うことにする。
let splineShapeNode = SKShapeNode(splinePoints: &points, count: points.count)
↑これは滑らかな曲線を描く場合。こちらも点の個数については気にする必要がない。「&」を気にしてはいけないのも、同じ。
【コードここまで】
これらはAppleの公式ドキュメントに書いてあるまんまです。
↓
https://developer.apple.com/documentation/spritekit/skshapenode/creating_a_shape_node_from_an_array_of_points
ちょっと手を加えて、本に書いてある例の通りにできました。(背景色とか線の太さや色を加えただけです。)
[以上です]
CGFloatとIntで型キャストしたりSKSapeNodeで楕円を描く
SKShapeNode(ellipseIn: CGRect(x:, y:, width:, height:))で楕円を描くし、SKShapeNode(ellipseOf: CGSize(x:, y:, width:, height:))で楕円の輪郭線だけ描く。
.fontsize関数は引数がCGFloat型でないとだめ。CGPointの引数も同じくCGFloat型。
一方、昨日のstrideは引数がInt型。
両者を使い分ける時は、多く使う型を最初に指定して、たまにしか使わない方をその度に引数の中でキャストした方がいいみたい。
【例】
(前略)
let ty: CGFloat = 30
(いろいろあって)
t.fontSize = ty ←CGFloat
t.fontColor = .red
t.position = CGPoint(x: frame.midX, y: frame.midY - ty/2) ←CGFloat
(またいろいろあって)
for i in stride(from: 0, to: y1/2- Int(ty), by: 10){ ←Int
(中身略)
}
(後略)
…みたいな。
[以上です]
strideってガムありましたね
strideというのは、範囲を指定して値をたくさん作る関数なんだそうです。
「from ~toまでの値をbyで指定した刻みで値を作る」「strideTo<T> というコレクションを返す」ものだとここに書いてありました。
↓
https://medium.com/@bj1024/swift-stride-指定範囲の値を作成する-823e01e70c21
本に書いてあるお手本の通りにできたのでよかったです。
実はこちらのサイトも参考にしました。私には、ここまで複雑なのはまだ作れませんが。
↓
https://lepetit-prince.net/ios/?p=5570
余談ですが、Xcodeを触っていてエラーが出た際は、まずスペルミスや関数の指定すべき要素の不足を最初に疑ってそこから調べましょう。
私は、CGRect(x:, y:, width:, height: )の中で「widh」になってるのに気づかず、2時間無駄な調べ物をしました。
SwiftUIとstructやbody
Apple謹製iBookの本「Swiftによるアプリケーション開発:入門編」で「ボディ(body)」という単語が普通に出てきて混乱しましたが、関数の中身そのもののことらしい。(※)
しかし検索すると、なんかSwiftUIのものっぽい説明が登場。
↓
https://developer.apple.com/documentation/swiftui/view/3125355-body
この説明によると、ビューの型で、ビューそのものを表示するってあります。カスタムのビューをこれで作ると、要求されるプロパティ(属性)をSwiftが推測してくれるとも書いてあります。
bodyっていうのは、ビューで便利そうなんだなと思いましたが、これはSwiftUIの中で使うもので、たぶん本の方に書いてあるbodyは、冒頭(※)の内容なんだと思います。
SwiftUIのbodyについては、このサイトに説明してありました。
↓
https://medium.com/swift-column/swiftui-tutorial-1-690de7cf5076
このSwiftUIについて説明しているサイトで、いきなりstructという単語が出てきます。前回の札幌Swift講演で、structは構造体なんだろうなあとポワーンとわかった気になっていましたが、説明しろと言われるとできません。
ですから、調べてみました。古い記事ですが、こういう根本的なものはたぶん定義は変わらないと思うので、大丈夫だろうと思います。(「〜だろう」と「思います」ラッシュの怪しい判断)
mutatingという記述をたまーに見かけて「はぁ?」だったのですが、この説明でどういうものだかちょっと分かりました。
↓
https://qiita.com/yuinchirn/items/98b568d595650eca3334
なお、SwiftUIについては、以下の記事でも説明されていました。
↓
前編: https://dev.classmethod.jp/smartphone/tried-swiftui-tutorial-firstpart/
後編: https://dev.classmethod.jp/smartphone/tried-swiftui-tutorial-secondpart/
SwiftUIの方は、なんだか難しそうで、私に理解できるものなのか自信ありません。
(記事ここまで)
イニシャライザとかemunとか
2018年の札幌Swiftのおさらい的な。
イニシャライザというのは「型(クラス、構造体、列挙体)のインスタンスを初期化(initialize)する特殊なメソッドのこと」だそうです。下のリンクから引用しました。
↓
https://qiita.com/shtnkgm/items/8b7979fc84a3cc065238
列挙体(列挙型と書いているものもある)とは、要するにenumのことです。ゲームのキャラクターに装備を持たせる場合など、面白い事例が書かれています。
↓
https://qiita.com/hachinobu/items/392c96820588d1c03b0c
この説明の中に、有限集合という単語が出てきますが、無限集合でないのは有限集合という理解で良さそう。本当はダメかもしれませんが、私はあまり賢くないので、そういう風にしか理解できてません。
ここでは無限集合を扱えるHaskellについて、pythonと比較して説明されています。
↓
https://note.mu/299792458/n/n1324cdc87a4d
SKShapeNodeは、一部のイニシャライザーについて理解していないと扱うのが難しいらしいです。
↓
https://ja.stackoverflow.com/questions/57332/skshapenodeクラスで円を描きたいが-initでエラー
Tumblrブロガーの皆さん👋
本日、Tumblrの親会社であるVerizon Mediaは、Automattic社によるTumblrの買収がこの度正式に決定したことを発表いたしました。Automattic社は、WordPress.com、WooCommerce、Jetpack、Simplenoteなどの製品を所有するテック企業であり、クリエイター、ビジネス、パブリシャーが世界のコミュニティとつながりをもてる場を提供しています。
このような同じビジョンと使命感みなぎるチームの一員となれることに、私たち一同は期待でいっぱいです。WordPress.comは世界的に有名な企業であり、Automatticのフラグシップ製品です。WordPress.comとTumblrはいずれもブログプラットフォームの先駆者としての共通点も持ち合わせています。
Automattic社とTumblrには多岐にわたる分野で情熱あるコミュニティを構築すること、興味を共有していくこと、誰もが自分のストーリーを語れるというパブリシングの民主化を目指すことなど、さまざまなビジョンで合致しており、特に尊重されず社会から取り残されつつあるような世界市民の小さなひとりひとりの声にも耳を傾けてきました。
私たちは、自己表現を強化してコミュニティの感覚を育ててくれる、素晴らしい場を作り出せることに胸踊らせています。 インターネットの世界がこれからますますより優れたインクルーシブな場となっていくことを目指し続けます。
私たちのこれからの未来に乾杯!
<3 Tumblr
WordPressとの連携機能が強化されたりとか、いろいろシナジーを狙った変更はするのかな?
SpriteKitで図形を描く
SKShapeNodeというクラスで図形を描くらしい。プロパティの「rectOf(レクトオブ)」を間違えてレクトゼロエフだと思い込んでしばしハマるという迷采配をやらかしました。
↓
http://harumi.sakura.ne.jp/wordpress/2019/03/18/spritekitで図形を描画する/
ignoresSiblingOrder → ノードツリーの親子関係・兄弟関係をレンダリングの際に気にするかどうか。Bool型で、falseだと古いものから新しいもの、親ノードから子ノードの順に描くが、trueだとそれらの関係を気にせず最適化された準備に描画します(参照元: http://spritekit.senchan-office.com/index.php/skview)
できたものはこんな感じで、本のお手本通りになってよかったです。
CGRectって何!?
iOS端末ごとのスクリーンサイズを取得する方法について。
参考になったのはこの記事
↓
https://qiita.com/yyokii/items/bc8cd3a5460a9a74d0a0
SpriteKitの本を見ていて詰まったところです。
本では
【1】
let w = UIScreen.main.bounds.size.width
let h = UIScreen.main.bounds.size.height
と定義したあとで
【2】
let sv = SKView(frame: CGRect(x: 0, y: 0, width: w, height: h))
と書いてあったんだけど、これだと「Cannot call value of non-function type 'CGRect'(ファンクションではないCGRectは呼べません)」というエラーが出る。
どうも調べてみるとCGRectは、CGPointとCGSizeをメンバーとする構造体で、xやyなんかのCGPointであるCGFloatと、CGSizeであるwidthやheightは混在して書くのができないんじゃないと思う(私の理解なので間違ってる可能性あり)。
なので【1】を冒頭の記事に習って
【1’】
let boundSize: CGSize = UIScreen.main.bounds.size
let w = boundSize.width
let h = boundSize.height
と書き直したところ、【2】に出ていたエラーが消えてよかったというお話です。
CGRectの理解については、この記事を参考にしました。
↓
https://ja.stackoverflow.com/questions/22273/cgrectの上手な書き方
あとエラーについては、このサイトで確認しました。
↓
https://samekard.blogspot.com/2014/09/swifterror.html
以上です。
SpriteKitは一時やめます
いろんなサンプルを試してみてますが、どれをやってもエラーしか出ないので一時的にもうやめます。
バージョンも合ってるのに、コピペしたコードまでエラー出るのでもうダメです。
今度からARKitにしてみよう。少し慣れたらまた挑戦するかも。
Swift練習(SpriteKit)
SwiftのSpriteKitの使い方を勉強中。
なんかARKitを使っているものが面白そうだったのでやってみることに。しかし。
SceneKit Scene editorの仕様で詰まる。この機能、Apple純正のMagic Keyboardないと使えないのね。なんとか準備しました。
やってみたいのはこの「ARKitで動き出すポスターを作る」。
↓
https://qiita.com/k-boy/items/663a6119c8734fd1b06d
でもこれをやるには前提として「ARKitで作るAR名刺」の内容を理解している必要がある。
↓
https://qiita.com/k-boy/items/d5c7e0f4174da4b8d5f0
その「ARKitで作るAR名刺」をやるためには、SceneKit Scene Editorが使える必要あり。「SceneKitでプリミティブなジオメトリから3Dモデルを作ろう」で解説してくれてます。至れり尽くせりで本当にありがたいです。
↓
https://qiita.com/k-boy/items/14205dd569a57eb44d96
これだけたくさんの技術を元に動き出すポスターができているということです。でもちょっと情報を調べてて”モンハンの装備の作り方を調べてるみたいだな”と思ったり。
なお、この一連の技術をQiitaで解説している人は、GitHubで「ARKit EMPEROR」という活動もしている模様。こういう専門的な技術者さんが、いろいろと解説してくれてるのは本当にありがたい。
↓
https://github.com/kboy-silvergym/ARKit-Emperor