2023年6月25日日曜日

チャットの共有機能、使ってますか?(ChatGPT)

 

どうも。ひっくです。

ChatGPT使ってますか?

普段使っている方は既にご存じかと思いますが、チャット内容を共有することが可能となりました。

今回はその方法を紹介します。

 

チャット内容の共有手順


手順といってもとても簡単です。チャットの履歴を選択して、共有リンクを生成するだけです。

  1. まず共有したいチャット履歴を選択して、赤枠をクリックします。

  2. 次の様に表示されるので、「Copy Link」をクリックします。

  3. クリップボードにコピーされたURLを、共有したい人に公開しましょう。

    上記で作ったリンクは、こちらとなります。

    https://chat.openai.com/share/b73733da-69d1-477b-b8be-9664325b8ee1

 

上記で公開しているリンクについて


画像生成AIで画像を生成するプロンプトの生成プロンプトを作ってみました。

リンクをクリック後、以下の様に表示されます。

「Continue this conversation」をクリックで、ご自身のChatGPT上にチャット内容が展開されます。

 

 

上記チャットで作成されたプロンプトをそのままBing Image Creator に貼り付けて作成した最終画像は、タイトル画像に使用してみました。Midjourney(ミッドジャーニー) でなくても画像生成AIであれば、簡単に画像は生成できます。

チャット内容についてあまり内容は洗練していませんが、簡単に遊んでいただけると思います。

是非試しにプロンプトを作成して、画像を生成してみてください。

 

まとめ


まだ共有機能使ったことない、という方向けに今回は共有機能について紹介しました。

こんな凄いプロンプトを作成したよ、こんな発見があったよ、この会話が面白かったよ等、

気づいたことがあれば是非共有機能を利用して、公開したい範囲で共有してみると良いのではないかなと思います。

(こんな使い方もできるのか、と新たな発見もできますし)

 

今回はこのへんで。ではまた!

2023年6月9日金曜日

PHPの学習ノート➀ー環境構築


こんにちは。  せんです。

しばらく前からphpを使っているのですが、

いつもピンポイントで調べては作業する形になってしまっているので、

基礎を確認しつつ、つまったところや気になったところを記録していきます。




今日は、環境構築編です。

概要は、

➀ XAMPPをダウンロードする。

➁ 簡単なphpプログラムを動かしてみる。

➂ IISでも動かしてみる。


php使ってみよ!と思って各サイトを調べると、  

phpの公式ページからインストールするか、XAMPPを入れるか、  

いずれかの方法が紹介されています。  


当時どんな調べ方をして、どんな経緯でXAMPPにしたのかは忘れましたが(汗)  

私自身はXAMPPをダウンロードするところから始めました。  

すでによく知られている通り、XAMPPを使って始めればphpのプログラムはかなり簡単に実行できます。  

今のところ、XAMPPを使っていることによる大きな不自由はありませんが、  

XAMPPを使うメリット、デメリットをまとめてくださっている記事もありますので、ご参考に!


XAMPPのAはWebサーバApacheを指しており、

XAMPPを入れる=Apacheで動かすことになるんですけれども、  

後からIISも有効にします。  

Webの知識がなかった当時は、「2種類どちらも使えるのか???」と思っていましたが、  

無事にどちらも動作させられたので、その過程をまとめます。  



前置きが長くなりましたが


XAMPP公式サイトからダウンロードします。  

以下のボタンをクリックするだけです!


ダウンロードフォルダのxampp-windows-x64-8.2.4-0-VS16-installer.exeをダブルクリック。

セキュリティの警告が出ればOKして、  

そのあとも「Next」を選択し続けます。

以降は以下の設定の通り、パスがC:\xamppであることを前提とします。



また、インストール終了画面の前に次のウインドウが表示されますが、  

今回は「プライベートネットワーク」の方だけにチェックしておきます。


終了画面で、そのまま起動するようチェックされていたので、  

