koogawa blog

iOS、Android、foursquareに関する話題

Apple Vision Proをゲストに体験してもらうときのコツと注意点。そして、ぶっちゃけ買ってよかったか

Apple Vision Proを購入して10日が経ちました。この期間に、主に宮崎市でたくさんの方にVision Proを体験してもらったので、それらを通して得た知見をまとめたいと思います。

バンドはソロニットバンドがおすすめ

ゲストに貸し出す際は、最初から装着されているソロニットバンドがおすすめです。理由はシンプルにサイズの調整が簡単だからです。

あらかじめ右にあるフィットダイヤルで締め具合を調整できることをゲストに伝えておくとよいでしょう。

ソロニットバンド

Vision Proには、頭頂と後頭部用の2本のストラップを用いてよりフィット感を高めるデュアルループバンドも付属しています。しかし、こちらは前者のソロニットバンドよりも調整が難しい印象です。

デュアルループバンド

手元のiPhone/iPadVision Proの映像をミラーリングできるようにしておく

Vision Proの映像は基本的に装着している本人にしか見えません。つまり、Vision Proの映像をあらかじめミラーリングしておかないと、操作方法を教えることが困難になります。

幸いVision ProからiPhone/iPad/Macミラーリングする方法がありますので、事前に設定しておくとよいでしょう。

タップの方法は装着前に教えておくこと

先述の通り、ゲストがVision Proを装着した後は細かい指示を出すのが難しくなります。最低限、タップの方法(指をつまむ)だけは教えておきましょう。あとは何とかなります。

ミラーリング中のiPhoneではカメラを起動できない!

Vision Proを使っているときの様子を写真に残したいという場面があるでしょう。しかし、先述の方法でiPhoneミラーリングに使っている場合はカメラを起動することができません。

正確にはできるのですが、カメラを起動するとそこでミラーリングが終了してしまいます。再度ミラーリングを開始すればよいのですが、初めてVision Proを使用するゲストにミラーリング開始の操作をしてもらうのはなかなか難しいと思います。なので、体験中の風景を記録に残したい場合は、あらかじめ複数台のiPhone/iPadを用意しておくことをおすすめします。

ホーム画面でイマーシブを体験してもらうだけでも感動が伝わる

時間に余裕があれば、恐竜が飛び出すアプリや、イマーシブに対応したApple TV+の映像なども体験してもらえれば最高ですね。

しかし、あまり時間がない場合や、サクッとVision Proを体験できれば良いケースでは、ホーム画面をみてもらうだけでも割と感動が伝わります。

https://www.apple.com/newsroom/2024/01/apple-previews-new-entertainment-experiences-launching-with-apple-vision-pro/

実際よしもとの芸人さんにVision Proを体験いただいた際も、ホーム画面に映ったヨセミテを見て「山でけぇ!!」と喜んでいただけました。

(ラジオの生放送直前だったこともあり、本当にホーム画面を10分ほど見てもらっただけでした)

汚れが気になってきたら清掃を

Vision Proを複数人で使っていると、どうしても汗や皮脂などの付着が気になってくると思います。毎回、けば立たない乾いた布で拭くようにはしているのですが、匂いが気になる場合は水洗いもできるようなので、下記記事を参考に清掃してみることをおすすめします。

Apple Vision Proを清掃する - Apple サポート (日本)

おまけ:ぶっちゃけVision Pro買ってよかった??

結論から言うと「買ってよかった」です。

上記のポストでも触れたのですが、外出先で景色を撮る際、Vision Pro用に空間ビデオとパノラマ写真を撮るという楽しみが増えました。

とくにパノラマ写真は後から見返すと、本当にそこにいるかのような感覚が味わえます。今まであまり使い道のなかったパノラマ写真が、ここにきて大活躍するとは思いもしませんでした 😂

