feed

2016年01月10日, 編集履歴

固定ヘッダでスクロールが飛んでしまうアレな実装

 最初は通常配置されているヘッダメニュー等が、ページのスクロールにより固定配置に変化するウェブページを最近良く見かける。
 そもそも固定配置させる必要があるのかどうかは別問題として(関連記事:固定配置(position: fixed)を使う前によく考えよう)、ヘッダ要素のスタイルのpositionプロパティをfixedに変えているだけのアレな実装が多いことが問題なのである。このアレな実装のために、positionプロパティ切り替えの前後でスクロールが飛んだように見える(スクロール位置が急に動いたように見える)のだ。

 なぜスクロールが飛ぶのか。
 position: fixedとすると、その要素は他の要素からは存在しないのと同様の扱いになる。最初は通常配置だった要素が固定配置になると、その要素はなくなったものとして後続要素の位置が上に詰められてしまうのだ。固定配置から通常配置へ戻るときも同様である。急に新しい要素が増えて、後続要素の位置は下へズレてしまう。その結果スクロールが飛んだように見えるのだ。

 ひとによるだろうが、私の場合、画面に表示されている文章を上から下まで目線を動かしては読まない。目線は一定の位置である程度固定しておき、その目線の場所へ文章をスクロールさせてきて読む。したがって、スクロール位置が急に飛んでしまうと読んでいた文章を見失ってしまう。読みたかった部分が固定配置の下に隠れてしまうこともよくある。

 スクロールが飛ばないようにするには、単純にpositionプロパティを切り替えているだけではダメだ。たとえば、固定配置に切り替えたあとに同じサイズのダミー要素を挿入するとか、直後の後続要素に同じサイズの上マージンを設定するとかしなければならない。

 ある時期からこのアレな実装をよく見かけるようになったと思う。どこかにアレな実装を広めているヤツがいるのだろうか。

2016年01月07日, 編集履歴

OS Xでキーボードショートカットを定義する方法

キーボードショートカットは、OSやアプリケーションの機能をキーボードから呼び出せる仕組みです。有名なキーボードショートカットとしては、コピーの「⌘C」(Command-C)やペーストの「⌘V」(Command-V)などがあります。主にメニューバーから実行するタイプの操作に対してキーボードショートカットが割り当てられています。キーボードショートカットを駆使することで、キーボードから手を離すことなく様々な機能を実行できるので、文字入力中などの操作効率が格段に向上します。

上図はFinderの「編集」メニューです。項目名の右側に表示されている記号やアルファベットが、その機能に割り当てられているキーボードショートカットです。このショートカットを押下することで、メニューを開くことなく機能を呼び出せます。

OS Xのキーボードショートカットで使われる修飾キーとそれを表す記号は以下のように対応しています。

記号 キー
Command
Shift
Option
Control

たとえば、上図の「やり直す」には「⇧⌘Z」と表示されているので「Shift-Command-Z」を同時に押下することを意味します。

本稿では、このキーボードショートカットを新たに定義する、あるいは既存のキーボードショートカットを別のものに変更する方法を説明します。

システムのショートカットを変更する方法

一般的なアプリケーションのキーボードショートカットではなく、OS Xの機能(Mission ControlやSpotlightの起動など)に独自のキーボードショートカットを設定するには、以下の手順にしたがって操作してください。

  1. メニューバーのAppleメニューから「システム環境設定…」を選択します。

  2. 「システム環境設定」で「キーボード」をクリックします。

  3. 「キーボード」環境設定で「ショートカット」タブを選択します。

  4. ウィンドウ左側からショートカットのカテゴリを選択します。

  5. ウィンドウ右側から変更したいショートカットを選択します。

  6. 変更したいショートカットを選択した状態で、キーコンビネーション部分をクリックすると編集状態になるので、割り当てたいキーを押下します。

チェックボックスを操作することで、使わないショートカットの有効/無効を切り替えられます。