XAMPPが立ち上がりました。  

※私の環境では、Tomcatのエラーメッセージが表示されています。今は関係ありません。


これで、XAMPPのインストールは終了です!



プログラムを動かしてみましょう!


XAMPPをインストールしたC:\xamppを開きます。  

その中に「htdocs」というフォルダがあります。  

このフォルダを「公開フォルダ」というそうです。  


たとえば、この公開フォルダ直下に「test.php」というファイルを置くと、  

「http://[host]/test.php」でアクセスできます。

公開フォルダ直下に置かれたフォルダは、ドキュメントルートとなります。


それでは、公開フォルダに「Test」というフォルダを作成し、  

Testフォルダで新しいファイル「hello.php」を作成しましょう!



「hello!」というメッセージを表示するだけの簡単なプログラムです。

(ちなみに、エディタでPHPの入力補助機能を入れていると、

最後の「?>」は不要とされます。

今回はあっても問題ありません。)  


ここで、再びXAMPP Control Panelに戻ります。

ApacheのStartボタンをクリックします。

(押したあと↓)


次にブラウザを開き、「http://localhost/Test/hello.php」にアクセスします。

期待通りの結果が得られました!



IISで動かしてみます。


IISを有効にする手順は、ここでは省略します。

CGIにもチェックすること、再起動することがポイントです。


IISマネージャを開き、ハンドラーマッピングのアイコンをダブルクリックして

モジュールを追加します。



以下のように設定します。
・要求パス
 *.php
・モジュール
 FastCgiModule
・実行可能ファイル
 C:\xampp\php\php-cgi.exe
・名前
 任意で指定

メッセージが表示されるので、「OK」をクリックします。
こういう設定がいらないところが、XAMPPの楽なところなんですね。


C:\inetpub\wwwroot直下に先ほどのhello.phpを置いて

「http://[host]/hello.php」にアクセスすると、



Apacheサーバー上では見つからないというエラーが発生しています。

XAMPPでApacheを無効にすれば、正常に動きそうなものですが、

再起動しないとずっとこんな感じです。


IISを有効にしてからApacheを起動すると、エラーになります。


どちらにせよ、問題は両方がデフォルトのポート80を使おうとしていることです。

どちらかのみを起動しておくにしても、再起動なんて面倒なことはやってられません。

というわけで、どちらかのポート番号を変更します。

どっちを変えてもいいんですが、今回はApacheの方を変更してみましょう。


こちらのサイトを参考にしました。


ApacheのConfigボタンをクリックしてhttpd.configを開きます。


Listen 80と書いてあるところがあるので、任意の数値に書き換えます。
今回は3330としました。


同じファイルでServerName 80となっているところも同じ値に書き換えます。



次にhttpd-ssl.configを開き、

同様に「Listen 443」と「ServerName ~ 443」となっているところを
別の数値に変えます。

この上で「http://localhost:3330/Test/hello.php」にアクセスすると、
期待通りメッセージが表示されました!


もちろん、IISの方もOKです!(まぎらわしいのでメッセージの内容変えました。)


終わりに


ここまで、phpの環境構築についてXAMPPを使用しながら確認しました。

phpの公式マスコットはelePHPantという名のゾウですが、
PostgreSQLやEvernoteのマスコットもゾウです。
人気なんですね(ちょっとややこしいけど)。

ご覧いただいてありがとうございました。

2023年5月28日日曜日

PowerShellでプチプログラミング

こんにちは、やっまむーです。

仕事での出来事ですが、常駐先の現場ではセキュリティの関係でPCにソフトを勝手にインストールする事は禁止されています。
当然、業務で使わないのであればVisualStudio等もインストールできず、専用のマシンを別途使わなければなりません。

そんな中、内製の暗号化ライブラリで共通鍵が期待値と異なる問題が発生しました。
ソースコードはあれど、デバッグをする事は出来ません。
何故期待値と異なるのか、暗号化クラスの使い方に問題はないかと調べる際に、実際に動作させられないことが非常に不便でした。

