オンライン肥料教室を開催しています
検索キーワード:「ライブラリ」
 

SOY CMSでOpenStreetMapプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向けに、自由に地図作成に参加できるOpenStreetMapを活用した新プラグインがリリースされました。このプラグインはLeafletライブラリを使用し、あなたのSOY CMSサイトにインタラクティブな地図を表示し、ブログ記事の関連地点をピンでマッピングすることが可能です。当ブログ運営者が、各地を巡って投稿した記事を妻の要望で分かりやすく整理するため開発されました。旅の記録、地域情報、店舗案内など、位置情報とコンテンツを紐付けて魅力的に発信したい方に最適です。サンプルページで機能を確認でき、専用サイトからダウンロード可能です。SOY CMSサイトの表現力を格段に向上させます。

 

SOY Shopの顧客管理で属性値の項目名を変更できるようにしました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能強化として、属性1〜3の項目名を自由に設定できるようになりました。これにより、顧客の詳細検索だけでなく、顧客一覧ページの簡易検索でも活用できます。 従来は「属性1」のような固定名称でしたが、例えば「郵便番号」「誕生日」「紹介者」など、自由に名称を設定できます。この変更により、顧客情報の管理と検索がより便利になります。 また、SOY2フレームワークではSOY Shopの顧客管理と連携できるライブラリを提供しており、ログイン機能などを簡単に実装できます。

 

SOY CMSでSCSSコンパイラを実装しました

/** Geminiが自動生成した概要 **/
SOY CMSにSCSSコンパイラを実装する方法を解説した記事です。scssphpを用い、ページ出力時にSCSSファイルをコンパイルして表示するモジュールを作成します。具体的な手順としては、scssファイルを配置し、モジュールにコンパイル処理を記述します。記事ではサンプルコードも紹介されており、ダウンロード可能なパッケージも提供されています。@importの記述に誤りがなくstyle.cssが空の場合、pscssに実行権限を与える必要がある場合があります。

 

Minecraft: Pi Edition: RebornのSDKを使ってみる2

/** Geminiが自動生成した概要 **/
この記事では、Minecraft: Pi Edition: Reborn (MCPI++) のSDKにあるライブラリを呼び出す方法を解説しています。 CMakeを使ってプロジェクトを作成し、SDKのヘッダーファイルをインクルードします。サンプルコードでは、libreborn.hをインクルードし、空の関数を定義しています。 CMakeLists.txtでは、SDKへのパスを設定し、ビルドターゲットとして共有ライブラリを作成しています。 ビルド後、生成されたライブラリをmodsディレクトリに移動し、MCPI++を起動して動作を確認します。

 

Minecraft: Pi Edition: RebornのSDKを使ってみる

/** Geminiが自動生成した概要 **/
Minecraft: Pi Edition: Reborn (MCPI) の拡張SDKを使い、ターミナルに"Helloworld"を出力する手順を紹介しています。 まずMCPI++ 2.4.3-3をインストールし、C++コンパイラなどの開発環境を整えます。 次に、"Helloworld"を出力するコードを記述した"hello.cpp"を作成し、共有ライブラリとしてコンパイル、MCPIのmodsディレクトリに配置します。 MCPIを実行すると、起動時に"Helloworld"が出力されます。これは、共有ライブラリ内の特定の関数がエントリポイントとして機能するためです。 記事では最後に、ゲーム画面に影響を与えるコードの作成に意欲を示しています。

 

キーボード一体型のRaspberry Pi 400を購入した

/** Geminiが自動生成した概要 **/
子供がRaspberry Pi 4B 8GBでマインクラフトをプレイするため、発熱と火傷が心配で購入に至った。ケースに入れているものの電子工作がしにくいという欠点もあった。マイクラを通してプログラミングに興味を持ち、Pythonでコードを書きながらプレイするようになった。Raspberry Pi 400の発熱がどれ程なのか検証したい。

 

ChromebookでMinecraft: Pi Edition: Rebornを動かしてみた

/** Geminiが自動生成した概要 **/
LXC (Linux Containers) は、単一のLinuxカーネル上で複数の分離されたLinuxシステム (コンテナ) を実行するためのOSレベルの仮想化手法です。各コンテナは独立したシステムリソース (CPU、メモリ、ネットワークなど) を持ち、ホストOSや他のコンテナから隔離されます。 LXCは、chrootのような従来の分離機構よりも軽量で効率的でありながら、仮想マシンよりもオーバーヘッドが少なくなっています。これにより、開発、テスト、運用環境において、アプリケーションの移植性、セキュリティ、リソース効率を向上させることができます。LXCは、DockerやLXDなどのコンテナ技術の基礎となっています。

 