また、過去に取った古い動画もDepthify.aiというサービスを使えば、空間ビデオにコンバートしてくれます。これを使って、子供が赤ちゃんだった頃の動画を空間ビデオにしてはVision Proで懐かしむ、という使い方をしています。

www.depthify.ai

写真や動画を撮る習慣が今後もなくならないのと同様に、この先もVision Proで映像を楽しむ習慣はなくならないと思っています。

2023年を振り返る

時の流れは早い!!

宮崎県青島にて人生初のテイクオフ

というわけで、2023年を振り返ってみたいと思います。

2022年の振り返りはこちら


仕事面

昨年に引き続き、NFT関連のプロダクトに多く携わりました。

prtimes.jp

prtimes.jp

今年は自分たちのサービスというよりは、他社のプロジェクトに技術面でサポートさせていただく機会が多かったように思います。今まで自社サービスが中心だったので、社外とのコミュニケーション面など多くのことを学びました。

来年は講談社様、ピクシブ様の協力のもと「NIZI.JP」というサービスもリリース予定なので、興味のある方はぜひ使ってみてください!

prtimes.jp

会社でMVPを頂いた

たいへんありがたいことに今年もMVPを頂きました🎉

なんと2回連続の受賞らしいです。Valueを発揮できる環境に身を置けることを大変嬉しく思います。これからもやっていきます💪

副業

今の会社にはもう5年ほど在籍しているのですが、同じ環境に長くいるとどうしても視野が狭くなりがち、という課題がありました。ちょうどそんなとき、TimeTree社で働く元同僚の id:gonsee から声を掛けていただき、11月から業務委託としてiOSアプリの開発をお手伝いしております。約2年ぶりにSwiftをガッツリ触っていますが、やはりiOSアプリ開発は楽しいです。

また、朝会の進め方やSlackの雰囲気など、会社が違うだけでこんなにも違うんだなーというのを再認識しました。

ひとつ例を挙げると、TimeTreeさんのiOSチームは本当に仲が良く(もちろん他のチームもみんな仲良しです!)、毎週の定例でも半分は雑談をしているのには驚きました。一人ずつ今週やったことを共有する際に「アイスブレイク」というコーナーがあって、そこで「⚪︎⚪︎に行ってきた」「⚪︎⚪︎が美味しかった」など、業務とは関係ないことを話せる時間が4分ほど用意されているんですね。だからメンバーも安心して雑談に時間が割ける。さらにその雑談部分が社内に共有される仕組みになっているのは面白いです。

詳しく知りたい方はこちら!

timetreeapp.com

Studio Display買った

前から気になっていたAppleのStudio Displayをついに買ってしまいました!

www.apple.com

ディスプレイは映り込みが少ない「Nano-textureガラス」も選択できましたが、ピカピカした画面が欲しかったのと、黒の発色が良いとのレビューを見たので、敢えて「標準ガラス」を選択しました。しばらく使っていますが、反射は全く気になりません*1

ディスプレイの高さを調整する機会も実はほとんどないので、スタンドは「傾きを調整できるスタンド」で十分でした(5万円の節約!)

内蔵のスピーカーも重低音がしっかりしていて、音楽を聴くのが楽しみになりました。

総合評価としては⭐️5です。今年買ってよかったもの第1位と言っても過言ではないです。

プライベート

初の出演映画が公開される

私が出演する映画「天尊降臨ヒムカイザー THE MOVIE」が、8/18より宮崎県内の映画館にて公開されました🎉

良い感じに隠れていますが、ちゃんといます。

当初は1ヶ月のみの上映予定でしたが、好評につき10月下旬までのロングランとなりました👏

「映画のエンドロールに自分の名前が載る」という夢も叶いましたし、とても良い経験になりました🌟関係者の皆様、そして映画をご覧いただいた皆様、本当にありがとうございました!

サーフィンをはじめた

昨年の記事で「2023年の目標」にも掲げた通り、ついにサーフィンデビューしました🏄

持ち前の運動音痴を発揮し、1回目はまったく立つことができませんでした。

