年別アーカイブ 2020

著者:杉浦

【PhpStorm】【Docker】Linux環境前提のPHPプログラムのテストをする

 PHPは様々な外部プログラムと連携できます。その中にはLinuxでないと動かない外部プログラムもあり、そういったプログラムと連携するPHPプログラムをテストするにはLinux環境が不可欠です。一方で自分のよく使う開発環境はWindowsです。Windows上で動かしているDocker中にPHPプログラムと外部プログラムを入れて、PhpStormからDocker中のPHPでテストを行う方法を紹介します。
 用意するのは外部プログラムのインストール方法を継ぎ足した適当なDockerFileです。とりあえずcentosベースのイメージに継ぎ足せばらしくなります。以下はRTKLIBを入れるDockerFileの例です。

FROM centos:7
# 省略 PHPとかnginxとかのインストール. LaraDockやDocker LaravelでGitをググるといい感じのモノが見つかる

ARG RTKLIB_URL=https://github.com/tomojitakasu/RTKLIB.git
WORKDIR /home/www
RUN git clone ${RTKLIB_URL}
WORKDIR /home/www/RTKLIB/app
RUN make

COPY ./rtklib_seeder/rtk_store /home/www/rtk_store
COPY ./rtklib_seeder/base_station_signals /home/www/base_station_signals

 これでローカルのWindows内にLinuxテスト環境ができました。後は次スクリーンショットの様にDocker内のPHPインタプリタをPhpStormで用いるインタプリタに設定。

 スクリーンショットの様にPhpUnitをPhpStormから動かすだけでDocker内のPHPが動き、Docker内の外部プログラムを動かしてテストを行います。

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

【androidjava】テキストのUrl化について

テキストをリンクとして扱う方法

今まではurlのみをリンクとして出していたのですが

アプリの都合上リンクとテキストを一体化させる必要があることに

気づきました。

先に言うと、ここでもLinkifyにお世話になります。

まずコードです。

</pre>
TextView text = (TextView)findViewById(R.id.link);
Pattern pattern = Pattern.compile("ここがリンクになる");
final String strUrl = "https://cpoint-lab.co.jp/";
Linkify.TransformFilter filter = new Linkify.TransformFilter() {
@Override
public String transformUrl(Matcher match, String url) {
return strUrl;
}
};
Linkify.addLinks(text, pattern, strUrl, null, filter);
<pre>

Pattern.compileの引数に該当する文字をstrUrlのリンクと

合わせてリンクとして扱うことができるようになります。

Linkify.addLinksには、一つ目はテキスト、二つ目は文字パターン、

三つ目にリンクを渡すことで文字と合体したリンクが作れるようになります。

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

【Android】GooglePlayで公開しているアプリを以前のバージョンに戻す方法

あまり使わないことを祈りたい機能ですが…先日使う機会があったのでまとめ。
Google Play Console から現在公開中のアプリを以前のバージョンに戻す方法です。

今回参考にさせていただいた記事はこちらから。

プログラム備忘録 Google Play Console で以前のバージョンに戻す方法
https://ohwhsmm7.blog.fc2.com/blog-entry-514.html

 

まず、Google Play Console の左メニューから「アプリのリリース」を選び、右上から「リリースを作成」をクリックします。
すると下記の画面に切り替わると思うので、Android App Bundle と APK を選択する項目の右上にある「ライブラリから追加」をクリックします。

こちらをクリックすると、過去に公開したアプリのバージョン一覧が表示されるので、ここから戻したいアプリのバージョンを選択します。
あとは、通常通りリリースの作業を行えばOKです。
なお、リリースメッセージは以前のリリースからコピーしてくることをおすすめします。
問題がなければ、上記の作業で前のバージョンに戻すことができます。

…が、私の環境ではよくわからないエラーが発生したため、手動で戻しました…。
時間があるときにエラーの原因を調べたいと思います。

 

以上 Google Play Console でアプリを以前のバージョンに戻す方法でした。
ご参考になれば幸いです。

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