Minecraft: Pi Edition: Rebornでmcpiライブラリを試す

/** Geminiが自動生成した概要 **/
記事では、プログラミング教育に最適な環境として、ARMアーキテクチャ、Debian系OS、Pythonの組み合わせを提唱しています。低価格なRaspberry Piを例に挙げ、その手軽さ、豊富なライブラリ、活発なコミュニティが教育現場にもたらすメリットを解説しています。従来の教育用PCよりも安価で汎用性が高く、電子工作などにも応用できる点が魅力的だと結論付けています。

 

Raspberry PiにPH4502Cを繋いでみた

/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiにpHメーターPH4502Cを接続し、pHのアナログ値をデジタル値に変換して取得する方法を解説しています。 筆者は、MCP3208というAD変換器を用い、GPIO Zeroのライブラリを使ってRaspberry Piで値を読み取っています。 記事内では、回路図やコード例、実験中の問題点と解決策が詳しく説明されています。 最終的には、水道水のpHを測定し、約2.8Vの電圧値を得ることに成功しましたが、値のばらつきが課題として残りました。 筆者は、今後さらに知識を深め、GPIO Zeroを使わない方法やpH測定の精度向上に取り組む予定です。

 

プログラミング教育で注目すべきはARM + Debian + Pythonであるはずだ

/** Geminiが自動生成した概要 **/
プログラミング教育の格差解消には、安価で高性能なARMアーキテクチャ搭載PCが有効である。Raspberry PiはDebian系OSとPythonを標準サポートし、電子工作から本格的な開発まで対応可能なため、ChromebookやMicro:bitよりも優れている。ARM対応ソフトの充実が課題だが、低価格でDebianやPythonに触れられる環境は、OSSやサーバー学習へのハードルを下げ、将来的なIT人材育成に貢献する。

 

Raspberry PiでLCDに文字列を出力する

/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiとI2C接続のLCDディスプレイを使って文字列を表示する方法を解説しています。 まず、Raspberry Piの設定でI2Cを有効化し、LCDのI2CモジュールをGPIOピンに接続します。接続が正しければ、「i2cdetect -y 1」コマンドでI2Cアドレスが表示されます。 次に、OSOYOOのライブラリ「i2clcda.py」を使ってPythonコードを作成し、LCDに文字列を表示します。コードでは、ライブラリをインポート後、「lcd_init()」でLCDを初期化し、「lcd_string()」関数で文字列と表示位置を指定して出力します。 表示されない場合は、I2Cモジュールのポテンショメータを調整してコントラストを調整する必要があります。

 

PHP8でMacabを使い、任意の文字列の読み方を取得する

/** Geminiが自動生成した概要 **/
PHP8でMeCabを使い、文字列の読み方を取得する方法について記述されています。PHP拡張のphp-mecabがPHP8では動作しないため、exec関数でMeCabコマンドを実行し、出力結果を解析することで読み方を取得しています。「初心者用シューズ」を例に、カタカナで「ショシンシャヨウシューズ」、ひらがなで「しょしんしゃようしゅーず」と出力するコードが紹介されています。Ubuntu 20.04、PHP 8.0.10環境で動作確認済みです。PHP8で動作するMeCabライブラリがあればより良いと述べています。

 

SOY Shopの商品名検索でオートコンプリートを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品検索にオートコンプリート機能を追加するプラグインがリリースされました。商品ごとに読み方を登録することで、ひらがな・カタカナでの検索や、漢字・ひらがな・カタカナの部分一致検索が可能になります。 プラグインはJSライブラリを自動で読み込みますが、HTMLの記述によってはうまくいかない場合もあるため、その際は掲示板への連絡を推奨しています。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。

 

SOY CMS / SOY ShopでライブラリをCDN経由にする設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS/Shopの管理画面で利用するjQueryやBootstrapをCDN経由で読み込む設定が追加されました。これにより、管理画面で読み込むファイル数を減らし、サーバー負荷を軽減します。設定方法は、`/CMSインストールディレクトリ/common/config/user.config.php`を作成し、`define("SOYCMS_READ_LIBRARY_VIA_CDN", true);`を有効にするだけです。リンク色の変更など、一部表示に影響が出る可能性がありますが、順次修正予定です。最新のパッケージはサイト(saitodev.co/soycms/)からダウンロードできます。

 

