20201128のMacに関する記事は11件です。

MacデビューするのでWindowsでよく使うショトカを調べてみた

M1チップMacBookAirを買うので、準備としてWindowsでよく使ってるショトカを調べました:relaxed:

因みに「⌘」はキーボードにある「⌘(Command)キー」のこと、北欧の史跡などを示す交通標識が元になっているらしい、意味が分からない。

コピペ系

・「コピー」  = ⌘+C
・「貼り付け」 = ⌘+V
・「切り取り」 = ⌘+X

操作系

・「取り消す」 = ⌘+Z
・「やり直す」 = ⌘+Z+Shift

ファイル操作系

・「開く」     = ⌘+O
 →Enterだと「名前の変更」になることにビビった

・「保存」     = ⌘+S
・「ゴミ箱に移動」 = ⌘+Delete
・「複製」     = ⌘を押しながらドラッグ&ドロップ

カーソル移動系

・「行末に移動」 = Ctrl+E
・「行頭に移動」 = Ctrl+A

その他

・「デスクトップを表示」   = ⌘+F3
・「スクショ」        = ⌘+F3+Shift

・「エクスプローラーを表示」 = ⌘+N
・「新しいフォルダを作成」  = ⌘+N+Shift

・全選択 = ⌘+A
・検索  = ⌘+F

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Karabinerの便利な機能を使おう

complex_modifications

動機:macbookのぺたぺたキーボードに耐えかねて外付けキーボードを買ったのでいろいろ便利に設定したかった.
問題:痒いところに手を届かせたいのにimportできるルールが微妙

 というわけでcomplex_modificationsに自作のjsonファイルを放り込むことにした.
 とりあえずcaps_lock単押しをreturnに変えて,長押し中の挙動を設定した.(iとoを文字削除に当てたがこれが意外と快適)
 シェルスクリプトを埋め込めるので,選択範囲のurlを開いたり検索したりできるようにした.(結構雑)
 他にもいろいろ設定したが,環境依存がありそうなのと量が多いのとで今回は割愛.(半角/全角キーとかいらないからfnキーに変えてごちゃごちゃやってる)

 参考までに代表的な部分だけ抽出したのが下のやつ.