そんな時、PowerShellを使って簡単にですが暗号化クラスの動作確認ができたのでその方法を紹介します。

PowerShellでクラスを生成する

問題があるとされていたのは、ECDiffieHellmanCng クラスでした。
このクラスのオブジェクトをPowerShell上で生成します。(上記ページの例を参考)

このようにPowerShell上で任意のクラスのオブジェクトを生成することができます。
また、PublicKeyの取得もできます。

同様の手順でBobのPublicKeyを生成してCngKeyオブジェクトの生成まで行います。

作成されたCngKeyを使い、鍵の生成を行います。

このような手順で、ソースコードの内容をPowerShell上で再現して鍵計算の間違いを調べることができました。

複雑なコードを再現することは難しいですが、簡単な確認程度であればPowerShellでも十分に可能です。
もし、同じようにデバッグ環境が用意できない場合があれば、一度試してみてはいかがでしょうか。

ではではー。

2023年5月19日金曜日

YouTube & Article Summary powered by ChatGPTを使ってみた!

ChatGPTを使い、YouTube動画の要約を作成してくれるChrome拡張機能「YouTube & Article Summary powered by ChatGPT」を使ってみました。


インストール&設定


YouTube & Article Summary powered by ChatGPTは「chrome ウェブストア」にあります。


「Chromeに追加」すると、YouTubeの動画再生画面の右上にツールが表示されます。


言語設定を日本語に設定し、ChatGPTアイコンを押すと、ChatGPTの画面が開き、動画の要約が表示されます。


使ってみる


当社のYouTubeチャンネルで公開している動画で試してみましょう。

当社のチャンネルで公開している動画には、英語字幕を付けているものと付けていないものがあります。まずは、英語字幕を付けていない動画です。



自動翻訳の日本語字幕をもとに要約しています。語句がおかしいのは元の翻訳のせいで、要約自体はきちんとできていますね。

次に、英語字幕を付けている動画で試してみましょう。



完璧ですね!
ところが、もう一度、試したところ、下記の要約が出力されました。


先ほどは
列車は近鉄大阪線の終点である伊勢中川駅には停まらず、連絡線を通過して近鉄名古屋線に合流し、名古屋に到着します。プレミアムシートは非常に快適で、筆者はまた乗りたいと思っています。

と、「伊勢中川駅が大阪線の終点であること」「伊勢中川駅には入らず、中川短絡線を通って名古屋線に合流すること」をきちんと訳せていたのに、
「ひのとり」は伊勢中川駅で終点となり、名古屋へ向かう途中で近鉄名古屋線に合流する。約2時間以上かけて名古屋駅に到着し、プレミアム席は非常に快適である。

と、「ひのとりの終点が伊勢中川駅」と誤訳していますね。
何度か試しましたが、正しく訳せる、訳せないは半々くらいでした。


またいつか、どこかで。

2023年5月14日日曜日

GAS(Google Apps Script)でGmailのメール削除

こんにちは。ざわです。

Gmailを使っているのですが、未読件数がどんどん溜まっていってます。。

手動で削除してもいいのですが、GAS(Google Apps Script)を使ってGmailのメールを一括削除してみることにしました。

手順は以下の通り。

① GASプロジェクト作成

 GASのプロジェクト作成方法については、以前書いたこちらのブログを参照ください。

② メール削除のスクリプトを実行

 ◆ メール削除スクリプト(全体)
let cnt = 0;

function myFunction() {

  // 削除するメールの条件:スター付きでない かつ 過去1年前より古い日付のもの
  const query = '-is:starred older_than:1y';
  const threads = GmailApp.search(query, 0, 100);

  Logger.log('取得スレッド数: ' + threads.length + '件');
 
  if(threads.length > 0){  
    cnt++;
    Logger.log('処理回数: ' + cnt + '回目');

    // スレッドをゴミ箱に移動
    GmailApp.moveThreadsToTrash(threads);

    // 再帰呼び出し
    myFunction();
  }
 
}

 ◆ スクリプトの説明:

 ・削除対象とするメールの条件を指定