SOY ShopのGoogle Sign-In for WebsitesプラグインをSign In With Googleに変更しました

/** Geminiが自動生成した概要 **/
SOY ShopのGoogleログインプラグインが、Google Sign-In for WebsitesからSign In With Googleにアップデートされました。変更に伴い、HTMLタグやスクリプトを修正する必要があります。 以前は`googleUser.getBasicProfile()`でユーザー情報が取得できていましたが、現在はJWTが返却されるため、Base64デコードが必要です。`parseJwt`関数でJWTをデコードし、`json.email`でメールアドレスを取得します。 詳細はプラグイン詳細画面とサイト(saitodev.co/soycms/soyshop/)を参照してください。

 

ChromebookでPythonのmatplotlibを試してみた

/** Geminiが自動生成した概要 **/
ChromebookでPythonの数学ライブラリNumPyと可視化ライブラリmatplotlibの動作検証を行いました。ASUS Chromebook Detachable CM3で、Linux環境を利用し、`sudo apt install`コマンドで必要なパッケージをインストールしました。TkinterのGUI表示、及び以前作成したmatplotlibを使ったコードの実行に成功。Windows10のWSL2環境ではGUI表示ができなかった一方で、Chromebookでは問題なく動作しました。今後はデータサイエンス向けプラットフォームAnacondaのChromebookでの動作検証も検討しています。

 

ChromebookのLinuxアプリで日本語入力をできるようにする

/** Geminiが自動生成した概要 **/
ChromebookのLinuxアプリで日本語入力をするために、MozcとFcitxをインストール・設定する方法を解説。locale設定後、MozcとFcitxをインストールし、設定ファイルを編集してFcitxを自動起動するように設定。fcitx-configtoolでMozcを追加し、geditで日本語入力を確認。geditでは挙動が怪しかったが、他のアプリでは正常に動作。Javaアプリでも日本語入力可能になった。cros-imを使う方法もあるが、geditでは漢字変換できない問題がある。

 

QRCode.jsを試してみた

/** Geminiが自動生成した概要 **/
使い捨てURLのQRコードをBootstrapのモーダル内に表示する際、QRCode.jsで生成したQRコードのセンタリングに苦労した。QRCode.jsは簡単にQRコードを生成できるが、出力される<div>内の<img>タグの幅が100%になるため、`text-center`クラスが効かない。DOMで出力された<canvas>タグのサイズに合わせて、<div id="qrcode">に`style="width:128px;margin:0 auto;"`を指定することで、QRコードをモーダル中央に表示できた。

 

OpenStreetMap + Leafletを試してみた

/** Geminiが自動生成した概要 **/
この記事では、Google Maps JavaScript APIの代わりにOpenStreetMapとLeafletを使って地図を表示する方法を紹介しています。OpenStreetMapは無料で利用でき、Leafletは簡単に地図を表示できるJavaScriptライブラリです。 記事では、大阪府高槻市の摂津峡を例に、緯度経度を指定して地図を表示し、マーカーを設置する手順をコード付きで解説しています。結果として、少ないコードで簡単に地図上にマーカーを表示することができました。

 

SOY CMSを介さずにSOY2Mailでメールを送信してみる

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2Mailでメールを送信する方法を紹介しています。PHPのmail関数より手軽にメール送信できるSOY2Mailを使うため、SOY CMSのsoy2_build.phpを流用し、sendmailを利用する設定でSOY2Mailを初期化します。宛先、送信元、件名、本文を設定後、sendメソッドで送信します。ヘッダーやエンコードの設定は自動で行われます。この記事は、SOY2HTMLやSOY2DAOをSOY CMS外で使う方法を紹介した記事と関連しています。

 

SheetJSを試してみた

/** Geminiが自動生成した概要 **/
SheetJSは、ブラウザ上でHTMLテーブルから簡単にExcelファイルを生成できるJavaScriptライブラリです。デモを改修し、テーブル要素を指定して`XLSX.utils.table_to_book`でブックオブジェクトを生成、`XLSX.writeFile`でExcelファイル(xlsx)として出力する簡単なコードで実装できます。 表示されたHTMLテーブルのダウンロードボタンをクリックするだけで、テーブル構造を保持したExcelファイルがダウンロードされます。著者は従来PHPのPhpSpreadSheetを使用していましたが、SheetJSも選択肢に加えるとのことです。

 

SOY InquiryでParsley.jsを利用する

