viコマンド

カーソル移動

w 次の語の先頭に移動
b 前の語の先頭に移動
^ 行頭に移動
$ 行末に移動
[CTRL] + f 次のページに移動
[CTRL] + b 前のページに移動
G 最終行に移動
Gn n行目に移動

入力・編集

a カーソルの右から挿入開始
i カーソル位置から挿入開始
o 現在行の下に1行挿入し、行頭から入力開始
O 現在行の上に1行挿入し、行頭から入力開始
J 現在行と次の行を結合

削除

x カーソル位置の1文字を削除
X カーソルの左の1文字を削除
dd 現在行を削除
dw カーソル位置の1語を削除
d^ 行頭からカーソル位置まで削除
d^ カーソル位置から行末まで削除

カット・コピー(ヤンク)

行のカット・ヤンク

  • カットは対象行でdd
  • ヤンクは対象行でyy

貼り付け

貼り付ける行の上の行にカーソルを置いてp

任意位置のカット・ヤンク

開始位置でv→カーソルで範囲選択後にddまたはyy

pを入力したポジションの後に内容が貼付けられる。

 

WordPress – PHPを使う

概要

WordPressでPHPをHTML内に書いても、拡張子phpのファイルにならないため、そのままでは実行されない。

.htaccessを変更することでhtmlファイルでもPHPが呼ばれるようになるらしいが、それよりもPHPを外部ファイルとして持っておいて、HTMLからそこで定義された関数を呼び出す方法の方が、改変部分が少なそう。

方法1:親テーマのfunctions.phpに加える

親テーマディレクトリ下のfunctions.phpにショートコードの関数を書き加え、HTMLから呼び出す方法。

たとえばfunctions.phpの最後に以下を追加。場所は最後の方がよいか。

そして、WordPressのエディタ画面で以下を記述。

これで上記の記述の部分でショートコードが実行され、この部分に”Hello World!”が表示される。

ただしこの方法は、親テーマのfunctions.phpを加工しているので望ましくない。

方法2:子テーマのfunctions.phpに加える

子テーマのfunctions.phpに以下を記述する。今回はコード全体を<?php?>で囲んでいる。

そして方法1と同じように、HTMLからショートコードを呼び出す。

この方法だと、親テーマのバージョンアップなどの影響を受けないのでよい。

ただし、ショートコードが増えると、一つのfunctions.phpファイルで管理をするのが大変になってくる。

方法3:別ファイルのPHPを呼ぶ

functions.phpに以下を記述。

以下の内容のファイルを、ファイル名を”php_in_wp.php”として、functions.phpと同じ場所に置く。

そして、以下のようにHTMLから外部ファイルを呼び出す。

下の行は、実際に上記を実行した結果。

Hello WordPress!

参考リンク

WordPress投稿ページにPHP利用→ショートコードを使おう!

 

WordPress – 子テーマを作る

概要

テーマをカスタマイズしたり、テーマディレクトリ下のfunctions.phpを変更したりした後に、テーマをアップデートすると、カスタマイズや変更の内容が元に戻ってしまう。

これを回避するために、適用しているテーマの「子テーマ」を作って、これをカスタマイズする。

テーマの場所

WordPressのテーマは複数のファイルで構成され、テーマ名と同じディレクトリにそれらが格納されている。

たとえば”First”というテーマはfirstというディレクトリで、その内容は次のようになっている。

子テーマ作成の流れ

  1. 子テーマのディレクトリを作る
  2. ディレクトリ下に必要なファイルを準備する
    • style.css
    • カスタマイズ対象ファイル(header.php、footer.phpなど)
    • functions.php(カスタマイズする場合)
  3. 子テーマを有効化する

子テーマのディレクトリを作る

子テーマのディレクトリの場所は、親テーマと同じwp-content/themes/の下。ディレクトリ名は親テーマ名に接尾辞-childを付けることが推奨されている。Firstというテーマなら、first-child

必要なファイルを準備する

ここでは、必須のstyle.cssだけを準備する。たとえば”First”の子テーマを作る場合は以下を記述。

コメント行のうち必須なのは、TemplateとTheme Nameの2つ。

  • Templateには親テーマのディレクトリ名を設定(テーマ名ではない)
  • Theme Nameには子テーマのテーマ名を設定(ディレクトリ名ではない)

@import文は、url()の内容をインポートして適用する。ここで親テーマのcssを設定することで、親テーマのスタイルのすべてがインポートされる。

その後の行で、必要に応じてスタイルをカスタマイズ。

子テーマを有効化する

ダッシュボードの「外観」→「テーマ」で確認すると、子テーマが加えられているので、これを有効化する。

wp-child-theme

子テーマをオーバーライドする

style.css

@import url()で親テーマのスタイルを継承した以降、独自のスタイル設定を記述することで親テーマのスタイルをオーバーライドできる。

たとえば以下の例では、h1タグの色を青にするよう設定している。

