AI,PC,プログラミング

AIの進化がはやく、焦りながらまずはメジャーなAIサービスに課金しています。
とりあえず、お試しでChatGPTのPlus(20ドル)を1週間ほど使い、つぎにClaude Pro(20ドル)です。
Github Copilotや、Cursor、Gemeniはとりあえず無料版です。 ? アイキャッチ画像はChatGPTに生成してもらいました。NASがピンチの画像です(苦笑
触ってみた中でClaude のClaude Codeがすごいのと楽しいのと自分のやりたかったことが実現できそうなので、ずっといじってますね。 もともと献立アプリを作りたかったのを、Claude Codeにプロトタイプ作らせたら思ったものがスッと出てきたので、かなり優秀・・・。というか自分の仕事内容に焦りが出てきましたね。 作ったのはこちら。 https://kondate.domid.net/ 日付カレンダー周りの実装をやらせたら6/15を月曜日と認識したりと、なかなかバグが取れず根気よくプロンプトで指示したりして実装にはまだ手間取りますが、簡単なモックは一瞬で作ってくれるので助かります。
上記記事で、数年前に自宅サーバ内だけで献立記録アプリ作って運用してましたが、停電でサーバが故障しデータが消えてしまって、ショックが大きくしばらくやめていました。次はレンタルサーバとGitHubでソース管理したので大丈夫なはず。外部公開してしまっているので自由に使えるようにしていますが、利用規約を作らないといけないですね。

プログラミング

1週間の献立記録

1週間の献立だけを記録するwebアプリを自宅向けに開発しました。弊家では、週一で食材や生活雑貨の買い出しに行きます。スーパー、特に西友が多いですが西松屋などにも行きます。週一回の買い出しのため1週間分の献立が決まっていないと買い物リストが作る事ができません。

また、同じ献立にならないように、過去の献立を知りたいこともあります。今までは、紙のメモ用紙に書いていましたが、履歴として紙が捨てられませんでした。
子供達も、どの献立なら食べてくれるのか把握しておきたく、デジタル化したかったのです。紙の日記でもよいのですが過去の献立を追うのが大変なため、そしてすぐ記録もできるようにするためにweb化しました。社内システムならぬ宅内システムです。

アウトラインでこの記事を書いていたら以下のPDCAが出てきました。このサイクルを上手く回せればいいのですが、まだ一周目です。

構想 (plan)

実装する機能

実装する機能としては、2点のみです。リーンスタートアップのMVPです。それ以上実装に時間を使うといつまでも使用できないので、最小機能でリリースします。
– 1週間の献立入力表示
– 過去の献立回数表示

使用方法

iPhoneのSafariからアクセスし、献立の入力や確認を行うことを想定します。パソコンですと、一々起動するのが大変ななため、スマホアクセスを前提にします。

設計

Thats’s 雑です。パワーポイントでゆるゆる書きました。

開発 (do)

開発環境

開発はローカルPCでlinuxVMを立ち上げて行いました。言語はPHPで、フレームワークは仕事で何度か使った事があるfuel PHPです。
ソースコード管理はgitで外部のvisual studio team serviceを使用します。これは、無料でプライベートリポジトリが使えるのがいいですね。
将来自宅内でgitlabを立ち上げたいのですが、そこまで必要ではなかったので、外部サービスに依存します。

UIまわり

私はデザインができないため、bootstrapで最低限の見栄えのみにします。Pingendoというアプリがbootstrapでデザインできるので助かりました。

自宅サーバ

実際に自宅内でシステムを稼働させるのは、
数年前に買ったおもちゃのECSlivaを活用。Ubuntuを入れてますのでそのままlinuxサーバのステージング環境にします。
webサーバをインストールするとnginxがインストールされてしまいました。設定が分からないため、慣れているApacheをインストールし直しました。

使用 (check)

妻に実際に使ってもらいました。最初はiPhoneだと表示がおかしかったり、上手く登録出来ませんでした。
2,3日バグ取りをしてようやく使えるレベルに。
作った献立で、子供たちがごはんを食べたか進みがよいかなど履歴を残せて、ディジタル化の恩恵がうけられるようになりました。

改善 (action)

何とか動くものができてよかったです。見るただ、見た目とか見た目とかデザインとか(主に見た目)がイマイチなので、デザインスキルを上げたいです。
他にもセキュリティがゆるゆるだったり、外部に出すにはユーザ登録機能がないためその辺を実装したいです。

実装したい機能

  • ユーザ登録
  • 画像表示
  • 他ユーザの献立表示
  • いいね
  • フォロー

機能を見ると完全に某つぶやきサービスですね。
このサービスだけしかできないことを考えていきたいです。

所感

仕事で散々web開発をしてましたが、自分用に作るのは楽しさが全く違いますね。
逆にモチベがないと、仕事ではないのですぐサボって開発から離れてしまいます。
そのモチベーションがなくても、続けられるという作業方法がとにかく、5分でいいから着手するでした。最近いろいろ本が出ています。本当に毎日30分でも何かしないと続かないことを実感しました。
構想自体は子供が生まれてから、毎日の献立を決めるのに悩んでいて作ろう作ろうと考えていました。ただはじめるまでに時間がかかりました。2年ぐらい構想考えてますね。

いざ作り続け始めると、以外と進むもんだなと思います。
飲み会の日もとりあえずPCだけは起動して、CSSのスタイルだけ弄るなど本当に些細なところだけでも着手するようにしています。

プログラミング

PHPおもいで

長くサラリーマンエンジニアをやっていると、いろいろな現場に出向し様々なプログラミング言語やフレームワーク、DBを経験します。

今まで携わってきた案件の中で、PHPがプログラミング言語として一番多く携わってきました。PHP言語自体はとてもいい言語だと思います。簡単に記述できて、気軽に動かす事ができ、サクサク書けるので好きです。ただし、PHP言語をそのまま使用して何も考えずに設計実装すると、そのうちコードが煩雑になりとてもメンテナンスし辛く、バグ修正が困難になります。ただ、これはどの言語にでも言える事ですが。

PHPフレームワーク特徴まとめ

2017年時点において、私が今まで使用してきたPHPフレームワークの一覧になります。私の独断と偏見でそれぞれ特徴をまとめてみました。

名前 種類 特徴 速度 PHP最低要求バージョン FW最新バージョン 有償無償
ZendFramework 開発ツール+FW PHP開発元のFW、IDE 普通 ?PHP7 ?3 有償
Mojavi MVC PHP4時代のMVC 早い PHP4 ?1 無償
Symfony MVC LaravelのベースFW 遅い PHP5.4 3.3 無償
yii MVC 軽量 早い PHP5.4 2.0 無償
CakePHP MVC 日本で一番メジャー 遅い PHP7 3.5 無償
Laravel MVC 豊富な機能 遅い PHP7 5.5 無償
RADPHP 開発ツール+FW IDE、ビジュアル開発 遅い PHP5.2 2 有償
CodeIgniter MVC 軽量、シンプル 早い PHP5.3 3.1 無償
FuelPHP MVC 軽量、HMVC 早い PHP5.3 1.8 無償
SlimPhp C シンプル 早い PHP5.5 3.9 無償

PHPフレームワーク感想

次に今まで使用してきたPHPフレームワークについてのゆるい感想を記載していきます。

ZendFramework

言わずと知れたPHP自体をメンテナンスしているZend社のFWです。仕事で初めてphpを触れたときに使用したのもこちらです。PHP5.1ぐらいで使用していたと思います。まだ、フレームワークのバージョンは1でした。開発環境のZend Studioもセットでした。フレームワークというよりは、javaSDKのようなPHPライブラリのセットという感じでしたね。

当時はMVCの概念があまりなく、ディスパッチャ(コントローラ)とview(smarty)だけで実装していました。PHP言語自体の簡単さにも驚いた記憶があります。

Mojavi

PHP4時代のメジャーフレームワークですね。
フレームワークですが、提供されているファイルが、1つだけという衝撃的でした。しかし、きちんとMVCで設計実装できるので、見通しが良かったです。この辺から、フレームワークのソース自体を見るようになりましたね。

Symfony

ほぼフルセットで備わった大規模フレームワークです。
セキュリティ周りも整備されていて、テンプレートエンジンやバッチ周りも完備されていました。

yii

イーと読むらしいです。イーフレームワーク。オープンソースソフトウェアを導入するときに、yii上で実装されていて、改造するときにフレームワークをいじりました。こちらも一通り機能が揃っています。

CakePHP

こちらもフルセットですね。CakePHPはRailsの影響を受けて作られたそうです。ModelのORM系はActiveRecordに似ています。日本で一番有名なPHPフレームワークとなっています。

バージョンが古いPHPもサポートしているため、使用しやすいのかもしれません。

Laravel

欧米では流行っているフレームワークだそうです。最近日本でも使われている事が多くなってきたのかもしれません。

RADPHP

PHPで唯一ビジュアル開発できるツールのようです。DelphiやC++Builderという単語にピンときたらコチラ。しかし開発は停止している模様。

CodeIgniter

最近使用したため、コメント多めです。

シンプルです。機能は一通り揃っていますし、MVCとしても使えます。ただいくつか、自分で決め事をしないとならないため、コーディング量が多くなりがちです。コントローラですと外に見せるアクション名はpublicにするだけです。名前なども自由です。

よいところとしては、フレームワーク内部のソースが読みやすいため拡張しやすく、使い方がわからない機能が、あってもコードを読むとよく分かります。

何故かベースコントローラ名が決まっていたりしますが、とりあえず変えられます。アクションメソッドの前に実行しておきたい処理などは、大抵のフレームワークでは、beforeフィルタなどがついてたりしますが、codeigniterはないため自分で名前を決めて書いておく必要かあります。

FuelPHP

初期codeigniterがライセンスで揉めている間に、codeigniterに代わるフレームワークとして開発されてきたようです。

ただcodeigniterと比べてかなり機能追加されています。実装のしやすさは、やはり決め事が多いため自分でコードを書いて行く人には使いやすいかと思います。

特徴的なのはHMVCとい構造で実装できる事です。他のフレームワークにはない形で、ヒエラルキーMVCと書くように、MVCを階層構造で実装できる点です。大きなプロジェクトなどでは、単体のMVCだけでは整理できず1ディレクトリにコントローラが大量に置かれがちです。このHMVCを採用すれば、ディレクトリの様に階層構造で表現できるようになります。

SlimPhp

こちらは、シンプルにコントローラのみの実装で済みます。最近ではマイクロフレームワークと呼ばれるジャンルのようです。やはり、よく使われるのはWeb APIや、マイクロサービスなどが多いですね。

00年代のフレームワーク

00年代のPHPフレームワーク記事はこちらが参考になりました。

PHPフレームワークの歴史と現状

 

 

プログラミング

VisualStudio 2017 CommunityEdition インストール

導入

Unityをいじってみようと思い、まずはUnityをインストールしました。
また、AndroidやiOS、Windowsでまとめて動かせるということでXamarinに興味がわき、VisualStudio2017をインストールしました。
現在VisualStudio2017は大きく分けて、3種類提供されていてそのうちの一つComunittyEditionは無償で利用できるようです。

インストール方法

インストール方法は、Qiitaの記事を参照ください。
https://qiita.com/ytabuchi/items/f71c942a423e5ad82c6e

感想

インストール後、クロスプラットフォームアプリケーションでプロジェクトを作成し起動してみました。
Windowsはまず起動し、Androidもエミュレータと同時に立ち上がりました。すごい。
iOSはMacのようで、MacBookAirを持っていますが連携はしていません。
VisualStudio自体は6から使ってますが、益々高機能になって、サクサク開発できるようになっていきますね。
昔はMFCやSDKといって、、、それは置いておいて。

注意

一つ注意点としては無償版だからといって、必要そうな複数のコンポーネントを入れてみましたがあっという間にインストール容量が40GB超えました。
HDDやSSDの容量を気にしながらインストールする必要があります。
現在、256GBのSSDを使っていますが、VisualStudioやUnityなど開発環境を入れるとあっという間に、容量がなくなっていきます。そろそろ512GBの容量に移行かなぁ。

次回

次はUnityとVisualStudioで動作確認をしてみます。
VisualStudio tools for UnityでUnityと連携するようです。

プログラミング

仕事でVagrantを使い始めて意外と便利かもと気づきました。
いままではVmwarePlayer WorkStation FUSION ESXiやXENも
VirtualBOXもそのまま使ってきたけど、
コマンドラインで仮想マシンを操作できるのはいいですね。
AWSのインスタンス起ち上げみたいに気軽にできて壊すのも簡単。怖いですが。

新しく開発ツールとしてPHPStormも使い始めてますが、
IDEとしてとても優秀ですが長年のEclipseの感覚が染みついてイマイチ馴染みづらいです。
Xcode使ってるときのような違和感ですかね。
この会社のIDEは他言語だとRubyやObCもあるので慣れておくとよさそうですね。
それよりVisualStudio2013が無料化の方が驚きでこっちを先にインストールしてしまいました。