/** Geminiが自動生成した概要 **/
SOY InquiryにParsley.jsを組み込むと、見栄えの良い入力内容チェックが利用できます。フォームテンプレートにParsley.jsのスクリプトを挿入し、SOY Inquiryのフォーム設定画面で各項目にdata-parsely-triggerとrequired属性を設定します。さらに、data-parsely-required-message属性を追加すると、エラーメッセージをカスタマイズできます。これにより、各項目に合わせたエラーメッセージが表示され、ユーザーフレンドリーなフォームが作成できます。

 

SOY ShopのマイページのフォームでParsley.jsを使用する際に注意すること

/** Geminiが自動生成した概要 **/
SOY2HTMLでセキュアなフォームを設置するには、csrf_tokenを利用する。HTMLFormクラスでformタグを出力すると自動的にトークンが埋め込まれる。トークンはセッションに保存され、送信時に検証されるため、クロスサイトリクエストフォージェリを防げる。 独自にformタグを作成する場合は、soy:id="csrf"でトークンを埋め込む必要がある。また、JavaScriptで非同期通信を行う場合も、トークンをヘッダーやパラメータに含める必要がある。トークンの有効期限は短いため、フォームの送信に時間がかかる場合は注意が必要。これらの対策により、安全なフォームを実現できる。

 

pickadate.jsでHTML5のrequired属性を使いたい

/** Geminiが自動生成した概要 **/
pickadate.jsでHTML5のrequired属性を使うには、`editable: true`オプションを設定する必要がある。ただし、これによりページ読み込み時にrequiredチェックが実行され、未入力エラーが表示される問題が発生する。これを回避するには、フォームにIDを付与し、クリックイベントでpickadateを初期化するよう変更する。さらに、カレンダー表示のために`pickr.pickadate('open')`も追加する必要がある。これにより、フォームクリック時に初めて初期化とバリデーションが行われるようになり、初期エラー表示の問題が解決する。

 

緑の溜池でアイリスの花が咲いていた

/** Geminiが自動生成した概要 **/
近所の溜池でアヤメ科の植物(アイリス)が咲いていた。この溜池は緑藻の増殖により緑色だが、いずれ動物プランクトンが増え茶色に変わるという。緑色は光合成による酸素放出を、茶色は呼吸による酸素消費を意味する。プランクトンの種類が変化しても微量要素の使用量はほぼ変わらないと考えられる。アイリスにとって、溜池の色変化はストレスになり得るのか、緑藻の増殖に合わせた開花戦略があるのか疑問に思った。

 

Go言語でSearch Consoleの値を取得してみる

/** Geminiが自動生成した概要 **/
Go言語でGoogle Search Console APIから検索クエリデータを取得する方法を解説しています。必要な手順として、Google Cloud ConsoleでSearch Console APIを有効化し、認証情報を作成、Search Console側でユーザー権限を設定します。Goのコードでは、`golang.org/x/oauth2`、`google.golang.org/api/webmasters/v3`ライブラリを使用し、認証情報`secret.json`を用いてSearch Console APIにクエリを送信、過去7日間の検索クエリデータを取得・表示します。

 

妻がプログラミングをはじめてGo言語とQtでアプリを公開するまで

/** Geminiが自動生成した概要 **/
妻にプログラミングを教えた動機は、事務職希望の女性こそプログラミングスキルを身につけるべきだという考えに基づいている。事務作業はルーティン化しやすい反面、変化への対応が求められる。プログラミングは論理的思考力や問題解決能力を養い、変化への対応力を高める。これらは事務職で役立つだけでなく、キャリアの幅を広げる可能性も秘めている。妻は最初の実験台であり、私自身にとっても新たな言語を教える貴重な経験となった。将来的には、プログラミング教育の普及を通じて、女性がより活躍できる社会を目指したいと考えている。

 

Go言語でGoogle Analyticsのデータをチャットワークに送ってみる

/** Geminiが自動生成した概要 **/
Go言語でGoogle AnalyticsのページビューをChatworkに送信するコードを紹介しています。 Google Analytics APIを用いて前日のページビューと日付を取得し、Chatwork APIで指定のルームに投稿します。 コードでは、認証情報、GAのプロファイルID、ChatworkのルームIDとAPIトークンが必要です。 `Data.Ga.Get`メソッドで前日のページビューを取得し、`Dimensions("ga:date")`で日付も取得します。 取得したデータはChatwork APIのPOSTリクエストで送信されます。 実行にはGoogle API Consoleで取得した認証情報が必要です。 具体的な手順やコードの全体はGitHubリポジトリを参照ください。

 