実行結果は以下の通りで、h1タグの内容の前景色が青になっている。

wp-child-theme-override-example

 

 

WordPress – functions.phpの場所

functions.phpは各テーマのディレクトリ下に存在する。

functions.phpは各テーマごとに生成されるため、意図をもってその内容を変更した後にテーマをアップデートすると、変更内容が失われる。

テーマをアップデートしても変更内容が失われないようにするには、元のテーマに対する「子テーマ」を作り、そのfunctions.phpに付加する内容を書くとよい。

 

MySQL – クエリのテーブル保存

SELECT文の結果を、以下の書き方でテーブルに保存できる。

まずSELECTの結果が意図したとおりになっているかどうかを確認した後に、CREATE TABLE文の後ろに書くとよい。

ただし、SELECT *と書くのは要注意。クエリの結果によって、同じフィールド名が繰り返し現れると、テーブル作成時にエラーとなる。

クエリをテーブルに保存するときは、同じフィールド名が重複しないように注意。

 

 

さくらサーバー – MySQL – CSVファイルへのエクスポート

概要

MySQLへのCSVファイルのインポートについては、ターミナル上でのLOAD DATAコマンドによる方法を整理した。

テーブルやSELECTの結果のエクスポートについては、以下の方法がネット上でも一般的。

ただし、さくらレンタルサーバで上記を実行しようとすると、以下のようにエラーになる。

これはレンタルサーバのユーザディレクトリの権限がrwx---r-xとなっていて、MySQLからの書き込みが制限されているためらしく、レンタルサーバでこの権限を変更することは難しい。

phpMyAdminを使ったエクスポートなら、ブラウザ上での操作でテーブルのダウンロードが可能。

phpMyAdminを起動する

さくらレンタルサーバのコントロールパネルを立ち上げ、「データベースの設定」をクリック。

phpmyadmin-start-1

データベースの設定画面で、「管理ツールログイン」をクリック。

phpmyadmin-start-2

新しいタブでphpMyAdminのログイン画面が立ち上がるので、MySQLのユーザ名とパスワードを入力して「実行する」ボタンを押す。

phpmyadmin-login

phpMyAdminでのエクスポート操作

ログイン後の画面の左にデータベースの一覧があるので、エクスポートするテーブルがあるデータベースを選択。

phpmyadmin-select-database

データベース内のテーブル一覧が表示されるので、エクスポートするテーブルにチェックを入れて、「チェックしたものを」のドロップダウンリストから「エクスポート」を選択。

phpmyadmin-table-selection

エクスポート画面の左でCSVを選択すると、右側がCSVのオプション設定になる。

  • フィールド区切りのデフォルト';'','に変更
  • フィールド囲み記号のデフォルト'"'を残すか、必要に応じて削除
  • その他は適当に
  • 「ファイルに保存する」のチェックを外す
  • エンコーディング変換はしない
  • 「実行する」ボタンで、[テーブル名].csvのファイルがダウンロードされる

phpmyadmin-csv-settings

 

QGIS – 政令市区の融合

概要

国土数値情報の行政界データは、政令市の区が他の市町村と同じレベルで「行政区域」として扱われている。たとえば神奈川県を例にとると、横浜・川崎・相模原の3政令市については各区のポリゴンが他の市町村と同じように表示される。

qgis-kanagawa-before-disolve

属性テーブルのフィールドでも、最も細かい名称フィールド”N03_004″で政令市は区単位で、政令市名は郡名と同じフィールド”N03_003″に記録されている。

qgis-designated-city-dissolve-attribute-table-before

 

政令市区の融合

政令市も一般市と並びで扱うケースのために、政令市と他の市町村が同じフィールドになるように再構成する。

神奈川県を例にとると、行政界データは以下のように政令市~一般市~郡部町村という構成になっている(注目しているカラムのみ示している)。

N03_001 N03_003 N03_004 N03_007
神奈川県 横浜市 鶴見区 14101
神奈川県 横浜市 都筑区 14118
神奈川県 川崎市 川崎区 14131
神奈川県 川崎市 麻生区 14137
神奈川県 相模原市 緑区 14151
神奈川県 相模原市 南区 14153
神奈川県 横須賀市 14201
神奈川県 綾瀬市 14218
神奈川県 三浦郡 葉山町 14301
神奈川県 愛甲郡 清川村 14402

このうち同じ政令市の区を地物までまとめて一つの政令市として扱うようにする。

N03_001 N03_007 N03_901
神奈川県 14100 横浜市
神奈川県 14130 川崎市
神奈川県 14150 相模原市
神奈川県 14201 横須賀市
神奈川県 14218 綾瀬市
神奈川県 14301 葉山町
神奈川県 14402 清川村

大まかな手順は以下の通り

  • 政令市を含んだ市町村名を、新たにフィールドを作ってそこに設定
  • 政令市のコードは、従来のコード欄の値を手打ちで修正

