2024.11. クライアント様からお仕事をいただきました。Seleniumを使ってWebアクセスを制御し、 ChatGPTを使って生成した文章を自動投稿するシステムを開発しました。対象となったサイトは、 楽天、Note、WordPressサイトです。
3Dゲーム開発環境Unityにて、紅葉(もみじ)八幡宮メタバースを開発しました。
開発言語はTypeScriptです。デザインではなくプログラムを主にやっています。
ワールドの奥にあるミニゲームはわたしが企画・実装しました。どうぞ遊んでやってください。
ZEPETOという韓国のアバターシステムを使っているので、操作について詳しいことはZEPETOで
ググってください。メタバース内ではスマホ画面の左下の部分を指で押さえてスライドさせると、
移動ができます。
2024年6月19日ごろから、フロントエンドとバックをつなぐフルスタックWeb開発を行いました。
言語学習の時にいつも例題にしている「しりとり」を、フロントエンド(Web)とバック(DBアクセス)に分けて実装しました。
フロントエンドは、Reactを使用してUIを構築しました。windowsパソコン上のWSL2環境下で動きます。
バックは、ネットワーク上の別のサーバで動いています。Djangoによる仮想環境を構築し、mariadbへのアクセスをPythonで実現しています。
DBに記憶されている単語情報をもとに、ランダムに単語を選択してしりとりを行います。
こちらは井上滋のポートフォリオサイトです。
わたしの技能や提供できるサービスをご紹介します。
井上滋はWebクリエイター能力認定試験に合格しています。
本ページにリンクされているHPの制作例は、すべて架空の会社のものです。
レスポンシブデザインにも対応しているので、スマホでも参照できます。
HTMLやCSSなどのコーディングを行います。 WordPressも使えます。
C#やPythonなどを用いた小規模開発ができます。「しりとり」を
自らのテーマに設定しており、 今まで、LISP、Java、Rubyで開発しました。
最近では、Pythonでの開発に力を入れています。
ほとんど独学で身につけました。
紅葉八幡宮メタバース、および、ハイパーカジュアルゲームのプログラマとして 実務経験を積みました。
Unityでの開発に使用していました。
個人でかつての職場の同窓会サイトを立ち上げ、運用しています。
Unityで開発を行う時に使用しています。WindowsアプリとAndroidアプリの実務経験が あります。
業務からホビーまで幅広いプログラミング経験があります。
サンプルアプリケーション
AIにタロット・リーディングをさせています。サーバ上でPythonを動かし、Nginx+gunicornでリクエストを受け付けています。
TypeScriptで記述し、JavaScriptにトランスパイルしてインプリメントしています。
■比較には == ではなく === を使う。不等号は !==。
■変数に値があるかのチェックは、nullとundefinedの双方を行う。
■マイクロソフトが提供するplaygroundは、ファイルのセーブができない。コピペして保存することが必要。
◆UnityのPlayerPrefsについて。GetInt()で、存在しないキーで問い合わせを行った場合、 返り値はnullではなく0になる。これは要注意!!
◆Unityのボタン問題 : いろんなケースでUnityのUIのボタンが押せない事象が生じている。
一番多いのは、ボタンの上に透明な別のUIがかぶっているケース。ボタン以外のUIはRaycast Target
をオフにすることを心掛ける。
CanvasのRender Modeの設定がWorld Spaceでも、押せないケースが多い。Render ModeをScreen Space -Overlay にすると、
カメラの位置に関係なく、画面全体にCanvasが最適化されるので、初心者はこれを使うべき。ボタンも押せるように
なる。
◆プロジェクトをWebGLでビルドするときには、以下の設定を忘れないように。
Build Settings-
WebGL-
Player Settings-
Player-
Publishing Settings-
Decompression Fallback にチェックを入れる。
◆現在の開発で遭遇した事件:
SetActive()などの関係で、オブジェクトにアタッチされているスクリプトの中のStart()
とかが2回動いてしまうと、最初にインスペクタで設定していた配列の値がnullクリア
されてしまう。最初の実行時にはデータは失われないが、2回目実行の後に参照するとnullになる。
◆2Dの場合、複雑な形状を持つ図形のコライダーは、polygonCollider2Dを採用するべきである。 edgeCollider2Dは、あくまで「境界線」であり、内部は空洞になってしまう。
◆イメージを表示するときに簡単なアニメーションを使いたい場合がある。その時に便利 なのが、ImageのImage Type機能である。デフォルトのsimpleからFilledに変更して おくと、コードでFillAmountを調整するだけで、簡単なアニメーションがすぐにできる。
◆今回はAndroidを実機として開発したが、buildパラメータは重要である。特にapkの ファイルサイズを小さく抑えたい場合は、ChatGPTなどのAIにあらかじめ質問しておくと、 詳細に教えてくれる。
◆四角い画像をアイコンに指定すると、丸くならなくて困ることがある。これは Texture Type を Defaultのままではなく、Editor GUI and Legacy や Sprite に変更しておくと 解決できる。Override for Android(iOS)をチェックし、Format を「RGBA 32bit」にすると、ビルド ワーニングが消える。
◆オブジェクトをゆっくり移動させる時に、Unityの教本などでよく見かける、 Updateまたはwhile文でループさせてtransform.positionのx値などを少しずつ 加算するという方法があるが、これはピクセル単位の移動になるので、 あまりよろしくない。線形補完(Lerp)を使うとわかりやすくて良い。 以下はコーディング例:
while (elapsedTime < duration) {
objectA.transform.position
= Vector3.Lerp(startPoint, endPoint,
elapsedTime / duration);
elapsedTime += Time.deltaTime;
yield return null;
}
yield return がわからない人は、コルーチンを勉強してください。何をするにも必須です。
◆yield return StartCoroutine(...)は、多用してはならない。システムが入力を受け付けなくなる。(2024Sep22)
◆Android向けのbuildの話。WindowsおよびMacのAndroid SDKに付属している仮想 エミュレーターは遅くて使い物にならない。Unityが提供するsimulator(Google Pixel 5 などがある)が優れものである。apkを作成してABISのエラーが出るときは、Scripting Backend を Mono指定ではなく IL2CPPを設定して、Target Architectures を ARM64 のみにする。 ターゲットAPIナンバーは厳密でなくていい。API 35にしておけば、新しい端末ではだいたい動く。
福岡県出身。東京大学法学部昭和61年卒。NTT、NTTデータ、 東京大学などでIT開発業務に従事。帰福後、オールデザイン ファクトリーにてwebサイトの構築やレスポンシブデザイン などを修得。その後、HLサポートにてホームページのデザインと コーディング、Unityによるメタバース開発に従事。現在、 フリーランス・プログラマとして活動。個人事業主。
多趣味だが、現在は読書と、トランプ一人遊びがメインである。
往年のボードゲーマー。ノイやククなど、インプリメントしたいカードゲームがたくさんある。
あそびをせむとや生まれけむ。(梁塵秘抄)
百術は一誠に如かず。
80年代人工知能技術に精通している。インターネット黎明期より ホームページを保有。業務でも会社のサイトを5年ほど管理して いた。C、LISP、Java、Pythonなど習得言語多数。小規模 プロトタイプシステムの開発に11年間従事。職場および自宅にLinuxサーバを 構築した経験あり。最近では3Dゲーム開発環境Unityを駆使して開発 業務を行っていた。メッセージの英語翻訳等も担当。 フリーランスになって後は、seleniumによるwebページ操作と ChatGPTを使用したAIシステムを開発。