Go言語でQtを扱ってみる on Windows

/** Geminiが自動生成した概要 **/
Windows10でGo言語とQtの開発環境を構築する方法を解説。MSYS2とQtをインストールし、Go言語のパッケージを取得・設定後、サンプルコードを実行する手順を説明。環境変数の設定やQtインストール時のコマンド、Goのパッケージ設定コマンド、サンプルコード実行コマンド、発生したエラーと解決策(libicudt61.dll不足)について記述。

 

Go言語でExcel形式のファイルを作成

/** Geminiが自動生成した概要 **/
Go言語でExcelファイルを作成する方法を解説しています。`tealeg/xlsx`ライブラリを使用し、`xlsx.NewFile()`でファイル構造体を作成、`AddSheet("")`でシートを追加します。`sheet.Cell(行, 列).Value = "値"`でセルに値を入力します。行、列は0始まりで、(0,0)はA1セルを表します。`file.Save("ファイル名.xlsx")`でファイルを保存します。サンプルコードでは"kaeru.xlsx"に"usa"、"kuma"、"dora"、"pao"を書き込んでいます。

 

Go言語のSQLiteドライバでデータを挿入してみる

/** Geminiが自動生成した概要 **/
Go言語でSQLiteを操作し、データを挿入する手順を説明しています。まず、MSYS2を用いてSQLiteドライバをインストールします。次に、`sql.Open`でデータベースを開き、`db.Exec`でSQL文を実行します。テーブル作成の例では、`CREATE TABLE`文を変数`s`に格納し、`db.Exec(s)`で実行します。データ挿入の例では、`INSERT INTO`文を変数`t`に格納し、`db.Exec(t)`で実行します。`_ "github.com/mattn/go-sqlite3"`は必須で、手動で追記する必要があります。

 

UbuntuにAndroidのエミュレータを入れる

/** Geminiが自動生成した概要 **/
Ubuntu 18.04にAndroidエミュレータを導入する方法。必要なライブラリをインストール後、Android Studioをダウンロード、インストールし、パスを通す。次に、KVM関連のライブラリをインストールし、ユーザーにKVMの使用権限を与える。Android Studioを再起動し、AVDマネージャーから好みのエミュレータを作成、実行することで、開発機上でAndroidアプリの動作確認が可能になる。

 

会議用の資料の作成時間を短縮したい

/** Geminiが自動生成した概要 **/
SOY CMS/Shop開発元出身の筆者は、非IT系企業における会議資料作成の手間と時間の長さに衝撃を受けた。販売管理ソフトから出力されたデータはそのままでは会議で使えず、手作業での修正に半日かかることも。一方、筆者の前職では必要なデータはプログラミングで出力し、再利用可能なため資料作成は効率的だった。 最近、弥生販売ユーザー向けにExcelデータ整形用のWebアプリを作成したところ、月1回半日~1日かかっていた作業が20分に短縮されたという報告を受けた。事務員の負担軽減だけでなく、会議開催の柔軟性向上にも繋がり、事業主にとって大きな価値となる。 アメリカ企業ではプログラミング可能な人材を社内に置くことが多い一方、日本では外注依存が多く、これが日本企業の閉塞感に繋がっているのではないかと筆者は指摘する。会議資料作成に多大な時間をかける現状は、その象徴的な例と言える。

 

SOY CMSを介さずにSOY2HTMLを使ってみる

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにそのテンプレートエンジンであるSOY2HTMLのみを利用する方法を解説。ルートディレクトリにindex.php、webappディレクトリ下に必要なファイルを設置する構成で、index.phpでSOY2ライブラリを読み込み、SOY2HTMLの設定を行う。HTMLファイル(TopPage.html)と対応するPHPファイル(TopPage.class.php)を作成し、soy:idを使った表示内容の変更例を示している。PHPファイルではWebPageクラスを継承し、コンストラクタでHTMLファイルを読み込み、addLabelでsoy:idに対応する値を設定することで、HTMLのsoy:id部分がPHPで指定した値に置き換わって表示される。

 

河川の草群の中心にいるのはキショウブ

/** Geminiが自動生成した概要 **/
鴨川の草むらで黄色い花が目立ち、アヤメ科の特徴からキショウブと判明。調べると、環境省が「要注意外来生物」に指定し、在来種との競合や駆逐のおそれがある植物だった。繁殖力の強いキショウブの花茎に、巻きひげで他の植物に絡みつくカラスノエンドウが巻き付いていたが、花茎は少ししか曲がっておらず、キショウブの強さを実感させる。

 