アプリケーションのショートカットを定義する方法

メニューバーから選択するアプリケーションの操作(コピーなど多くのアプリケーションに共通する操作や、アプリケーション独自のメニュー項目)に対してキーボードショートカットを定義するには、以下の手順にしたがって操作してください。

  1. メニューバーのAppleメニューから「システム環境設定…」を選択します。
  2. 「システム環境設定」で「キーボード」をクリックします。

  3. 「キーボード」環境設定で「ショートカット」タブを選択します。

  4. ウィンドウ左側のカテゴリ一覧から「アプリケーション」を選択します。

  5. 「+」ボタンをクリックします。

  6. ショートカット設定シートが開くので、「アプリケーション」「メニュータイトル」「キーボードショートカット」を設定し「追加」ボタンをクリックします。

手順6の「アプリケーション」について、「コピー」など多くのアプリケーションに共通するメニュー項目のショートカットを設定する場合、「全アプリケーション」を選択します。あるアプリケーションに固有のメニュー項目の場合は、そのアプリケーションを選択します。

手順6の「メニュータイトル」欄について、ショートカットを定義/変更したいメニュー項目のタイトルを正確(スペースの有無や「…」も含めて)に入力します。

手順6の「キーボードショートカット」欄について、入力欄をクリックしてフォーカスを当て、設定したいキーコンビネーションを押下します。

上記の手順でSafariの「PDF として書き出す…」にキーボードショートカットを割り当てることで、下図のようにメニューにショートカットが表示され、「⌥⌘P」(Option-Command-P)押下で機能を呼び出せるようになります。

おすすめのショートカット設定

次のウィンドウを操作対象にする

ひとつのアプリケーションで複数のウィンドウを開いている場合に、ウィンドウ間でフォーカスを切り替える機能がOS Xに搭載されています。それが「次のウィンドウを操作対象にする」です。この機能を使うと、Finderなどで複数のウィンドウを次々と切り替えながら作業を行えます。

「次のウィンドウを操作対象にする」にはデフォルトで「⌘`」(Command-`)というキーボードショートカットが定義されています。「`」(バッククォート)は、JISキーボードの場合は「Shift-@」で入力する記号です。したがって、JISキーボードで「⌘`」というショートカットを使用するには「Command-Shift-@」を同時に押下しなければなりません。

これは押しにくいので、別のキーボードショートカットに変更することをおすすめします。「次のウィンドウを操作対象にする」のショートカットを変更するには、以下の手順にしたがって操作してください。

  1. メニューバーのAppleメニューから「システム環境設定…」を選択します。
  2. 「システム環境設定」で「キーボード」をクリックします。
  3. 「キーボード」環境設定で「ショートカット」タブを選択します。
  4. ウィンドウ左側のカテゴリ一覧から「キーボード」を選択します。
  5. 「次のウィンドウを操作対象にする」にチェックが入っていない場合はチェックします。
  6. 「次のウィンドウを操作対象にする」を選択します。
  7. キーコンビネーション部分をクリックして編集状態にし、割り当てたいキーを押下します。

「次のウィンドウを操作対象にする」に割り当てるおすすめのショートカットは「⌥⇥」(Option-Tab)です。アプリケーションを切り替えるショートカット「⌘⇥」(Command-Tab)と対称性があることで解りやすく、左手だけでかんたんに入力できます。

Safariのブックマークにショートカットを割り当てる

Safariのブックマーク項目はメニューバーから選択可能です。つまり、ブックマークにキーボードショートカットを定義できるということです。よく使うブックマークにショートカットを設定しておくと、いつでもすぐにアクセスできて便利です。