市町村欄の生成

  • 神奈川県のレイヤの属性テーブルを表示
  • フィールド計算機を立ち上げる
  • 「新しいフィールドを作る」にチェックし、出力フィールド名、フィールドタイプ、フィールド長を設定
  • 条件式を入力
  • OKボタンを押してダイアログを閉じる
  • レイヤの編集モードを解除

qgis-designated-city-dissolve-field-calculator

条件式は以下の通り。

フィールドN03_003は以下のいずれか

  • N03_004が政令市区の場合は政令市名
  • N03_004が一般市の場合は市名
  • N03_004が町村の場合は郡名

そこで、N03_003が’市’で終わる場合(政令市の場合)はN03_003を、その他(一般市町村)の場合はN03_004を新たなフィールドN03_901にセットする。

実行結果は以下の通り。

qgis-designated-city-dissolve-attribute-table-after

次に、「ベクタ」→「空間演算」→「Dissolve」でN03_901フィールドの値で融合処理。融合後の地物は以下の通りで、政令市が一体化されている。

qgis-kanagawa-after-disolve

属性テーブルを開いてみると3政令市がそれぞれ一つにまとめられているが、各フィールドは各政令市のいずれか一つの区のデータのみが残っている。これらについては、手打ちで修正した。

qgis-designated-city-dissolve-attribute-table-code

 

QGIS – クエリ・式

式の入力について

フィルタやフィールド計算機などで必要になるクエリの式についてまとめる。

クエリビルダでフィールドや演算子などを入力するとき、直接キーボードから入力してもいいし、ダイアログのボタンやドロップダウンから選択してもよい。

関数をドロップダウンから選択しても、括弧閉じの対応はされない。

値の参照

レコード内のフィールド値を参照するにはダブルクォート(")でフィールド名を囲む。

数値リテラルはそのまま数値を書き、文字列リテラルはシングルクォート(')で囲む

LIKEであいまい検索をする場合の任意長の文字列は’%(‘*‘は使えない)。以下は’横浜市’、’横浜’、’浜松’にマッチする。

条件検索

条件の真偽によって結果を変える場合はifを使う。

以下、例示。

 

 

QGIS – 地物の切り出し

たとえば全国の行政界データを持っていて、そこから特定の県だけ抜き出したレイヤを作りたいとき。大まかな手順は以下の通り。

  • 抽出対象の地物をフィルタで抽出
  • 抽出後の状態で「領域またはシングルクリックによる地物選択」ボタンを押す
  • 領域を選択してフィルタ後の地物を全選択
  • メニューの「編集」→「地物のコピー」
  • メニューの「編集」→「新規レイヤへの地物の貼り付け」→「新規ベクタレイヤ」
  • 「空間参照システム」ダイアログで座標系を選択(JGD2000)
  • 新規Shapeファイルの保存先ディレクトリとファイル名を指定してOK

例として国土数値情報の全国の行政界データから神奈川県の市区町村のみ取り出す手順をまとめる。

神奈川県の市区町村のみフィルタリングした状態から「領域またはシングルクリックによる地物選択」ボタンを押す。

qgis-select-porigon1

フィルタリングされた神奈川県全体を覆うようにドラッグして地物を選択し、「編集」→「地物のコピー」。

qgis-select-porigon2

続けて「編集」→「新規レイヤへの地物貼り付け」→「新規ベクタレイヤ」。

qgis-select-porigon3

「空間参照システム選択」ダイアログで座標システムを指定。この場合はデフォルトのJGD2000のまま。

qgis-select-porigon4

OKを押すと「ベクタレイヤに名前を付けて保存」ダイアログが立ち上がるので、「ブラウズ」で新しいフォルダとファイル名を指定してOK。

qgis-select-porigon5

「保存されたファイルを地図に追加する」にチェックが入っていれば、新しく作成されたShapeファイルのレイヤがレイヤパネルに追加されて表示される。

qgis-select-porigon6

 

 

 

 

QGIS – フィルタ~地物の抽出

たとえば国土数値情報の全国行政界データから、特定県のみ取り出したいときなど。

手順は以下の通り。

  • 抽出元の全国レイヤを右クリックして「フィルター」を選択して「クエリビルダ」ダイアログ起動
  • 抽出条件を指定
    • ここでは都道府県名フィールド”N03_001″の内容が’神奈川県’の地物のみ取り出す
    • 文字定数の指定はシングルクォート(‘)で囲うこと
  • OKボタンを押して抽出実行

ただしQGISのクエリ式はクセがあるので注意

qgis-filter-query-builder-dialog

なおこの段階では、元の全国データは残ったまま、神奈川県分だけを表示させている状態なので、もう一度右クリック→フィルターでクエリビルダを表示させると抽出条件が残っている。

ここで「クリア」ボタンを押して条件をクリアすると、元の全国データが表示される。

抽出された地物だけを新しいレイヤとしたい場合は、新規レイヤに地物を貼り付けて保存する必要がある。