チャットワークとGoogle Apps Scriptで音声入力で投稿してみる

/** Geminiが自動生成した概要 **/
Googleドキュメントの音声入力とGoogle Apps Scriptを連携させ、チャットワークへの投稿を音声で行う方法を紹介。 「チャットワーク(投稿内容)終了」と話しかけると、内容がチャットワークに送信されるスクリプトを作成。1分毎にスクリプトが実行され、ドキュメントの内容をチェック、投稿後ドキュメントはクリアされる。APIトークン、ルームIDの設定が必要。音声入力はドキュメントのツールから利用可能。Androidスマホでは音声入力の設定を事前に確認する必要がある。この方法で、両手が塞がっている状況でもチャットワークに投稿可能。実用時はタスク登録ルールやToの指定が推奨される。

 

Google Apps Scriptからチャットワークに投稿してみる

/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)を使ってChatWorkに投稿する方法を紹介。ChatWorkClient for Google Apps Scriptライブラリを利用し、APIトークンとルームIDを指定することで簡単にメッセージを送信できる。GASのトリガー機能と組み合わせれば、Gmail受信やGoogleカレンダーの予定に基づいて自動投稿するなど、業務効率化に役立つアプリを簡単に作成可能。ChatWorkとG Suiteの連携で業務改善を実現できる。

 

WindowsでGo言語

/** Geminiが自動生成した概要 **/
Windows 10でGo言語開発環境を構築する手順をまとめた記事です。Git、Go、Atomエディタをインストールし、日本語化やGo開発に必要なパッケージを追加します。AtomでGoファイルを作成し、"hello world"を出力するサンプルコードの実行までを解説しています。Go言語のバージョンは1.9.4、Windowsは64bit版を使用しています。最後に、アンチウイルスソフトの設定が必要になる場合があることに触れています。

 

Googleドキュメントで画像ファイルから文字列を抜き取ってみる

/** Geminiが自動生成した概要 **/
GoogleドキュメントのOCR機能を使って画像ファイルから文字列を抽出する方法を紹介しています。手書きの名前が書かれた画像ファイルをGoogleドライブにアップロードし、Googleドキュメントで開くと、画像の下に文字列が抽出されます。著者は元々オープンソースのOCRライブラリを探しており、NHocrを試しましたが精度が及ばなかったため、GoogleドキュメントのOCR機能の精度の高さに驚いています。GoogleドキュメントがNHocrを組み込んでいる可能性や、GoogleのOCR APIの利用についても言及しています。

 

Seleniumとphp-webdriverでUIテストの自動化

/** Geminiが自動生成した概要 **/
Ubuntu 19.10のSnap版Chromiumでは、Seleniumのテスト自動化が実行できない場合があります。これは、Snapのセキュリティ制限により、SeleniumがChromiumを直接操作できないことが原因です。解決策は、ChromiumをSnap版ではなく、aptでインストールしたバージョンを使用することです。まず、`snap remove chromium`でSnap版を削除し、`sudo apt install chromium-browser`でapt版をインストールします。さらに、ChromeドライバーのバージョンとChromiumのバージョンが互換性があることを確認してください。これらの手順により、SeleniumはChromiumを正常に操作できるようになり、テスト自動化が実行可能になります。

 

Node.js製のアプリをforeverで永続化する

/** Geminiが自動生成した概要 **/
Node.jsアプリをサーバ再起動後も自動的に起動し、かつ実行中にエラーで停止しないようにする方法。foreverライブラリを利用し、`npm install -g forever`でインストール。`forever start /path/to/app.js`でアプリを起動・永続化。`@reboot /usr/local/bin/forever start /path/to/app.js`をcronに登録することで、サーバ再起動時に自動的にアプリが起動するようになる。

 

土壌分析アプリSoil3 on SOY Shop

/** Geminiが自動生成した概要 **/
長野県栄村小滝集落は、標高が高く冬季の積雪が多い地域。良質な米作りには土壌の理解が不可欠で、土壌図インベントリーとシームレス地質図を活用。インベントリーからは「黒ボク土」と判明し、保水性が高い反面、養分保持力が低い特性が明らかに。地質図からは、付近に蛇紋岩が多く分布し、土壌が弱アルカリ性であると推測。これらの情報から、小滝集落の土壌は水はけがよく、ミネラル豊富な一方、窒素が流亡しやすい特徴を持つと結論づけ、適切な施肥設計の必要性を示唆した。実際、小滝集落の土壌はpH7.0~7.2を示し、分析結果と合致した。この事例は、公開データを用いた土壌分析の有効性を示している。

 