スター付きのメールと 過去1年分のメールは削除せずに残そうと思うので、
「スター付きでない かつ 過去1年前より古い日付のもの」を削除条件として設定します。
const query = '-is:starred older_than:1y';
 
 ・対象メールの抽出
Gmailアプリクラスの searchメソッドで、削除対象メールのスレッドを抽出します。
引数には上記の条件と抽出結果で返却されるスレッド数の最大値(ここでは100スレッド)を指定。
(最大値の引数は省略可能で、指定なしの場合は 500 になります)
const threads = GmailApp.search(query, 0, 100);

 ・ 抽出したスレッドをゴミ箱に移動
GmailApp.moveThreadsToTrash(threads);
 
 ・再帰呼び出し 
ここでは1回の削除件数を100スレッドにしているのですが、溜まっている件数はそれ以上なのでスクリプトを再帰呼び出しして、条件に該当するスレッド件数が0件になるまで繰り返し処理するようにしています。
// 再帰呼び出し
myFunction();
 
GASでは、1スクリプトの実行時間が6分間という制限があるそうで、
実行した結果、件数が多かったため 6分以上になると途中でタイムアウトエラーが発生してしまいましたが、
過去年数の条件を変えながら数回に分けて実行することで溜まりに溜まっていたメールを削除することができました。

今後、不要メールが溜まらないよう GASのトリガー機能を使って、この削除スクリプトを定期的に自動実行させたいと思います。

 ・画面左の[トリガー]アイコンをクリックし、[トリガーを追加]ボタンをクリック。

 ・イベントのソースに「時間手動型」を選択し、時間ベースのトリガータイプに任意のタイプを選択。
  (私は月1回実行するように設定)

 それではまた!

2023年4月28日金曜日

ChatGPTから見た、GPT-4の性能向上と今後の応用

 

どうも。ひっくです。

前回記事を作成した際、ChatGPTを触ってみた感想を書きました。

執筆当時、私は性能の向上にはまだ時間がかかると思っていました。

ところが2023年3月14日(米国時間)にOpenAIからGPT-4が発表され、

その後のSNS上での使用例などを見ると、認識を改めざるを得ないと考えるようになりました。

エンジニアだけでなく、今後多くの職業で生成系AIの活用が必須になると思います。

というわけで、今回もChatGPTについて取り上げます。

GPT-4とGPT-3.5の違い


GPT3.5との大きな違いは以下の3点になるかと思われます。

  • 性能が向上し、専門的な問題も回答できるようになった

      アメリカの司法試験で上位10%の成績を取得(GPT-3.5では下位10%)
  • 長い文章の入出力が可能になった

      最大32000トークン=日本語換算約30000文字(GPT-3.5では4096トークン=日本語換算約3700文字)
  • 画像入力が可能になった

      現時点では研究中のため一部のみ公開。今後公開見込みだが、精度は高そう

 

利用用途


言語を介する作業全般において、様々な応用が可能です。

新事業創出のためのブレーンストーミングや、要件定義から評価まで手助けとなるでしょう。

プロトタイプの作成でも大いに力を発揮します。現在提供されていませんが、画像入力機能が提供されたら

画面イメージから画面そのものを生成することも容易になることが想像できます。

 

また、分からないことがあると調査のためWeb検索することが多いですが、

今後はChatGPTにまず聞いてみることが多くなると思われます。

ファクトチェックが大切であることに変わりはありませんが、

プロンプト(※)に「回答の根拠となったURLがあれば教えて」と含めれば、自分で検索しなおす手間も短くすることができます。

※プロンプト: ユーザーからChatGPTに与えられる入力テキストのこと

 

GPT-4を利用したい場合