sample_caps.json
{
  "title": "caps_lock modification",
  "rules": [
    {
      "description": "[Vim-like mode] trigger: <caps_lock> held down",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock"
          },
          "parameters": {
            "basic.to_if_alone_timeout_milliseconds": 200,
            "basic.to_if_held_down_threshold_milliseconds": 10
          },
          "to_if_alone": [
            {
              "key_code": "return_or_enter"
            }
          ],
          "to_if_held_down": [
            {
              "set_variable": {
                "name": "vim_mode",
                "value": 1
              }
            }
          ],
          "to_after_key_up": [
            {
              "set_variable": {
                "name": "vim_mode",
                "value": 0
              }
            }
          ]
        }
      ]
    },
    {
      "description": "------- [Vim-like mode] hjkl => arrow",
      "manipulators": [
        {
          "from": {
            "key_code": "h",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_arrow"
            }
          ],
          "conditions": [
            {
              "name": "vim_mode",
              "type": "variable_if",
              "value": 1
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "------- [Vim-like mode] yuiop => copy, cut, backspace, delete, paste",
      "manipulators": [
        {
          "from": {
            "key_code": "y"
          },
          "to": [
            {
              "key_code": "c",
              "modifiers": [
                "left_command"
              ]
            }
          ],
          "conditions": [
            {
              "name": "vim_mode",
              "type": "variable_if",
              "value": 1
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "------- [Vim-like mode] tab,space => option, escape",
      "manipulators": [
        {
          "from": {
            "key_code": "tab"
          },
          "to": [
            {
              "key_code": "left_option",
              "modifiers": []
            }
          ],
          "conditions": [
            {
              "name": "vim_mode",
              "type": "variable_if",
              "value": 1
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "------- [Vim-like mode] gf => launch, find (Chrome)",
      "manipulators": [
        {
          "from": {
            "key_code": "g"
          },
          "to": [
            {
              "shell_command": "open -a 'Google Chrome.app'"
            }
          ],
          "conditions": [
            {
              "name": "vim_mode",
              "type": "variable_if",
              "value": 1
            }
          ],
          "type": "basic"
        },
        {
          "from": {
            "key_code": "f"
          },
          "to": [
            {
              "key_code": "c",
              "modifiers": [
                "left_command"
              ]
            },
            {
              "shell_command": "sleep 0.1; open \"$(pbpaste)\" || open \"https://www.google.com/search?q=$(pbpaste | ruby -e 'require \"cgi\"; print CGI.escape($<.read.chomp)')\""
            }
          ],
          "conditions": [
            {
              "name": "vim_mode",
              "type": "variable_if",
              "value": 1
            }
          ],
          "type": "basic"
        }
      ]
    }
  ]
}

 これを下のディレクトリに放り込めばkarabinerから追加できる.
$HOME/.config/karabiner/assets/complex_modifications

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Guideline 4.2 - Design - Minimum Functionality からの脱出

自己紹介

これまで MS/C#系の世界でしたが、2020年より mac/iPhone/Swift をはじめました。何もかもわからないことだらけでとまどうばかりです。Qiita の投稿も初めてですが、よろしくお願いします。

Guideline 4.2 - Design - Minimum Functionality とは

今回、3つ目となる iPhone アプリを申請したところ、Guideline 4.2 - Design - Minimum Functionalityでリジェクトされてしまいました。

メッセージは、次の通りです。

We found that the usefulness of your app is limited by the minimal amount of content or features it includes.

つまり、Guideline 4.2 は、Qiita: どこまでショボいアプリがAppleの審査に通るのか試してみたにあるように、いわゆる最低限の機能が無く便利さが限定的であることが原因で、一度リジェクトをくらうとなかなか抜け出せないため、恐れられているという記事をいくつか見かけました。もうこの時点で、半分心が折れかかっていましたが、幸いなことにアプリを修正することなく一発で抜け出すことができました。今回 Guideline 4.2 をどのように脱出できたのか説明します。多少なりともご参考になればと思います。

アプリ概要と開発のきっかけ

秩父雲海検出 アプリは、機械学習により により、秩父の雲海の発生を検出する無償のアプリです。秩父雲海ライブカメラの画像を定期的に機械認識し、雲海が発生しているかどうか検出を行います。必要に応じて、雲海が発生した場合に、通知を行うことができます。また、検出間隔の変更を行うことができます。

このアプリの開発のきっかけですが、私は神奈川県相模原市在住ですが、秩父の雲海がとても綺麗だという噂を聞き、一度見に行きたいものだと思っていました。しかし、雲海は前日が雨で、明け方に湿度100%で無風に近い状態が必要です。ベストシーズンは10月〜11月で、お目にかかるのが難しい自然現象です。相模原市から、秩父までは車で2〜3時間かかるので、そう簡単に見に行くわけにはいきません。そこで、いつ秩父の雲海を見に行けばいいのかといろいろ調べていたところ、秩父雲海ライブカメラがあり、この画像から雲海を機械学習させて、通知するようにすれば、寒空の中で延々待たなくとも済む、と思ったのがきっかけです。

4.2リジェクトの原因

実は、今回、2日前に iPhone/iPad 版の秩父雲海検出を先行して申請し、承認されていました。4.2でリジェクトされたのは、iPhone/iPad 版と全く同一機能の macOS 版でした。このため、4.2リジェクトされた理由は、レビューワーの違いによる、考え方の違いが原因だろうと想像がつきました。もし、最初から、4.2リジェクトをくらっていたら、余計な機能を追加するような迷路に陥ったかもしれません。

レビューワーの視点に立ってみると、なぜ4.2でリジェクトするのか、次のポイントが容易に想像できます。

  • アプリの利用者の対象地域が狭く、埼玉県秩父市近郊のみ
  • ライブカメラの画像を表示して、雲海が発生した時に通知を出すだけの単機能
  • レビュー時には、ほぼ間違いなく雲海は発生しておらず、秩父市の風景と時計が表示されているだけ
  • UIに表示されている秩父市の風景はデフォルトで10分間更新されない

つまり、利用シーンを知らなければ、レビューワーにしてみれば、限定地域だし、ウェブカメラで代替できるし、見ていても変化なくって面白くない、となるのも尤もな話です。

また、アプリ申請時のレビューワーへのメッセージの項目には、どのような機能か、どのようにテストするのかを中心に記載しましたが、アプリの利用シーンやメリットは、あまり訴求していなかったのも原因の1つではないかと思っています。

4.2リジェクトへの対応

4.2リジェクトの原因が推定できたので、次の点を訴求するメッセージを送付しました。

  • 秩父の雲海はとても綺麗で、多くの人が雲海を見に訪れる
  • 雲海の発生は稀であり、雨の翌日、寒い夜に、風がなく、湿度が 100% の時だけに発生
  • 多くの人が山の上の観測ポイントから、凍えながら雲海の発生を待っている
  • このアプリがあれば、家で雲海の発生通知を待ってから、車で雲海を見に行けるので、とても便利

さらに、このことを補強するために、次のような画像のURLを複数添付し、秩父の煌めく雲海はとても美しく、多くの人が訪れることを強調しました。

chichibu_unkai_oghihara_osamu_1.jpeg
Copyright 荻原修司さん @osamuchichibuun

chichibu_unkai_oghihara_osamu_2.jpeg
Copyright 荻原修司さん @osamuchichibuun

結果

結果として、メッセージ送付後、30分ほどでレビュー再開となり、さらに3分後に承認されました。時系列は次の通りです。

  • 2020/11/23 03:24 iPhone, iPad版: 承認

    この時点で、iPhone, iPad版は承認されていた。

  • 2020/11/25 01:01 macOS版: レビュー開始
  • 2020/11/25 01:50 macOS版: 4.2でリジェクト
  • 2020/11/25 10:17 macOS版: 反論のメッセージを送付
  • 2020/11/25 10:39 macOS版: レビュー再開のメッセージ
  • 2020/11/25 10:42 macOS版: 承認メッセージ

おわりに

アプリの申請の際には、レビューワーへのメッセージに、アプリの利用シーンやメリットも訴求しておいた方が良さそうです。また、4.2リジェクトをとなってしまった場合にも、なぜリジェクトになってしまったのか、レビューワーの立場で考えてみると、解決策が見えてくるかもしれません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac でログインシェルが起動できなくなったら

tl;dr

ターミナルアプリで無事に起動するはずの /bin/bash などの OS 標準 shell を指定して起動する。
設定方法は以下の通り。

  • ターミナル.app: 環境設定 -> 一般 -> 開くシェルコマンド(完全パス)
  • iTerm2: Preference -> profile -> general -> CommandCustom Shell

どしたの?

homebrew を update / upgrade したら homebrew でインストールした zsh が起動しなくなった。
chsh してしまってたので困った。

.profile とか .rc のカスタマイズに失敗したときはエディタで編集して復旧できるはずです。

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】gitが入ってるのにタブ補完がならないあなたへ

 はじめに

この記事を読んでる方は、gitでswitchする時にブランチ名がfeature/hogeだったりで打つのめんどくさいと思い、
タブ補完機能を.zshrcや.bashrcで設定しようとしてみたはずです。
でも、

macの最初から入ってるgitだとならないんですよね。

じゃあどうしたらいいのでしょうか?

結論

brew でgitを入れましょう

たったこれだけです。
最初から入ってるgitは消さなくていいです。

gitをbrewで入れる方法や、.zshrcや.bashrc内の設定方法の説明は、僕よりこのリンク先の方がわかりやーすく説明できると思うので、こちらの方にまかせます(あとは頼んだゾ。。。)
https://hirooooo-lab.com/development/git-terminal-customize-zsh/

最後に

macのデフォルトのgitで必死にタブ補完機能の付け方を探してた自分と同じ人を減らしたくて書きました。
「gitをbrewで入れればいい」って伝えたいだけでなので、文章テキトーです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】zshやbashでgitのタブ補完を設定したのにならないあなたへ

はじめに

この記事を読んでる方は、gitでswitchする時にブランチ名がfeature/hogeだったりで打つのめんどくさいと思い、タブ補完機能を.zshrcや.bashrcで設定しようとしてみたはずです。
でも、

macの最初から入ってるgitだとならないんですよね。

じゃあどうしたらいいのでしょうか?

結論

brew でgitを入れましょう
たったこれだけです。
最初から入ってるgitは消さなくていいです。

gitをbrewで入れる方法や、.zshrcや.bashrc内の設定方法の説明は、僕よりこのリンク先の方がわかりやーすく説明できると思うので、こちらの方にまかせます(あとは頼んだゾ。。。)
https://hirooooo-lab.com/development/git-terminal-customize-zsh/

最後に

タブ補完機能がならなくて原因を探りに探って行き着きました。
そんな自分と同じ人を減らしたくて書きました。
「gitをbrewで入れればいい」って伝えたいだけでなので、文章テキトーです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【備忘録】Jupyter notebookで複数カーネルを設定する方法

  • 製造業出身のデータサイエンティストがお送りする記事
  • 今回は自分の備忘録として記事に残しておきます。

はじめに

複数人で開発する際にMinicondaによる仮想環境を作成して開発することがあります。その中で、Jupyter notebookでなぜかカーネルを上手く設定できないことがありましたので、自分でカーネルを簡単に変更できる方法を備忘録として残しておきます。

手順

仮想環境の作成

condaを使って仮想環境を作成します。下記コードで簡単に設定できます。

# conda create -n 環境名
$ conda create -n env

$ conda info -e

下記のように仮想環境(env)が簡単に作れます。

base                  *  /Users/opt/anaconda3
env                      /Users/opt/anaconda3/envs/env

Jupyter notebookへカーネルを設定する方法

先ほど構築した仮想環境をカーネルに追加します。仮想環境をactivateにして、下記コードで簡単に設定できます。

# conda activate 仮想環境名
$ conda activate env

# jupyter notebookへカーネルを追加
$ ipython kernel install --user --name=env --display-name=env

下記にオプションを整理しておきます。

オプション 内容
--user ・現在ログイン中のユーザーにインストール 
--name NAME ・カーネルスペックの名前を指定 
--display-name NAME ・表示されるカーネルの名前を指定 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【作業高速化】Macターミナルで使えるショートカット【10選】

はじめに

Macのターミナルで、deleteキーを押しっぱなしにして、一文字ずつ消した経験はありませんか?
実はショートカットキーを使うことで、一気に文字を削除することが可能です!
他にも、ショートカットキーで出来ることは、たくさんあります。

ショートカットキーを活用することで、あなたの作業を高速化していきましょう!

環境

・MacOS Catalina 10.15.7
・zsh

ショートカットキー

カーソル移動

キー 意味
control + A カーソルを行頭まで移動
control + E カーソルを行末まで移動
option + → カーソルを1単語右へ移動
option + ← カーソルを1単語左へ移動

カット&ペースト

キー 意味
control + U カーソル位置から行頭までカット
control + K カーソル位置から行末までカット
control + W カーソル位置の1単語をカット
control + Y カットした内容をペースト

履歴検索

キー 意味
control + R 過去に使用したコマンドを検索

その他

キー 意味
control + L 画面をクリア

参考

Macターミナルの覚えておきたい基本情報・ショートカット・コマンドまとめ
https://do-zan.com/mac-terminal-command-shortcut/

最後に

いかがでしたか?
カット&ペーストがMac標準の『control + X』や『control + V』でないなど、少し戸惑ってしまうところもあるかもしれません。
しかし、ショートカットキーを使いこなせば、よりターミナルを高速で使いこなすことができます。
ぜひ、コマンドを一つ覚えるところから始めてみましょう!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOSアプリエンジニアがM1搭載Macを購入するにあたっての検討事項

こんにちは。iOSアプリエンジニアの @zrn-ns です。

今月上旬、Apple独自チップであるM1チップを搭載したMacが登場しましたね。

発表イベント前までは(どうせ性能はIntelには及ばないだろう...)なんて思っていたんですが、実際はとんでもないバケモノ。
お値段据え置きにもかかわらず、既存のMacの中でも最上位モデルにも匹敵するほどの処理性能を持っている上、消費電力もめちゃくちゃ少ない。これまでのMacの歴史を塗り替えてしまうようなものが出てきてしまいました。

普段iOS開発をしている僕としては、すぐにでも購入して試してみたい衝動に駆られたのですが、いかんせん3機種(MacBook Air/Pro, Mac mini)同時に発売されてしまったこともあり、どのモデルを買うか、どのようにカスタマイズするか、かなり迷いました?

今回はiOSアプリエンジニア視点で、どのモデルをどんな構成で購入するか検討していきたいと思います!

? そもそも今M1 Macを買うべきでないユーザ

そもそも、現段階ではまだM1のMacを買うべきではないユーザもいます。

それは、 利用予定のソフトウェアが、まだM1 Macで動作しない ユーザと、
外部ディスプレイを複数接続して作業することを想定している ユーザです。

既にご存知の方も多いとは思いますが、M1チップはこれまでのIntel製チップとアーキテクチャが異なるため、これまでMacで動作していたIntelチップ向けのソフトウェアが動作しなくなる可能性があります。

基本的には Rosetta21 というApple製のトランスレータを使うことで動作させることが可能ですが、全てのアプリが動作するわけではないようなので、その点については注意が必要です。

各種開発ツールのM1 Macへの対応状況については、 @shibukawa さんの記事( https://qiita.com/shibukawa/items/797b7cbb7e530842e6f7 )がよくまとまっているようなので、事前に確認しておくことをおすすめします。
(もちろん今後1〜2年の間にM1チップ向けの対応が進んでいくにつれて、この問題は解消していくはずです。)

また、 Mac miniでは2枚まで、MacBook Air/Proでは1枚までしか外部ディスプレイを接続することができません。
例えばMacBook Air/Proに複数ディスプレイを接続して、クラムシェルモードで運用するような使い方はできないので、注意しましょう。
(来年以降に登場するMacでは改善してほしい?)

? 機種ごとの違い

? GPU性能

今回発表されたMacは、基本的に同じ性能のM1チップを積んでいます。
ただしMacBook Airのうち、 ストレージが256GBモデルは、GPUのコア数が他の機種よりも1つ少なくなっています (その分価格が抑えられています)。

エンジニアとしては高性能こそ正義?なので、基本的にはGPUコア数も多いものを購入したいですが、iOSアプリ開発用途であればそこまで性能差を感じることはないと思うので、ここは個人の好みだと思います。
(動画編集などを行いたい場合や、高解像度モニターに接続したい場合には、GPUコア数が多いものを買っておくのが無難そうですね)

? MacBookの方が省電力性能を体感できる

M1 MacはIntel Macよりも圧倒的に省電力のため、MacBook Air/Proではコンセントがない場所でも長時間の作業が可能です。

Appleの公称値では、MacBook Proは最大17時間のワイヤレスインターネット、MacBook Airは最大15時間のワイヤレスインターネットが可能と記載されています2

実際に使った人のレビューを見ると、MacBook Proでは実測8時間程度の動画編集作業に耐えられるようです。3

長時間外で作業する方にはMacBook Proのほうがいいかもしれませんが、正直8時間も電源なしで作業することなんてほとんど無いので、個人的にはAirでもProでもどちらでも良いかなと思います。

また、M1チップを搭載したMacはほとんど発熱しないらしいです。これまでのMacBookは膝の上に載せて作業するとすぐにアツアツになりましたが、今後はその悩みは解消しそうですね。

? MacBook Air/Proはバッテリーの劣化によるメンテナンスコストが発生する

MacBook Pro/Airはリチウムイオンバッテリーを積んでいるため、バッテリーの経年劣化が発生します。
バッテリー交換費用は13000円程度とそこまで高くはないですが、メンテナンス費を抑えたい人にはMac miniがおすすめです。

ただし、M1チップは「熱」が発生しづらいため、従来のMacBookほどリチウムイオンバッテリーの劣化がしづらい可能性があります。
そういう観点では、バッテリーの交換コストはそこまで心配しなくてよいのかもしれません。

? TouchBar搭載か

MacBook ProにはTouchBarが搭載されていますが、ほとんど使わないですし、個人的には考慮に入れなくていいと思います。早くProからも廃止してほしい
強いこだわりがある人はMacBook Pro一択ですね。

? TouchID搭載か

MacBook Pro/AirにはTouchIDが搭載されていますが、miniには搭載されていません。
スリープ解除時にパスワードの入力を省略できるのはもちろん、ブラウザでのクレジットカード番号を入れる際やAppStoreでの購入、設定の変更時など、色々な場面で本人確認の代替手段として利用できるので、あると結構便利な機能です。

⌨️ Mac miniはモニターやキーボード、マウス、トラックパッドなどの周辺機器の購入が必要

Mac miniにはキーボードやマウス、トラックパッドなどの周辺機器が付属しないので、別途購入が必要です。
MacBook Air/Proを買うことでこのあたりの費用を浮かせられますが、MacBook Air/Proを買う場合は別途USB-Cハブを購入する事になったりするので、割と周辺機器の購入費用はトントンだったりします。

? ディスプレイ接続枚数について

Mac miniは2枚まで外部ディスプレイを接続できるのに対し、MacBook Pro/Airは1枚までしか外部ディスプレイを接続できません。(一部例外あり4
家での作業がメインで、複数の大型ディスプレイで作業したい場合には、Mac miniを選ぶのが無難そうです。

? ファンレスかどうか

MacBook ProとMac miniは排気用のファンが搭載されていますが、MacBook Airはファンレスになっています。
ファンレスだと、高負荷な処理を行った際に排熱が追いつかずに処理性能が低下することがありますが、そもそもM1チップが発熱しにくいため、MacBook Proを使っていてもほとんどファンが回ることは無いらしいです。

そうなると、ファンの有無はあまり重要ではないということになります。

?️‍♀️ 重量やサイズ感について

MacBook AirとProの重量差は110g程度です。
人によって捉え方は違うかもしれませんが、本体重量の10%程度しか変わらないので、その差を体感する機会はほぼ無いと思います。

サイズについてもほぼ同一で、Airの方がパッと見薄く見えますが、厚い部分の差はほぼありません。(というか寧ろAirのほうが厚い?)

? カスタマイズについて

? メモリ8GBモデルか、16GBモデルか

最近はメモリ32GBや64GBが当たり前だったので、メモリが16GBまでしか選択できないことには不安に感じましたが、M1チップに搭載されている ユニファイドメモリ はこれまでのメモリの概念とは少し異なるもののようです。
またSSDもこれまでの2倍程度に高速化しており5、スワップが発生しても高速に動作するため、メモリ不足によりスピードの低下を体感することはほとんど無さそうです。

Xcodeでのビルド時間はやはり16GBの方が早いらしい6ですが、そこまで大きな差ではないので8GBでも十分使えるような気はしています。
しかしメモリは後から拡張できない部分なので、多少でも不安があるのであれば、後悔しないためにも16GBに拡張しておくことをおすすめします。

? SSDの容量について

iOSアプリ開発で使用する場合、プロジェクトの規模にもよるかと思いますが、基本的には1TB程度容量があると容量不足になることはほぼ無いと思います。
さらに言えば、こまめに不要なファイルを削除する人であれば、512GBでも十分かと思います。

自宅のメインPCとして使用する場合や写真や音楽、動画ファイルを保存したいなどの用途がある場合については1TBで収まらない可能性もありますが、その場合は外付けのSSDを別途購入する方がコスパは良いかと思います。

? 価格について

Apple公式サイトにて、下記のスペックでカスタムした場合の各Macの価格を比較してみます。

  • メモリ: 16GB
  • ストレージ: 1TB
機種 GPUコア数 金額(税抜) 金額(税込10%)
Mac mini 8 132,800円 146,080円
MacBook Air 13インチ 7 164,800円 181,280円
MacBook Air 13インチ 8 169,800円 186,780円
MacBook Pro 13インチ 8 194,800円 214,280円

ちなみに、メモリを8GBにすると -20,000円、ストレージを512GBにすると -20,000円になります。

その他検討材料

? 納期

AppleStoreでは2020/11/28(土)現在、カスタマイズしなければ12月上旬、カスタマイズすると12月中旬から下旬頃には配送してくれるようです。
Apple以外のオンラインショップ、量販店で購入すれば、ポイントももらえます。
カスタマイズ不要でとにかく早くほしい人は、量販店で購入するのもアリかと思います。

結論どのモデルを買うのか

この記事を書いたあと、MacBook Air13インチ(GPU8コア、メモリ16GB、SSD1TB)モデル を注文しました。

MacBook ProとAirを比較すると、Proのほうが優れているのはバッテリー持ちくらいで、その差に3.5万円を払うのは勿体ないかなと感じます。
MacBook AirとMac miniを比較すると、MacBook Airは3.5万円ほど高いですが、TouchIDが搭載されていますし、ふとしたタイミングで外に持ち出すことができます。

そして何より、Mac miniではM1チップの省電力性能を体感する事ができません! せっかくこのタイミングで買うのなら、バッテリー搭載のモデルを購入したいですよね。?

ただ、外に持ち出す予定がなく、複数の外部モニターを繋いで作業したい人には Mac miniがオススメかなと思いました。
もし急いでいない場合は、来年以降に登場するであろうモデルを待つのも良いかもしれませんね。


ちょっと出遅れた感じがありますが、少しでも皆さんのMac選びの参考になれば幸いです。
ではでは?

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ファイルタイプと文字化けした時の対処法inMac

概要

ファイルを開いて、、
→�x�����v

!????、なんだこれ・・・?
となった人に向けた記事になります。

この問題の対処の方針は2段階で
1,まず文字コードを確認する(動く方と動かない方)
2,文字コードを変更する。
でなんとかできます。

1, 文字コードを確認する

下記コマンドで文字コードを確認します

// hoge.csvの文字コードを確認する
file --mime hoge.csv

こんな感じの結果が出力されます。
unknown-8bitはShift-JISのことです。

hoge.csv: text/plain; charset=unknown-8bit
hoge.csv: text/plain; charset=utf-8

正しいファイルの文字コードと間違っているファイルの文字コードが確認できたら、
次のステップのコマンドにより文字コードを正しく修正します。

2, 文字コードを変更する

文字コードを変更するにはnkfコマンドを使用します。
オプションにより、変換後の文字コードを決めることが可能です。

// 文字コードをUTF-8に変換 -wオプション
nkf -w --overwrite hoge.csv

// 文字コードをShift-JISに変換 -sオプション
nkf -s --overwrite hoge.csv

終わりに

どうだったでしょうか・・・?
使いたいファイルが文字化けしてるとびっくりしますよね。
そんな時も焦らず対処しましょう!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】任意のPHPバージョンをphpbrewで取得してみた

はじめに

MacはデフォでPHPがインストールされているけど、開発する際に指定したPHPバージョンを使いたい!

しかし、、WindowsのようにPHP公式サイトでダウンロードしPATHを通すことが難しい。。
Homebrewだとバージョンの[x.x.★]の★部分まで選べない。。

phpbrewならバージョンの指定ができ、複数のバージョンを切り替えることができる為、
phpbrewを使って好きなバージョンを取得してみました。

環境

  • macOS 10.15.7
  • Homebrew 2.5.11
  • phpbrew 1.26.0

事前準備

Homebrewというツールを使用するので事前にインストールしておきます。
インストール方法は以下サイトを参考にしました。

Mac Homebrewインストール手順

phpbrew本体のインストール

公式ドキュメントを参考に以下コマンドを実行していきます。

// ダウンロード
$ curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar
$ chmod +x phpbrew.phar

// $PATH の通っているディレクトリにファイルを移動
$ sudo mv phpbrew.phar /usr/local/bin/phpbrew

// セットアップ
$ phpbrew init
$ echo 'source ~/.phpbrew/bashrc' >> ~/.bashrc
$ phpbrew lookup-prefix homebrew

以上を実行したら、$ phpbrewで確認します。

$ phpbrew

  ______ _   _ ____________                   
  | ___ \ | | || ___ \ ___ \                  
  | |_/ / |_| || |_/ / |_/ /_ __ _____      __
  |  __/|  _  ||  __/| ___ \ '__/ _ \ \ /\ / /
  | |   | | | || |   | |_/ / | |  __/\ V  V / 
  \_|   \_| |_/\_|   \____/|_|  \___| \_/\_/  

Brew your latest php!

この表示が出ればOKです。

インストール可能なPHPバージョンの確認

$ phpbrew knownを実行すると、インストール可能なバージョンが一覧で表示されます。

$ phpbrew known

7.4: 7.4.12, 7.4.11, 7.4.10, 7.4.9, 7.4.8, 7.4.7, 7.4.6, 7.4.5 ...
7.3: 7.3.24, 7.3.23, 7.3.22, 7.3.21, 7.3.20, 7.3.19, 7.3.18, 7.3.17 ...
7.2: 7.2.34, 7.2.33, 7.2.32, 7.2.31, 7.2.30, 7.2.29, 7.2.28, 7.2.27 ...
7.1: 7.1.33, 7.1.32, 7.1.31, 7.1.30, 7.1.29, 7.1.28, 7.1.27, 7.1.26 ...
7.0: 7.0.33, 7.0.32, 7.0.31, 7.0.30, 7.0.29, 7.0.28, 7.0.27 ...
5.6: 5.6.40, 5.6.39, 5.6.38, 5.6.37, 5.6.36, 5.6.35, 5.6.34, 5.6.33 ...
5.5: 5.5.38, 5.5.37, 5.5.36, 5.5.35, 5.5.34, 5.5.33, 5.5.32, 5.5.31 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...

今回は " 7.4.5 " をインストールしていきます。

指定したバージョンのPHPバージョンをインストール

$ phpbrew installコマンドを実行し、php-7.4.5をインストールします。
(デフォルトを7.4.5にしたいので、+defaultを末尾に付け足します。)

$ phpbrew install 7.4.5 +default

===> phpbrew will now build 7.4.5
You haven't enabled any variants. The default variant will be enabled: 
[bcmath, bz2, calendar, cli, ctype, dom, fileinfo, filter, ipc, json, mbregex, mbstring, mhash, pcntl, pcre, pdo, pear, phar, posix, readline, sockets, tokenizer, xml, curl, openssl, zip]
Please run 'phpbrew variants' for more information.

===> Loading and resolving variants...
Homebrew prefix "/usr/local/Cellar/libxml2/2.9.10" does not exist.
Homebrew prefix "/usr/local/Cellar/bzip2/1.0.8" does not exist.
Homebrew prefix "/usr/local/Cellar/mhash/0.9.9.9" does not exist.
Homebrew prefix "/usr/local/Cellar/curl/7.68.0" does not exist.
Downloading https://www.php.net/distributions/php-7.3.14.tar.bz2 via curl extension
dose not exist.

ソフトウェアが存在しないと言われてしまいました。。
足りないソフトウェアをbrew installコマンドでまとめてインストールします。

$ brew install libxml2 bzip2 mhash curl

よしよし、再度チャレンジです。

改めてインストール

インストール完了するまでに時間がかかるので、休憩がてら猫と戯れてました。

$ phpbrew install 7.4.5 +default

(略)
* WARNING:
  You haven't setup your .bashrc file to load phpbrew shell script yet!
  Please run 'phpbrew init' to see the steps!

To use the newly built PHP, try the line(s) below:

    $ phpbrew use php-7.4.5

Or you can use switch command to switch your default php to php-7.3.14:

    $ phpbrew switch php-7.4.5

Enjoy!

インストール完了です!

再起動

インストールしたらコマンドプロンプトを再起動してsourceコマンドを実行します。

$ source ~/.phpbrew/bashrc

インストール済みのPHPバージョンを確認

listコマンドを実行してインストールされたか改めて確認します。

$ phpbrew list

* php-7.4.5

さらにphp -vでバージョンが7.4.5になっているか確認します。

$ php -v

PHP 7.4.5 (cli) (built: Nov 25 2020 23:12:04) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

php-7.4.5を使えるようになりました!

他バージョンの確認・切り替え

インストールした別のバージョンを確認し切り替えます。

1. インストール済みのバージョンを一覧で確認

$ phpbrew list

  php-7.4.6
* php-7.4.5

"*"は現在使用されているバージョンです。
7.4.6に切り替えてみる。

2. バージョンの切り替え

// 7.4.6を使用する
$ phpbrew use php-7.4.6

// 切り替わったか確認
$phpbrew list

* php-7.4.6
  php-7.4.5

切り替わりました!
最後にphp -vでバージョンが7.4.6になっているか確認

$ php -v

PHP 7.4.6 (cli) (built: Nov 26 2020 00:53:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

7.4.6に切り替えることができました!

最後に

ここまで行き着くのに2日かかりました (›´ω`‹ )
これからコマンド慣れしていかねば、、!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む