Socket.IOのチャットアプリでXSS対策

/** Geminiが自動生成した概要 **/
Socket.IOで作成したチャットアプリでXSS脆弱性対策を実施した。HTMLタグを入力するとエスケープされずに表示されてしまうため、`xss-filters`ライブラリを導入。`npm install xss-filters`でインストール後、サーバーサイドのメッセージ送信部分で`xssFilters.inHTMLData()`を用いて送信メッセージをフィルターした。その結果、HTMLタグがエスケープされて表示されるようになり、XSS攻撃を防ぐことができた。

 

Node.jsとSocket.IOでリアルタイムのチャットアプリを作ってみる

/** Geminiが自動生成した概要 **/
Node.jsとSocket.IOを用いたチャットアプリ構築後、Let's Encryptで常時SSL化する方法を解説。自己署名証明書ではブラウザ警告が出るため、無料のLet's Encryptを利用。Certbotによる証明書取得手順、Nginxの設定変更(SSL設定追加、httpトラフィックのhttpsリダイレクト)を説明。 Socket.IOのサーバー側コード修正では、httpsオプションを追加し、取得した証明書と秘密鍵を指定。これにより、チャットアプリがセキュアなhttps接続で利用可能になる。

 

SOY Shopの標準配送モジュールでカレンダー形式でお届け日指定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの標準配送モジュールがアップデートされ、お届け日指定をカレンダー形式で入力できるようになりました。従来のセレクトボックス形式に加え、カレンダー形式を選択可能になり、日付の選択範囲も設定できます。 これは試作段階で、カートでのjQueryライブラリの読み込み状況に関わらず動作するよう改良中です。需要があれば、未対応箇所の開発も進められます。最新版はsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

PHPでPythonの機械学習のライブラリを利用してみる

/** Geminiが自動生成した概要 **/
PHPでPythonの機械学習ライブラリを利用する方法を検証。サンプルデータを使用してk近傍法によるアイリスの品種判定を実施。Pythonスクリプトで学習と判定を行い、PHPスクリプトでデータを送受信することで、PHPでPythonの機械学習機能を活用できることを確認した。

 

SOY CMSのバージョンアップについて

/** Geminiが自動生成した概要 **/
SOY CMSを古いバージョンから最新版にバージョンアップするには、0.1ずつ段階的にバージョンアップし、公式サイトのバッチファイルを適用します。1.5系以降は一気にバージョンアップできますが、初期管理者でログインしてキャッシュをクリアしてください。1.11系以降のSOY Shopは自動バージョンアップに対応しています。

 

PHPExcelを使ってみた2 ファイルアップロード編

/** Geminiが自動生成した概要 **/
PHPExcelライブラリを用いたExcelファイル読み込み処理にファイルアップロード機能を追加。$_FILESを利用し、アップロードされたExcelファイル(xls/xlsx)を動的に読み込むよう改修。 フォーム経由でファイルを選択・アップロードすると、セル内の値が表示される。主な変更点は、ファイルアップロードをトリガーとする条件分岐の追加、ファイルパスと拡張子の取得方法の変更、HTMLフォームの追加。これにより、任意のExcelファイルの内容を表示できるようになった。

 

PHPExcelを使ってみた

/** Geminiが自動生成した概要 **/
PHPExcelライブラリを使ってExcelファイルからデータ抽出する方法を紹介。Ubuntu 17.04、PHP 7.1.5環境で、php7.1-xml、php7.1-gd、php7.1-zipをインストール後、PHPExcelをダウンロード。サンプルxlsファイルからデータを読み込むPHPコードを掲載し、セル番号と値を出力する例を示している。コードは拡張子による読み込み方法の切り替え、複数シートへの対応、行とセルのイテレータによる値の取得を実装。出力結果の画像も掲載。

 

SOY CMSの画像のリサイズでJPEGのロスレス圧縮を追加した

/** Geminiが自動生成した概要 **/
SOY CMSでサーバサイド画像リサイズを実装後、PageSpeed Insightsで「ロスレス圧縮で容量削減可能」と指摘されたため、jpegoptimを導入した。Ubuntuに`sudo apt-get install jpegoptim`でインストール後、`/CMSインストールディレクトリ/common/im.inc.php`の`imagejpeg`実行後に`jpegoptim $savepath`を実行するよう改修。これにより、ロスレス圧縮の指摘が解消され、PageSpeed Insightsのモバイルスコアが93から96に向上した。変更コードはフォーラムで配布されている。

 