現時点では有料版の「ChatGPT Plus」か「API経由」での利用が可能です。

無料で試してみたい場合は、BingAIに「GPT-4」が採用されているのでそちらを利用しましょう。

 

プロンプトエンジニアリングについて


ChatGPTからユーザーが期待する回答を得るためには、プロンプトが重要です。

そのため、プロンプトエンジニアリング(Prompt Engineering)が注目されています。

Prompt Engineering Guide(※) の日本語版に一度目を通しておくことをお勧めします。

※AI研究の海外コミュニティDAIR.AIによって作成されたサイト

 

トークン数の限界について知る


「GPT-4とGPT-3.5の違い」でも触れましたが、一度に入出力が可能なトークン数には限界があります。

ChatGPTと会話をしていると、少し前に話した内容を忘れているように感じることがあるかと思います。

これは、ユーザーとChatGPT間の過去のやり取りをトークン数の限界範囲までで再送信しているためです。

 

トークン数は、OpenAIが提供している以下サイトを利用することで計測可能です。

自分が書いた内容が何トークンになるか知りたい方は利用してみてください。

https://platform.openai.com/tokenizer

 

変数を定義して利用する


トークン数限界を超える会話が行われている場合でも、ある特定の情報は覚えておいて欲しい場合に

変数を定義して情報を覚えてもらう、という方法があります。

 

以下に変数を定義しない場合と、定義した場合の会話例を用意しました。

  • 変数を定義しない場合
  • ~ 長いやりとり~

 

  • 変数を定義した場合
  • ~ 長いやりとり~

 

変数を定義した場合、与えた情報を回答してくれていることが確認できます。

 

まとめ


まだまだ取り上げたい内容はありますが、今回はここまでにします。

今回取り上げた内容もほんの一部でしかないほど、生成系AIを取り巻く環境は相当なスピードで

進んでいます。特にGPT-4が発表された2023年3月14日以降は、ますます進化が加速していると感じます。

 

私自身もChatGPTと会話をする中で、技術的な内容について深く掘り下げられるかどうかは、

自分が持つ技術的な知識量に大きく左右されることを痛感しています。

ChatGPTからの回答に知らない内容が含まれていた場合は、ファクトチェックを行った上で、

正しい情報であれば積極的に吸収するようにしています。

生成系AIに関する最新情報を取得・理解し、同時に自分自身の能力向上を目指していくことが、今後も重要でしょう。

 

今回はこのへんで。ではまた!

2023年4月14日金曜日

PhotoshopのPhotomergeコマンドでパノラマ画像を作成してみた!

新年度が始まり、会社で懇親会を開催しました。 
その模様を当社のYouTubeチャンネルで公開しています。


今回はいつも使用しているDJI Pocket2ではなく、スマホで撮影しました。このところ、スマホではもっぱらショート動画を撮影していたため、横で撮影するのをすっかり忘れていました💦

動画は何とか横で作成したものの、困ったのはサムネイルです。
いつもは動画から書き出したフレームを使用していますが、横のサムネイルを作成するには縦画像を何枚も並べなければなりません。
調べてみると、Photoshopに複数の画像を1つの画像に合成する機能があるようなので、使ってみました。


Photoshopの「Photomerge」コマンド


Photoshopの「Photomerge」コマンドにより、複数の画像を1つの画像に結合することができます。
使い方は簡単で、ファイルー自動処理ーPhotomergeでダイアログを開き、画像ファイルを指定して、「OK」を押すだけです。

今回指定したファイルは、

の6つで、これらを合成すると下の画像が作成されました。この画像をトリミングしてサムネイルを作成しました。

Adobeのサイトを見ると、「各画像の約40%の領域重ねる」とあり、重なりが多くても少なくてもダメなようで、実際、満足いく合成画像を得るまで、何度か画像を変更して試しました。それでも自動で、ここまでの画像を作成してくれるのですから、助かります。


またいつか、どこかで。