コードの可読性の大雑把な評価指標と改善方針の紹介

 プログラミングの際には既存のコードを読むタイミング、変更するタイミングが出てきます。そういった時に可読性や変更容易性が低いコードを扱うととても大変です。このことは古く(大体1970年辺り?)から言われており、可読性や変更容易性を保つための試みが今もなされています。現在までに様々な試みがなされていますがよりよい開発手法を考案するという目的は変わっておらず、おおまかな評価の方針も変わっていません(評価の多角化、定量化は今も進化しています)。この記事では可読性に関する評価指標と改善のための方針のいくつかを紹介します。
 可読性とは理解までにかかる時間とも言いかえれます。理解までにかかる時間はおおよそコードに目を通す時間とコードの意味を把握する時間の合計です。
 コードに目を通す時間は以下の二点に分割できます。

  • 目的のコードがどこにあるか探す時間
  • 目的のコード自体を読む時間

 開発時の作業を振り返るとこんな感じです。時たまコードをダウンロードする時間(多人数のコード共有、TypeScriptの型ファイルなど)もありますがコーディングでどうこうする問題ではないので省きます。
 目的のコードがどこにあるか探す時間を詳しく言うとどのプロジェクトのどのディレクトリのどのファイルのどの行辺りに目的のコードがあるかを探す時間です。あまりにも整理されていなかったり、全く違うものに同じ様な名前がついていたりすると新規に探すのは大変です。
 プロジェクト単位で行う目的のコードがどこにあるか探す時間を改善する方法の一つとして決まりきったファイル構造を用いる、というものがあります。よく自然に行われているのがフレームワークの用意したディレクトリに適宜ファイルを配置していくやり方です。こうすると最低限クラスは取っ散らからずに済みやすいです。
 個人で行う目的のコードがどこにあるか探す時間を改善する方法の一つとしてIDEなどの機能を用いて目的のコードまでジャンプするやり方があります。言うなれば人力のハッシュ探索であり計算量O(1)の速さは格別です。PhpStormで行う方法として、Ctrl+Shift+Eの最近使ったコード一覧からジャンプする方法、F11でブクマしてShift+F11で開くブクマ一覧からジャンプする方法、Ctrl+Shift+Alt+Nのシンボル検索(関数、クラスなど)からジャンプする方法などがあります。
 目的のコード自体を読む時間はシンプルです。コードが短ければOKです。改善方法は余分なことを書かない、コピペをしない、抽象化カプセル化をして知らなくてもいい部分を知らせないようにする、といった具合です。
 コードの意味を把握する時間についての細分化はそれだけで本ができそうですが(リーダブルコードはこのあたり詳しいです)、コードを読む人の既存の知識にあてはめる(デザインパターン、フレームワーク、一般的と言えるくらい広範に広まった共通ライブラリなど)、誤解の起きないように記述する、といったあたりができるとコードの意味を把握する時間を短くできます。

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

Git for Windowsを簡単に更新する方法

LinuxなどでGitを使用している場合、パッケージマネージャなどでアップデートをかければ自動で更新してくれますが、Windowsの場合は毎回インストーラーをダウンロードして、そのインストーラーからアップデートをかける必要があり、Linuxとの使用感を比較してしまうと、ちょっと面倒でした。

実は、最近のGit for Windowsでは、手動でサイトからインストーラーをダウンロードしなくてもアップデートが可能になっていることをご存知でしょうか。

【Git】インストール済みのGitをアップデートする【Windows環境】- かずさプログラマーの雑記帳

やり方はとっても簡単。
コマンドプロンプト、Powershell、GitBashのいずれかを起動し、下記のコマンドを実行するだけです。

git update-git-for-windows

すると下記のようになり…

最新バージョンのGitインストーラーが起動します。

あとはインストール時と同様にウィザードに従って進めていくだけです。

自分でインストーラーをダウンロードしに行く手間がなくなっただけで、かなり楽になったような気がします。

WindowsでGitを使用している方は是非一度試してみてください。

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

PCのドライブがいっぱいになってきたのでUSBメモリでストレージを拡張してみた