当サイトをHTTP/2対応して表示の爆速化してみた

/** Geminiが自動生成した概要 **/
Let's Encryptの証明書更新を自動化するため、CertBotを導入した。以前の方法は使えなくなったため、公式サイトの手順に従い、snapd経由でCertBotをインストール。`certbot certonly --apache`コマンドで証明書を取得し、Apacheの設定を自動更新。 cronで`certbot renew`を定期実行することで自動更新を実現。`--dry-run`オプションでテストも可能。以前の`letsencrypt-auto`コマンドは非推奨となったため、CertBotへの移行が必須。

 

最高の開発環境を求めて

/** Geminiが自動生成した概要 **/
レシピのない環境で最高の開発環境を目指し、WindowsからUbuntuに移行した筆者は、Emacsを選択。シェルモードの使いにくさに悩み、zshを導入するもEmacsとシェルを同時に表示できない問題に直面。最終的にターミナルマルチプレクサtmuxを用いて、Emacsとzshを左右に配置する理想的な開発環境を実現した。今後の記事では、環境構築の詳細な手順を公開予定。

 

Goのgoroutineで平行処理を試してみる

/** Geminiが自動生成した概要 **/
Goのgoroutineを用いた並行処理の練習として、偶数奇数判定プログラムを例に解説。通常は上から順に実行されるコードを、計算(sender)と表示(receiver)に分け、channelで繋ぐことで並行処理を実現。senderは計算結果をchannel(ch,ch2)に送り、receiverはselect文でch,ch2から値を受け取り表示する。例ではgoroutineの利点は活かされていないが、マルチコア風な処理を記述できた。

 

GoでGETを使ってHTMLを文字列で取得してみる

/** Geminiが自動生成した概要 **/
Goの`http.Get`関数を用いてHTMLを文字列として取得する方法を解説。ライブラリに頼らず、ピュアな方法で実現。`http.Get`でURLを指定しレスポンスを受け取り、`res.Body`からHTML部分を読み込む。`ioutil.ReadAll`で読み込んだbody(byte型)を文字列に変換するために、`bytes.NewBuffer`でバッファに格納後、`buf.String()`で文字列型に変換する。`defer res.Body.Close()`で処理終了後にレスポンスをクローズ。最後に`fmt.Println`でHTML文字列を出力し、動作を確認。

 

Golangのsessionの取り扱いの際の型で苦戦した

/** Geminiが自動生成した概要 **/
Go言語でgorilla/sessionsを使ってセッションを扱う際、セッションから取得した値の型がinterface{}となり、string型の構造体フィールドに代入できない問題が発生した。ログ出力ではstring型に見えたが、構造体への代入時に型エラーが発生。stringへの型アサーションを試みても解決せず、最終的に構造体のフィールド型をinterface{}に変更することで回避した。セッション値取得時の動的な型定義と構造体の静的な型チェックの不一致が原因と考えられる。より良い解決策を模索中。

 

PHPで簡易的なクローラを作ってみた

/** Geminiが自動生成した概要 **/
PHPで簡易クローラーを作成し、`file_get_contents()`でサイトのHTMLを取得、特定文字列の有無を調べた。再帰的にページ内のリンクを辿り、同一ドメインのURLを解析するが、既に解析済みのURLはスキップする。`scrape()`関数でHTML解析を行う予定。問題点として、ページ数が多いと記録用配列が肥大化し、対象サーバーへの負荷も高くなることが判明。スラッシュ始まりのURL取得にも未対応。それでも`file_get_contents()`の便利さを実感した。

 

Goで一方向ハッシュ関数によるパスワードの暗号化を書いてみた

/** Geminiが自動生成した概要 **/
SHA-2は、SHA-1の後継として開発された暗号学的ハッシュ関数群です。SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256といったバリエーションがあり、それぞれ異なるハッシュ値の長さを生成します。SHA-2は、メッセージダイジェストを作成することでデータの整合性を検証し、改ざんを検出できます。内部構造はSHA-1と類似していますが、より安全で攻撃に対する耐性が高いとされています。現在、SHA-256とSHA-512が広く利用されており、SSL/TLSやデジタル署名など、様々なセキュリティアプリケーションで重要な役割を果たしています。

おすすめの検索キーワード
おすすめの記事

Powered by SOY CMS   ↑トップへ