コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

ZoomでiPhoneやiPadをワイヤレスWebカメラ代わりに使えるアプリ「EpocCam」

Zoomでカメラつけたいけど有線だと写せる範囲が微妙だな…という人向け

使うアプリ

「EpocCam - Webカメラ for Mac & PC」をApp Storeで

使い方

  1. iPhone/iPad側にアプリを入れて起動する
  2. ドライバを入れたPCでZoomを立ち上げる
  3. アプリが撮影している映像がビデオ代わりになる

補足事項

  • ドライバを入れる必要がある
  • 同じネットワークにつながる必要があるのでWiFi環境が必要
  • 無料版だと画質はそこまでよくないのでもっと画質欲しい場合はProのアプリをつかう選択肢もある

参考リンク

動的型付けと型推論の違いをざっくりまとめる

ざっと眺めるとミスリードしがちなのでわかりやすい違いを述べるだけの話。

動的型付けとは

文字通り「動的に」「型をつける」というプログラミング言語の機構。

言語として実行するときに型が決定するので、ソースコード上では型を特段指定しなくても値の内容から判断して型を決定づける。

例えばJavaScriptの場合は

// ただ足し込むだけの関数を作る
function plusing(x,y){ return x+y; }

// 文字列同士を設定するとtypeは文字列になる
typeof(plusing("a","b"))
// => "string"

// 数値を設定するとtypeは数値になる
typeof(plusing(1,2))
// => "number"

(相対する考えの)静的型付けとは

対象となる静的型付けの言語は、変数を宣言するときに必ず型を指定しないといけない。厳格に型をしていすることで意図違いのものが混入することを防ぐことができるが、動的型付けほど自由度の高い使いかたはできない。

型推論とは

静的型付けの場合は変数宣言した型を決めなければいけないが、代入される値から推察して値を確定させるのが型推論

一番わかりやすい例は初期値に使う場合の例。

Go言語で例を出す。

varのあとに int として型を宣言している

package main

import (
    "fmt"
)

func main() {
    var suji int
    suji = 10
    suji = suji + 20
    fmt.Println(suji)
}

ただ型推論を使うと初期値から型が自明になるので、宣言しなくても解釈される。

package main

import (
    "fmt"
)

func main() {
    var suji = 10
    suji = suji + 20
    fmt.Println(suji)
}

そのため、以下の場合は推論材料がないのでエラーになる。

package main

import (
    "fmt"
)

func main() {
    var suji
    suji = 20
    fmt.Println(suji)
}

違いはなにか

大雑把に動きを見ると親しい動きをするので同じものと思えてしまうが、型推論は文字通り「型が推論できる材料が揃わないとコンパイルエラーになる」なので、入る値が推定できないような書き方は許容されないのでその点がわかりやすい違いとなる。

参考リンク

MacにてZoomで共有するときなどに通知を出さないようにするアプリ「Muzzle」

Zoom使いがおおいので便利だと思いメモ

紹介するアプリ

Muzzle - silence embarrassing notifications

便利ポイント

  • 通知を見せない手法として「おやすみモード」があるが毎回設定するのは忘れる
  • Muzzleは起動しておくと「画面共有」に類するものをしているときだけ通知をしなくなる、そのためZoomなどのビデオチャットで通知が出るなどを防げる
  • 拡張ディスプレイには反応しないのでその点判別してくれるあたりも便利

参考リンク

MacのWifiの接続順番は調整できる

知らなかったのでトリビア

Wifiのつなぐ順番

MacWifiにつなぐ順番は設定の上からつないでいく。そのため優先的につなげたいものは上に上げればOK

f:id:shinkufencer:20191110171909p:plain
この画面でドラッグアンドドロップで順番変更すればOK

参考リンク

ASCII.jp:Macでよく使うWi-Fiへ優先的に接続するテク

ワークアラウンドの意味をざっくりまとめる

言葉の響きとイメージが外れているので書き残すシリーズ

意味

work と around をくっつけた造語で「回避するための方法」という意味で使われる

システム開発においては

回避方法の延長線上で、「一時的な応急処置」のことをworkaroundという言葉で使う。そのため話者によって文脈が若干ことなる可能性がある。

参考リンク

bashでランダムな数値割り出しを実現する

そういえばやり方知らなかったのでメモ

環境

$ sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

やり方

いろいろやり方はあるが環境変数 $RANDOM を使うのが一番簡単。$RANDOM は0から32767の値を出すのでそれをよしなに利用する。

普通に数値が32767まで出ていい場合はそのまま使えばOK、例えばdemo.shに

echo $RANDOM

とすれば

$ sh demo.sh 
28213

のように出力される。

もし数値を絞りたい場合は余り算出方法でやればいいので200まで出したい場合は

echo $((RANDOM%+201))

とすれば

$ sh demo.sh 
96
$ sh demo.sh 
200
$ sh demo.sh 
150

のように任意数値が出せる。

参考リンク

変数名などにm_やg_を付ける意図

久しぶりに見たけどこの文化体系どこだっけ…という話。

変数の命名規則として

変数名で以下のような名付けをすることがある

g_position
m_location

これの棲み分けは

  • g_ と付ける場合はグローバル変数の意味でg
  • m_ と付ける場合はメンバ変数の意味でm

元ネタ

この命名記法自体には名前があり、ハンガリアン記法という。詳しくは下記Wikipedia参照。

ハンガリアン記法 - Wikipedia

活きる場面と今

IDEがそこまで補足してくれなかったり、1つのクラスが大きい時代としては、変数のアクセス領域を名前から判断する上では大変有用だった気がします。

ただ今だとアクセス範囲を狭めたりする場面のほうが多く、また言語によっては明示的に公開範囲を絞れるので、かえって冗長になるプレフィックスかもしれません。

参考リンク