カテゴリーアーカイブ エディタ

著者:杉浦

【PhpStorm】よりGitを意識するようになるプラグインGitToolBox

GitToolBox – Plugins | JetBrains
 GitToolBoxはPhpStormのプラグインのひとつです。プラグイン自身の説明にはこうあります。

Status display, auto fetch, inline blame annotation, commit dialog completion, behind notifications and more…

 要はGit周りの色々な機能を追加する、というものです。これを入れると今どのブランチにいるのかわかりやすくなったり、定期的なフェッチにより不意の衝突を軽減できたりします。特に変化が起きるのが次の図の赤丸部分です。


 Gitのコミットメッセージがインラインコメントとして表示されます。これによって、あるコードが現在の形になっている理由を端的に知れます。詳しく知るにはファイル単位の履歴なり、全体の履歴なりを追うべきですがコミットメッセージが適切ならばこれでわかります。
 わざわざ見に行かなければわからなかったコミットメッセージがこうもコードの間近で頻繁に見るようになると雑なコミットはもう出せません。推敲に身が入ります。

  • この記事いいね! (0)
takahashi 著者:takahashi

EclipseのDBViewerPluginでMySQLに接続する方法

以前の記事でEclipseにDBViewerPluginをインストールする方法についてご説明しました。

今回は実際に接続できるようにするところまでご説明したいと思います。

前回の時点で下記の画像のようにDBViewerPluginが表示されているかと思います。

左上の”DBViewerPlugin”を右クリックし、”登録”をクリックします。

すると、下記のようなウインドウが開きます。

ここで、EclipseがDBを直接扱えるようにするための”ドライバ”を指定する必要があります。

今回はMySQLを例にして説明します。
MySQLのEclipse(Java)用のドライバは下記URLから入手できます。

Download Connector/J – MySQL

Windowsの場合はzip形式の方が扱いやすい(専用ソフトなしで解凍できる)と思います。

ダウンロードしたら、Eclipseからいつでも参照できる場所に保存します。
(自分の場合は、Eclipseのフォルダの中に”drivers”フォルダを作成してそこに配置しました。)

ドライバを配置したら、Eclipse上の先ほどの画面で”ファイルの追加”をクリックし、ドライバの場所を指定します。

ドライバを指定したら次へをクリックします。

JDBC Driverに”com.mysql.jdbc.Driver”を選択します。

OKをクリックします。

すると接続文字列にサンプルの文字列が入るので、<host>の部分をMySQLサーバーのホスト名、<database>の部分をDB名にそれぞれ置き換え、さらにMySQLのユーザー名とパスワードを入力します。

ここまで出来たら”テスト接続”をクリックしてエラーが出なければ接続設定はOKです。

次へをクリックします。

最後に接続設定(読み込むテーブルや文字コードの指定など)が出てくるので、必要があれば指定し、完了をクリックします。

これで設定は完了です。
この時点でEclipse上からDBへのアクセスが可能になっているかと思います。

EclipseでMySQLをお使いの方は参考にしてみてください。

  • この記事いいね! (0)
著者:杉浦

【PhpStorm】PhpStormの提案するコードの簡略化

 PhpStormはAlt+EnterでPhpStormからコードをよりよくするための提案をしてくれます。例えば次です。

 厳密な比較を行うための第3引数を提案してくれました。この機能は様々な場所で働きます。例えばテストのAssertならば次の様に最もふさわしいAssert関数を提案してくれます。

 この提案機能はプラグインでも実装されており、次の二つが多くの人にダウンロードされ評価も高かったです。
kalessil/phpinspectionsea: A Static Code Analyzer for PHP (a PhpStorm/Idea Plugin)
SonarLint – Plugins | JetBrains
 phpinspectionseaはPhp Inspections(EA Extended)という名前でマーケットに並んでいます。EAは適度に警告、提案をしてくれます。EAはとりあえず入れるのにおすすめです。SonarLintは厳密ですが、誤報率も高いです。SonarLintがちがちに書くなりルールを無効化するなりしながら記述することになりますが慣れてくると便利です。

  • この記事いいね! (1)
著者:杉浦

【PhpStorm】インターフェイスとPhpStormで一貫性のあるコードを量産する

 インターフェイスはあるクラスが実装するべきメソッドを定義する仕組みです。あるクラスにおいてインターフェイスを用いると宣言したにも関わらず、インターフェイス内で定義したメソッドが足りないならばエラーになります。
PHP: オブジェクト インターフェイス – Manual
 例えば次のインターフェイスならば

use Illuminate\Database\Eloquent\Builder;

interface Searchable
{
    public function scopeSelectForSearch(Builder $query): Builder;
    public function scopeWhereForSearch(Builder $query, array $search_criteria): Builder;
    public function scopeSortForSearch(Builder $query, array $sort_option): Builder;
}

 次の様に実装を強要できます。

use Illuminate\Database\Eloquent\Builder;

class Hoge implements Searchable
{
    public function scopeSelectForSearch(Builder $query): Builder
    {
        // 検索用select文クエリ構築
        return $query;
    }