しかし、翌月のリベンジでようやく立ち上がることができました🎉

40過ぎたおじさんでもなんとかなるもんですね。

ヘラクレスオオカブトを育ててみた

こちらも「2023年の目標」のひとつですが、ずっと育ててみたかったヘラクレスオオカブトふるさと納税でお迎えしました。

日本のカブトムシとは違い、ヘラクレスオオカブトは成虫になっても1年ほど生きられます*2。今回お迎えしたヘラクレスも2022年12月には羽化(さなぎから成虫になること)しており、我が家に届いた4月から11月まで生き続けてくれました。

7ヶ月間という短い期間でしたが、大切な時間をありがとう!🥺

キックボクシングをはじめた

映画に出るということもあり、実は10キロほどダイエットしていたのですが、筋肉も一緒に落ちてしまった感がありました。そんな中、Instagramで良さそうなキックボクシング教室を発見し、これを機にキックボクシングを始めました。

実はもともと空手と少林寺拳法をやっていたこともあり、スイッチからのミドルキック*3も割とすぐに習得することができました。

また、自分自身がキックボクシングを経験することにより、格闘技の試合を観る際も、より楽しめるようになりました。

週一ペースで現在も続いているので、来年も楽しく続けていきたいと思います🥊

来年の目標

さて、最後に来年の目標を宣言して締めたいと思います。

  • ソフトウェアエンジニアでありたい
  • NHKのど自慢大会に申し込む(宮崎開催があれば)
  • 息子と一緒にマラソン大会に出る

皆さま良いお年をお迎えください🎍

*1:映り込みが激しかったThunderbolt Displayと比較すると、標準ガラスは驚くほど思うほど反射が少ないです

*2:日本のカブトムシは羽化後2〜3ヶ月生きると言われています

*3:瞬時に足を入れ替えることにより、構えの前足でミドルキックを打つことができる(普通は後ろ足で蹴りますよね)

Gitで不要になったリモートブランチを削除するタイムを設ける

マージ後にブランチを自動削除する運用にしていても、なぜか残ってしまうブランチたち。

↑こうなっていると目的のブランチに辿り着くのに時間がかかるので、特別な理由がない限り不要になったブランチは削除したほうがよい

とはいえ、そのブランチが不要かどうかは、作った本人にしか判断できない問題も生じる。そこでおすすめなのが、定期的に「不要になったリモートブランチを削除するタイム」を設けること。

原始的すぎてビックリしたかもしれないが、もっとも確実な方法だと思う。

自分が作ったブランチは「Yours」タブに集められるので、

次のようにURLも載せてあげると親切だろう。

https://github.com/(プロジェクト)/(リポジトリ)/branches/yours
から不要なブランチをポチポチ消していってね!

また、長い間放置されているブランチは「Stale(=新鮮でない)」タブに集められる。

「⚪︎ヶ月以上使われていないブランチは削除する」のような基準を設けても良いかもしれない。

おまけ:リモートで消されたブランチがローカルに残ってしまう件を解消する

リモートのブランチがスッキリしても、ローカルには不要なブランチが残り続けてしまう。そんなときは下記コマンドでローカルに残ったブランチを一掃できる。*1

$ git remote prune origin

*1:git fetch --prune でも削除できるらしいが、どちらが良いのかはわかっていない

PHPカンファレンス福岡 2023 #phpconfuk に参加してきたよ

4年ぶりに開催されたPHPカンファレンス福岡に行ってきました。

phpcon.fukuoka.jp

今年で4回目の参加です。会場はもちろん福岡ファッションビル

オープニングトークには間に合わず!

今年もカンファレンスTシャツを頂きました。私が到着した頃にはもうMサイズしか残っていませんでした。大人気!

今年もこのTシャツを着てウロウロしていました

今年も素晴らしいセッションが盛り沢山でした。そのうちいくつかをピックアップしたいと思います。