会社で使っているPCはストレージが256GBのSSDで、起動や読み書きスピードが非常に速いのは素晴らしいのですが、最近頻繁に容量不足を起こすようになりました。

できる限りファイルの整理などは行ってみたのですが、仕事で使用する仮想マシンなども入っているのであまり減らすことができず、いよいよ限界を感じ始めていました。

SSDを換装することも考えたのですが、さすがにPCを分解するのが怖かったので、外付けストレージで対応することにしました。

最初はHDDを使ってしのいでみたのですが…

これだとせっかくノートPCを使用しているのに持ち運びがしづらくなるという問題がありました。

そこで、なるべくかさばらないタイプの新しいUSBメモリを購入することにしました。

Amazonでよさそうなものを探して、こちらの製品を購入しました。

samsung製、128GBのUSBメモリです。

Samsung USBメモリ 128GB Fitタイプ 正規代理店保証品 MUF-128AB/EC – Amazon

samsung製のUSBメモリは今回初めて使用するのですが、もともとSSDに定評のあるメーカーなので比較的安心感はあります。

実際にPCに接続してみました。

これなら刺しっぱなしにしたままでも問題なく持ち運びできそうです。

ちなみに、初期状態ではファイルシステムとしてexFATでフォーマットされていましたが…

空のテキストファイルを作成しただけで1MB使用されてしまっていたので、再フォーマットをかけて最適なクラスタサイズに変更します。

とはいってもこのUSBメモリはこのPC専用で使用する予定なので、OSの互換性を考えずにNTFSでフォーマット。

ついでにBitLockerで暗号化もかけておきます。

これで万が一紛失してもパスワードがわからなければファイルへアクセスできませんし、Windows上で使用している限りは、一度パスワードを入力してしまえは自動でロック解除や複合化・暗号化もファイルにアクセスしたり保存したりした時点で自動でやってくれるのでらくちんです。

Bitlockerの有効化方法はこちらを参考にしてください。

これでようやく、PC内でかさばっていた仮想マシンのファイル類もPCの外に出して容量を開けることができました。

速度もHDDよりも早いのでUSB接続のストレージであってもかなり快適に利用できています。

いい感じの環境になったと思うので、しばらくはこれで運用してみたいと思います。

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

【アプリ】この洋服はおうちで洗える?洗えない?が簡単にチェックできる「洗濯ナビ」

新年、明けましておめでとうございます。
本年も、どうぞよろしくお願い申し上げます。

新年最初の記事は、おしゃれ着用洗剤を探しているときに見つけたアプリのご紹介です。
花王株式会社がリリースした「洗濯ナビ」というアプリで、服のタグに記載してある「取扱い表示」を選択し、その服が家で洗えるのか、それともクリーニングに出さなければいけないものなのかを簡単にチェックできるというものです。
公式サイトはこちらから。

花王株式会社 | エマール | スマホアプリ「洗濯ナビ」
https://www.kao.co.jp/emal/sentakunavi/

 

実際の画面はこんな感じ。

ここに表示されている表示を選んで「判定する」ボタンをタップすると、お家で洗えるかどうかや洗い方を教えてくれます。
また、おすすめの洗剤についても同時に教えてくれます。

昔の「旧マーク」を調べることもできますので、昔購入したお気に入りの服も迷わず選択することができそうです。

シンプルなアプリですが、いちいち調べるのも面倒だな…と思っていた私にはとてもありがたいです。
早速週末にでも使ってみようと思います!
あと、折角なのでおしゃれ着用洗剤は花王の「エマール」にする予定です。

 

以上、花王の「洗濯ナビ」アプリのご紹介でした。

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

USBが正常に認識できなくなった時にしたこと

年明けにUSBを使ってデータをPCから取り出していたのですが

去年年末に使えていたUSBが突然

USBデバイスが正しく機能していないため、Windowsによって認識されていません

と警告を受けて認識しなくなってしまいました。

 

デバイスの修復方法は、PCの再起動とBIOSのUSBポートを有効にするのが

メジャーですが、コントロールパネルからでもデバイスのオプションを