    public function scopeWhereForSearch(Builder $query, array $search_criteria): Builder
    {
        // 検索用where文クエリ構築
        return $query;
    }

    public function scopeSortForSearch(Builder $query, array $sort_option): Builder
    {
        // 検索用order byt文クエリ構築
        return $query;
    }
}

 インターフェイスはコーディングの自由度を下げる仕組みです。一定の制約を設けることによって一貫性を持ったコーディングを実現します。例のSearchableインターフェイスを実装したクラスならば、必ずBuilderクラスないしBuilderクラスを継承したクラスのインスタンスを引数にするscopeSelectForSearchメソッドが存在し、そのscopeSelectForSearchメソッドからはBuilderクラスないしBuilderクラスを継承したクラスのインスタンスが返ってくる、と保障されます。一人で小さいプログラムを組んでいるときには開発速度の障害であり無縁な方が良い位の仕組みですが、相手の頭の中を簡単に知れない多人数開発であったり記憶が飛ぶ様な大規模開発では、インターフェイスによるクラス設計がソースコードの破綻を防ぎます。

 インターフェイスは便利な仕組みですが、インターフェイスで定義された決まりきった構文をいちいち書いたりコピペして直したりするのは面倒です。PhpStormにはこれを自動で記述する仕組みが備わっています。
 
 Alt+Insert→メソッドの実装→実装するメソッドを選択→OK、で宣言がずらっと並びます。便利です。PhpStormのAlt+Insertからは他にも決まりきった文字列を色々出力できます。例はPHPですがJavaScriptにも対応しています。

  • この記事いいね! (0)
takahashi 著者:takahashi

eclipseにDBViewerPluginを追加する方法

無料のIDEであるeclipseですが、実はデフォルトではDBに接続・操作する機構を持っていません。
eclipse上からDBへ接続できるようにするには、プラグインを追加する必要があります。

ただ…

“新規ソフトウェアのインストール”ではリポジトリにパッケージがないため、インストールすることができません。

じゃあどうすればいいんやと困って探していたところ、こちらのサイトを発見。

DBViewerをEclipse2018-12で使用したい!! – Qiita

どうやら、DBViewerPluginを単体で入手して、eclipseのプラグインフォルダに突っ込めばいいとのこと。

まず、下記サイトからDBViewerPluginをダウンロードします。

DBViewer Plugin for Eclipse 開発プロジェクト – OSDN

バージョンはなるべく新しめの方がいいと思います。

上記サイトからプラグインのjarファイルを入手したら、これを

eclipseインストールディレクトリ/eclipse/plugin

に入れます。

eclipseに適用させるために、一旦eclipseを終了し、eclipseの本体が入っているディレクトリにある

eclipse.exe -clean.cmd

を実行します。

すると、キャッシュを一度削除したうえでeclipseが立ち上がります。

この状態で画面右上の”パースペクティブを開く”をクリックします。

すると、下の画像のようなウインドウが開きます。

一覧の中に”DBViewer”が追加されていれば成功です。

なお、実際にデータベースと接続するには、別途ドライバーが必要になります。

この辺りの設定方法についてはまた後日ご紹介します。

  • この記事いいね! (0)
著者:杉浦

【PhpStorm】PhpStorm上でコードの一部分のみGitを辿る

 PhpStormはGitを上手く扱えるIDEです。単にGitの操作と木を見るのみでなく、フックやテンプレートも用意しています。


【PhpStorm】PhpStormでpre-commitのGitフック
 PhpStormはGitを読みやすくする機能も備えています。その一つがコードの一部分のみのGit Historyの表示です。操作はコードを選択して右クリック、Git→選択のヒストリーを表示、とするだけです。

 すると次の様に選択部の変更のみのGit Historyが見えます。

 この機能を使うとGitの中をひーこら検索する必要がずいぶん減ります。特に歴史あるリポジトリの一部分を追う時、過去の変更に差し戻す時に活躍します。

  • この記事いいね! (1)
著者:杉浦

【PhpStorm】PhpStormで重複コードを抽出する

 とりあえずざっと書いて後からリファクタするというコーディング方法があります。このコーディング方法においてリファクタの際には見通しをよくするほか、コピペした部分などの重複したコードをまとめる作業もよくやります。PhpStormにはこの重複コードをまとめる作業の精度を上げる機能があります。
 次の画像にある重複の分析を選ぶとPhpStormはコードを解析しコードの重複を見つけ出します。

 見つけられた重複は次の様にコードが表示されます。この画面から直すべき重複が分かります。コストは複雑さと量によって計算されています。余り軽いとまとめる程でもないことがしばしば現れます。閾値は個々の調整に依りそうです。
重複の分析 – 公式ヘルプ | PhpStorm

 対象の重複範囲を選択し図の様にリファクタリング→メソッドの抽出を選びます。すると関数のオプションを決める画面が現れます。
メソッドの抽出 – 公式ヘルプ | PhpStorm


 この関数オプションを決定した後にリファクタリングを実行すると、次の画像らの様に関数にまとめられます。


 このまとめられた関数の配置をそのままなり、traitなり、他クラスなり、親クラスにして他の重複部分から呼び出すことによって重複コードのリファクタリングが成ります。重複が同ファイル内にあるならばPhpStormがよしなにまとめてくれます。

  • この記事いいね! (0)