Safariのブックマークにショートカットを割り当てるには、以下の手順にしたがって操作してください。

  1. メニューバーのAppleメニューから「システム環境設定…」を選択します。
  2. 「システム環境設定」で「キーボード」をクリックします。
  3. 「キーボード」環境設定で「ショートカット」タブを選択します。
  4. ウィンドウ左側のカテゴリ一覧から「アプリケーション」を選択します。
  5. 「+」ボタンをクリックします。
  6. 「アプリケーション」は「Safari」を選択、「メニュータイトル」欄にブックマーク項目の名前を入力、「キーボードショートカット」欄でお好みのキーコンビネーションを押下し、「追加」をクリックします。

上記の手順でブックマーク項目「Gmail」にショートカットを割り当てた結果が下図です。

これでいつでもすぐに、手元のキーボード操作でGmailにアクセスできるようになりました。

2015年12月31日, 編集履歴

iOS 9の標準メモを共有先にできない問題

 iOS 9から各種アプリケーションの共有先として標準メモアプリケーションを指定できるようになり、ウェブページや画像等をストックできるようになった。
 ところが、私の環境では共有先としてメモを指定しても「メモのアカウントをアップグレードせよ」的なアラートが出て共有できなかった。iCloudメモはiOS 9/OS X 10.11 El Capitan用にアップグレード済みであるにも関わらずである。OS Xからはウェブページ等の共有先として標準メモを指定できるので、アカウントのアップグレード自体は成功しているはずである。
 色々いじって、iOSの「設定→iCloud」の「メモ」をオフにして、ローカルメモだけにすると共有先として指定できることが解った。が、iCloudメモをオンにするとやはり同じアラートが出て共有先に指定できなくなる。
 さらに色々いじって解決できた方法は、「設定→メモ」の「”iPhone”アカウント」のスイッチをオン/オフ切り替える、である。はじめはオフになっていたのでオンに切り替えたら、共有先に指定できるようになった。再びオフに切り替えても正常に動作し続けていることを確認して解決。
 なんでやねん。

2015年11月26日, 編集履歴

OS X用Apple Mailアプリがメモリィを食い尽くす問題について

 先日から、OS X用のApple Mailアプリケーションがメモリィを食い尽くし始めてMacの動作がめちゃ重くなるという現象に見舞われだした。原因を探った結果、以下のApple Support Communitiesの投稿を発見した。

 どうやらMailアプリケーションが溜まったログファイルを自動的にZip圧縮する際に問題が発生しているようである。

 自分の環境を確認してみると、~/Library/Containers/com.apple.mail/Data/Library/Logs/Mailに1ファイルで6GBを超えるログファイルが存在していた。何らかの原因によりログが爆発的に出力され、大容量になったそれをZip圧縮しようとしてメモリィを食い尽くしていたものと思われる。ログは1日ごとに圧縮されるはずだが、大容量ログの日付以降にZipファイルが作成されていなかったのが、その傍証である。

 大容量ログを手動で圧縮し、オリジナルは削除した。大容量ログの日付以降のログも圧縮されだし、Mailアプリケーションがメモリィを食い尽くす問題は解消されたように思う(未だ経過観察中ではあるが)

2015年09月22日, 編集履歴

Casio CA-53Wの操作方法メモ

 Casio CA-53Wを買った。
 電卓機能がついたディジタルの腕時計で、映画「Back to the Future」シリーズでマイケル・J・フォックス扮する主人公マーティがつけていたやつ、の後継機である(中身のモジュールは同一でケースやバンドのマイナーチェンジ。パッと見はほぼいっしょ)。

 基本的な操作は初見でも問題ないレヴェルではあるが、いくつか解りづらい部分があったのでメモ。

日付表示

  1. メインの時刻表示モードで÷キーを押す(押している間、日付表示)

時刻表示の12/24時間制の切り替え

  1. メインの時刻表示モードで右側面の下側のボタンを押して時刻設定モードに入る
  2. +ボタンを押す

操作音の有無切り替え

  1. 電卓モードに切り替える
  2. 右側面の下側のボタンを押す

ストップウォッチの時間表示

  1. ストップウォッチモードで÷キーを押す