いじることができます。今回はその応急処置についてです。

 

デバイスを初期化する(一旦削除)する方法は以下で試すことが出来ます。

 

①コントロールパネルを開く

②デバイスとプリンターー>デバイスとマネージャーを開く

③ユニバーサルシリアルパスコントローラーを展開

 

 

不明なUSBデバイス(デバイス記述子要求の失敗)と書かれているのが

今回認識されなかったUSBになります。

これをクリックし、その後このデバイスをアンインストール

で終了。

 

その後もう一回USBを差し込んで警告が出なければ成功になります。

もしこれを実施してもまだ認識されない場合はUSB自身のソフト内での故障の可能性があるので

その場合はおとなしく買い替えをしたほうがよさそうです。

※100均とかだと素材が脆く断線しやすいので心当たりのある人は注意

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

開発のみに絞ってもきれいなコードであるべきだという話

 この記事は次のリンク先のスライドに大きな影響を受けています。
質とスピード / Quality and Speed – Speaker Deck

 この記事でいうきれいなコードはテスト容易性、理解容易性、変更容易性を十分に持っているコードのことを言います。
 しばしば「きれいなコードは後からコードを読む人、使う人が困るから必要」といわれる時があります。これを更に大きくして「きれいなコードは保守運用のために必要」といわれる時もあります。しかしながら実際の業務における開発では開発の時点できれいなコードでないと時間をはじめとして色々と損が起きます。
 業務におけるシステム開発ではおおよそ次の守るべき最低限の目標があります。この辺りがあまりにも守られていない場合、納品拒否やプロジェクト立ち消えもあります。

  • 品質
    • 顧客の目的に沿った製品か
    • バグが含まれていないか
  • 速度
    • 納期は守られたか

 この目標において無視できない点は、品質を高める際にはコードの変更が不可欠という点です。
 顧客の目的に沿った製品を作るためにはある程度、完成品に近づいた製品を見せてより精度の高い目的を引き出すことが必要です。これが必要な理由は抽象的には、顧客自身が何が必要かわかりきっていない、開発者が顧客が何を欲しているかわからないのが理由です。具体的なモノを用意することによってより精度の高い要件が露になります。この話は「顧客が本当に必要だったもの」あたりでググるとより詳しい話がでてきます。より顧客が本当に必要な製品を作るためには、古い情報を元に作られた既存のコードを変える必要があります。
 「バグが含まれていないか」はシンプルです。そもそも動かないようなものは論外でセキュリティホールが空いている様なものもかなりよろしくないです。また顧客が「なんか思っていた動作と違う動作をしている」と思ったらバグの範囲です。そういった既存のコードの問題を修正するためには既存のコードを変える必要があります。
 十分な品質を達成するにはコードの変更が必要不可欠だという話をしました。そしてきれいなコードでなければコードの変更を円滑に進めるのは困難です。コードの変更にのみ着目して話をしましたが、コードの変更があったならば変更に関するテストを行う必要があります、手が空いていたり現作業者では解決困難であったりする場合は元のコードを書いた人とは異なる人が該当コード部に投入されコードを理解する必要が出てきます。そんなわけで業務における開発においては品質を高めるためにテスト容易性、理解容易性、変更容易性が役立ちます。
 最後に残された守るべき最低限の目標に「納期は守られたか」があります。要するに十分な品質を持つ製品を指定の期日までに完成させなければなりません。早く十分な品質を達成するためには先に述べた通りテスト容易性、理解容易性、変更容易性がいくらか必要になります。規模と期日によっては必要不可欠になります。
 余談ですが冒頭に挙げたスライドで引用されているマーティン・ファウラー(ソフトウェア工学辺りの分野で長らく現役で活躍しているすごい人。ソフトウェア工学の本を読むとふらっと出てきたりする)の言によるとコードの品質を意識した時の損益分岐点は一か月辺りとのことです。人や会社にもよるでしょうがほぼ全ての案件でコードの品質を意識した方がお得ですね。
 Is High Quality Software Worth the Cost?

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