著者:杉浦

【PhpStorm】PhpStormでpre-commitのGitフック

 Gitには元よりGitのある動作をした時に自動で動作するスクリプトを埋め込むことができます。このスクリプト機能をGitフックと呼びます。
Git – Git フック
 これだけでも便利なのですが権限であったり、環境変数がまっさらな状態で呼び出されたり、スクリプトをGitに含められなかったり、スクリプトを書く時にプロジェクトにしていたソースコードのルートとGitのルートが違っていたりで少々面倒が起きたりします。PhpStormにはコミット前Gitフックの機能が入っています。これを使うとプロジェクトに属したGitフックを作ることが出来ます。
 ここからGitフックの入れ方、使い方の説明です。
 まず次の画像の様に設定->プラグインからPre Commit Hook Pluginをインストールします。これはPhpStormを作っている会社であるJetBrains製で気が付いたら既に入っているタイプのプラグインです。

Pre Commit Hook Plugin – Plugins | JetBrains
 インストールが完了したら再び設定からツール->Pre Commit Hookを選び、対象のスクリプトパスを設定します。Gitフックと違ってパスも環境変数も自由です。もちろんスクリプトがエラーを吐けばコミットに待ったをかけてくれます。

 せっかくプロジェクトに含められるのですからスクリプトもなるべく楽をしようと思います。自分が使っているスクリプトが次です。

npm run pre-commit

 npmに全任せです。package.jsonには次の4行が含まれており、php-cs-fixerによるPHPの自動修正、ESLintのfixオプションによるJavaScriptの自動修正、duskによる自動ブラウザテストが走る様になっています。

    "php-cs-fix": "vendor\\bin\\php-cs-fixer fix -v",
    "eslint": "./node_modules/.bin/eslint resources/**/*.{js,vue} --fix",
    "browser-test": "php artisan dusk",
    "pre-commit": "npm-run-all eslint php-cs-fix browser-test"

 思いつきですがGitフックもスクリプトからpythonとかのインタプリタ言語を動かせば結構自由そうです。ググればありそう。

  • この記事いいね! (0)
村上 著者:村上

【テキストエディタ】Sublime Text 3がGitの統合に対応

更新は 3月13日にあったので、若干遅いですが、Sublime Text の更新内容について。
今回の更新で Git の統合に対応したようで、個人的にはかなり使いやすくなりました。

公式のリリースノートはこちらから確認できます。

Download – Sublime Text
https://www.sublimetext.com/3

 

私がピックアップした更新点は 2つ。
まず一つ目は、現在の Git ブランチについての情報が下のステータスバーに表示されるようになりました。

ブランチ名は伏せましたが、上記の画像のように表示されています。
右横にある数字は、未コミットのファイル数です。
作業中、今いるのが develop なのか、また別のブランチにいるのか分からなくなることがたまにあったので、これがあれば一目でわかって良いですね!

他にも、ファイルの変更した行にマーカーが付くようになりました。

上記は改行を追加したときの見え方です。
行を追加した場合は緑のマーカーで、既存の行を変更した場合は黄色のマーカーが表示されます。
また、行を削除した場合は赤い三角形で、消された行を指示してくれます。
これも便利ですね。
ただ、黄色と緑が結構似ている色なので、ぱっと見で見分けるのが若干難しいかもしれません。
慣れれば大丈夫かな?

 

以上、Sublime Text の更新についてでした。
もちろん他にも修正点はまだありますが、個人的にいいと思ったものだけをピックアップさせていただきました。

  • この記事いいね! (0)
著者:杉浦

PhpStormで提案された検査の修正をまとめて適用する

 PhpStormにはファイルの中を検査して動作しないと思われる記述や非推奨の記述をエラーや警告といった形で伝えてくれる機能があります。この機能は便利な拡張も出回っています。
Php Inspections (EA Extended) – Plugins | JetBrains
 この検査結果は新たなルールを導入すると大量に現れがちです。しかも直し方が画一的なものも多く、まともにこつこつ一つずつ直していくととても面倒です。次図は全く警告のなかったコードに上の拡張を入れた直後のものです。

 この画像の中で特に面倒なのはメソッド名についている波線の警告の”返り値の型を宣言するべき”です。今までPHPDocに書いてあれば十分としてなっていましたが、上の拡張ではより安全にできるのにしていないのは十分警告の対象とのことです。各メソッドにつきいちいち記述していく手間はかけられません。PhpStormの機能でまとめて修正します。
 まずコード→コードのインスペクションないしAlt+Shift+Iでインスペクションをまとめて下のボックスに表示させます。

 次いで一種類のインスペクション内容になるまで展開して、赤丸の電球ボタンを押すだけで自動で修正がかかります。

 あっという間によりきれいで安全なコードになりました。あとはテストにかけて問題が出ていないことを確認か問題の修正をすればきれいで安全で十分な機能を持ったコードになります。

  • この記事いいね! (0)