福岡に来たらとりあえず食べる長浜ラーメン



伝えたい!オフラインのカンファレンスに参加するメリットと参加してから200%楽しむために実践してほしいこと

登壇者:kotomin_m さん

speakerdeck.com

ことみんさんによる発表です。カンファレンスに参加するメリットや、当日聞くセッションの選び方、カンファレンスで話しかけるときの鉄板フレーズ集など、初めてカンファレンスに参加する方にも優しいトークでした。私自身、コミュニケーションがあまり得意な方ではないので、具体的な会話例はとても参考になりました。

レガシー回避のPHP開発術:保守性の高いアプリケーションを作る方法

登壇者:hanhan1978 さん

speakerdeck.com

カオナビ富所さんによる発表です。

"レガシー回避のPHP開発術" というタイトルでしたが、技術的な内容というよりは、チームや組織の話が多かった印象です(個人的には良かった)。

45分のトークでしたが、スライドは200枚を超えており、富所さんの経験やノウハウが詰まった盛りだくさんの内容でした。

個人的に刺さったのは「改善しないと、改善されないんだよ?」 という耳が痛いワードや、「人間関係の再構築」に意外と時間がかかる、という内容でした。スライドが公開されたらぜひ読んでいただきたいです。(追記:スライド公開されました)

制約の力: 可能性を狭めるアプローチ

登壇者:shin1x1さん

speakerdeck.com

PHPの現場でおなじみの新原さんによる発表です。

  • 「可能性を狭める」つまり制約を与えることが、可読性やメンテナンス性の向上につながる
  • 制約を与えることで、ソフトウェア開発の複雑さを減らし、本質的な複雑さに立ち向かっていこう

という内容でした。

PHPといえば、次のような関数があった場合、

function add10($v) {
    return $v + 100
}

引数 $v には数値もBoolもセットできてしまいますが、「$v は数値である」という制約を与えるにはどうすればよいか?という具体例がわかりやすかったです。型宣言の無い時代のPHPしか触ったことのない自分にとっては、とても勉強になる内容でした。

型宣言の例以外にも、ライブラリの影響を限定する例など、まさにPHPの現場で活用できそうな内容でした。

さいごに

久々のオフラインイベント参加でしたが、会場の雰囲気やノベルティ配布など、やはり現地参加は良いもんだなーと改めて感じました

PHPカンファレンス関係者の皆様、今年も楽しいイベントをありがとうございました!

とても楽しかったよ!!

来年もまた会いましょう😄

はてなブックマークしたページをTwitterにシェアしてくれるアプレットを作りました

2023.4.26 追記:ブコメもツイートに含めることができるようになりました!すでにお使い頂いている方は、もう一度Connectから再設定してください🙇🏻

はてなブックマークTwitter連携が使えなくなってしまったので、IFTTTのアプレットを作りました。

使い方

ブックマーク時、コメントに「#tw」を入力することでTwitterにシェアしてくれます(#twは別のワードにカスタマイズ可能)

インストール

次のURLにアクセスし、Connectスイッチをオンにします。

ifttt.com

ツイートのトリガーとなる文字列 #tw は自由にカスタマイズできます。

Feed URLの (user_account) の部分を自分のアカウント名に書き換えてください。

デフォルトでは {コメント} / {ページのタイトル} {URL} という形式でツイートされますが、Tweet textを書き換えることで、ツイート本文をカスタマイズできます。

制限事項

  • IFTTTの仕様により、ブックマーク時のコメントはツイート本文に含めることができません -> 2023.4.26 コメントにも対応しました!
  • IFTTTの無料プランではツイート送信までに最大1時間の遅延が発生します
  • Twitter APIの仕様変更により、本アプレットが動作しなくなる可能性があります

2022年を振り返る

今年も色々あったなぁ

門川神社からの景色
宮崎県 門川神社から

そんなわけで、2022年を振り返ってみたいと思います。

仕事・スキル面

ブロックチェーン分野へ

今年の大きな変化として、技術分野をブロックチェーン領域へシフトした、というのがあります。Ethereum等は全く未知の分野でしたが、半年間でなんとかSolidity でスマートコントラクトを書けるぐらいまでにはなりました。自分が書いたコードでトランザクションが動き、ブロックチェーンにデータが書き込まれる体験は本当に面白いです。

12月にはNFT関連のプロダクトである「dango」もベータリリースしました。dangoはgiveaway*1をかんたんにするサービスです。当選後のNFT譲渡(Transfer)までサポートしているので、ぜひ使ってみてください !

dango.ooo

web3ハッカソンにも参加

11月には日本最大級のweb3ハッカソンが開催されるということで、私も参加しました。NFT関連のプロダクトを1番乗りで提出しましたが、残念ながら決勝進出はならず。しかし、なにより「参加」することに意義があったので良しとします。

久しぶりに勉強会で発表

ちょこちょこweb3コミュニティにも顔を出すようになり、Solidity-jp さん主催の勉強会に登壇者として招いて頂きました。私以外の登壇者の面々が豪華で、発表内容も非常にレベルが高いイベントでした。著名な方々に混じって登壇側に立てたのはとても良い経験になりました。

solidity-jp.connpass.com

Next.js

今年使い始めた技術としてNext.jsがあります。Next.jsはReactをベースに開発されたフロントエンドフレームワークです。私はReact未経験でしたが、チュートリアルがしっかりしているため、スムーズに使い始めることができました。

nextjs.org

また、Next.jsに慣れるためには、ひとつ個人でアプリを作ることが手っ取り早いということで、ひとつプロダクトもリリースしました。

NFT Trade スクショ
NFT Trade

残念ながらまったく使われませんでしたが、それも含めて勉強になりました。

会社でMVPを頂いた

ありがたいことに今年は全社MVPを頂きました🎉

評価してもらえる環境に身を置けることを大変嬉しく思います。これからもやっていきます💪

プライベート

ご当地ヒーロー映画に出演が決定

ご当地ヒーロー作品が映画化されるということで、出演者を県民から募集していることを知りました。演技経験は問わないそうなので、私もオーディションに応募してみることに。

演技は全くの未経験でしたが、なんとか1次選考を通過。最終選考は人通りも多い宮崎駅前の特設ステージで行われました。寒さと緊張で終始震えていましたが、見事に合格を勝ち取ることができました🎉

  • 台詞をしっかり暗記してきたこと
  • 大勢のプレッシャーに負けず、台詞が飛ばなかったこと
  • どこにでもいるお父さんっぽいこと

が勝因だったようです。

集合写真
天尊降臨ヒムカイザー THE MOVIE

ついに 映画のエンドロールに自分の名前が載る、という夢が叶いそうです🌟

ミニ四駆大会で優勝

今年の目標に「ミニ四駆大会で優勝する」というのがありましたが、4月に開催されたミニ四駆大会でついに優勝できました🏆

優勝したときの顔
念願の初優勝

かなり運が左右するレースでしたが、それも勝負のうちということで、良しとします。

来年の目標

さて、最後に来年の目標を宣言して締めたいと思います。

皆さま良いお年をお迎えください🎍

*1:NFTを他の人に無料プレゼントすること

Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient

SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで

👆こちらの本のサンプルを試していると大量に出てくる警告です。

constructor() public {
    _owner = msg.sender;
}

どうすればよい?

public を削除します。

constructor() {
    _owner = msg.sender;
}

solidity - Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient - Ethereum Stack Exchange

解説

Solidity 0.7.0からコンストラクターVisibility ( public / external ) は不要になりました。

Visibility (public / external) is not needed for constructors anymore:

Solidity v0.7.0 Breaking Changes — Solidity 0.7.0 documentation

本の執筆時点ではまだ必須だったのだと思われます。