WinFormsアプリ開発画面スクリーンショットに関しての憶測 by ChatGPT 4

 
User

この画面が何をしているところのスクリーンショットか分かりますか?
ChatGPT

このスクリーンショットは、Microsoft Visual Studioという統合開発環境IDE)で作業しているところを示しています。具体的には、.NET Frameworkを使用しているWindows Formsアプリケーションの開発中の画面です。

左側には、Windows Formsアプリケーションで使用されるさまざまなコントロール(ボタン、チェックボックス、テキストボックスなど)を含むツールボックスがあります。中央の大きなウィンドウは、フォームデザイナーであり、ユーザーインターフェースのビジュアルデザインが行われます。

画面の上部にあるテキストボックスは、データベース接続文字列を含んでおり、ODBCドライバーを介してSQL Serverに接続するための情報が入力されています。また、SQLタブにはデータベースクエリが書かれており、これはおそらくデータベースからデータを取得するためのものです。

右側のウィンドウには、プロジェクトのファイル構造が表示されており、現在開かれているフォーム(Form1.cs)が強調表示されています。

画面の下部にはエラーリストがあり、コンパイル時の警告やエラーが表示されます。この場合、警告メッセージが1つ表示されていますが、エラーは表示されていません。これは開発者が問題を識別し、修正するのを助けるためのものです。

全体として、このスクリーンショットWindows Formsアプリケーションの開発中、特にデータベース操作を含む処理を作成またはテストしている状況を示しています。

 
 
User
 
素晴らしい。この開発中のアプリケーションの目的についてもう少し推測してみてください。
 
ChatGPT

このスクリーンショットから推測するに、開発中のアプリケーションはデータベース操作に関連するものであることがわかります。具体的には、中央のテキストエリアに書かれているSQLクエリは、「ProductModel」テーブルから「Name」フィールドを含むレコードを検索しており、これは「@FilterName」というパラメータを使用して特定のパターンに基づいてフィルタリングされています。

このことから、このアプリケーションは次のような目的で使用される可能性があります:

  1. データベース管理ツール - データベースの内容を参照、追加、更新、削除するためのインターフェースを提供する。
  2. 在庫管理システム - 特定の製品モデルの在庫や情報を検索するためのシステム。
  3. レポート生成ツール - ユーザーが特定の条件を入力し、それに応じてデータベースから情報を抽出してレポートを生成する。
  4. 注文入力システム - 販売員が顧客の注文を入力し、利用可能な製品モデルを検索するためのインターフェイス

また、画面の「Param」セクションには、"Name"、"wcPattern"、"RcId"といったパラメータがあり、これらはユーザーがインターフェイスを通じて入力する可能性のある値です。これにより、ユーザーは検索条件を動的に指定し、その結果を「Result」セクションで確認することができます。

最後に、画面の右下にある「Run01」というボタンからは、これらのクエリが実行されるアクションをトリガーするボタンである可能性が高いです。

これらの要素を総合すると、このアプリケーションはおそらくデータ駆動型であり、ユーザーがデータベースと対話し、特定の情報を検索、表示、および操作することを目的としていると考えられます。

 
 
User
 
「Param」セクションに書かれたパラメータの性質について、もう少し推測することはできますか?
 
ChatGPT

「Param」セクションに書かれている内容を見ると、ここではSQLクエリを実行する際に使用されるパラメータを設定しているようです。パラメータは、ユーザーからの入力やアプリケーション内での動的な値をデータベースクエリに渡すために使用されます。

パラメータには以下のような属性があります:

  • Nameはパラメータの名前を示しており、クエリ内で参照されます。
  • Typeはパラメータのデータ型を指定しており、ここではVarChar(可変長の文字列データ型)が使用されています。
  • Lenはパラメータの最大長を示しており、例えばVarChar(35)は最大35文字の文字列を受け入れることを意味します。
  • Directionはパラメータが入力(Input)か出力(Output)か、あるいは入出力の両方(InOut)かを示しています。

具体的に「Param」セクションには次の3つのパラメータがあります:

  1. "Name": "wcPattern", "Type": "VarChar", "Len": 35, "Direction": "Input" - これはユーザーが入力する検索パターンを格納するためのもので、おそらくワイルドカードを含む文字列を受け取り、データベースのクエリで使用されると思われます。

  2. "Name": "RcId", "Type": "VarChar", "Len": 35, "Direction": "Output" - これはクエリの実行結果として何らかの識別情報を返すためのもので、たとえば検索にマッチしたレコードのIDが格納される場合があります。

このように、パラメータはSQLクエリの動的な部分を制御し、ユーザーからの入力に基づいてデータベースの操作をカスタマイズするために使用されます。アプリケーションはこれらのパラメータを介して、柔軟にデータを検索し、結果をユーザーに提供することができるようになります。

 
 
User
 
素晴らしい。パラメータと「SQL」セクションに見えているクエリとの関係性についても何か推測することはできますか?
 
ChatGPT

SQL」セクションにあるクエリは、パラメータを使用して特定の条件に基づいてデータを選択するためのものと思われます。クエリは以下のようになっています:

DECLARE @FilterName varchar(50); -- その後のクエリで使用される@FilterNameの設定がここで行われると思われます SELECT TOP (100) [ProductModelID] ,[Name] ,[CatalogDescription] FROM [AdventureWorks].[Production].[ProductModel] WHERE Name like @FilterName; -- @FilterNameを使用したWHERE句によるデータのフィルタリング Set @PickupName = (SELECT TOP 1 [Name] FROM [AdventureWorks].[Production].[ProductModel] WHERE Name like @FilterName); -- @PickupNameには、フィルタリングされた結果の最初の[Name]が格納されると思われます

このSQLクエリは、@FilterNameというパラメータを使用しています。@FilterNameはおそらくユーザーが指定する検索文字列であり、"wcPattern"というパラメータを介してアプリケーションから受け取る値でしょう。ワイルドカードを含むこの文字列を使って、ProductModelテーブルのName列を検索し、条件に一致する結果を取得します。LIKE演算子は、部分一致やパターン一致を行う際に使われるので、@FilterNameには特定のパターンが含まれていると推測されます。

さらに、クエリの最後にあるSET文は、条件に一致したNameのうち最初の1つを@PickupName変数に設定しています。これは、検索結果からさらに具体的な情報を抽出するために使用される可能性があり、これもまたパラメータとして渡されるか、アプリケーション内で何らかの処理に使われるでしょう。

要するに、「Param」セクションで定義されたパラメータは、「SQL」セクションのクエリで動的な検索条件として使用されているようです。アプリケーションはユーザーからの入力を受け取り、それを@FilterNameとしてSQLクエリに渡すことで、ユーザーの要求に応じたデータベースからの情報を取得することができます。

 
 
User
 
クエリの1行目には「?」が記載されている部分があります。このこととパラメータとの関係性について、推測できることは何かありますか?
 
ChatGPT

スクリーンショットの「SQL」セクションにあるクエリの1行目を見ると、実際のパラメータの値を代入する前に「?」が使われていることが確認できます。これは、SQLコマンド内でパラメータ化されたクエリを使用している典型的な兆候です。

パラメータ化されたクエリでは、直接値をクエリに埋め込むのではなく、「?」をプレースホルダーとして使用し、実行時に値をバインドします。これは、SQLインジェクション攻撃のリスクを軽減し、データベースへのクエリをより安全にするための良い実践です。

クエリ内の「?」は「Param」セクションで定義されたパラメータに対応しており、実行時にアプリケーションから提供される値に置き換えられると考えられます。たとえば、ユーザーが検索ボックスに入力した値や、アプリケーションの別の部分から渡された値です。

この場合、おそらく以下のようなプロセスが発生します:

  1. ユーザーがアプリケーションのUIで検索パターンを入力します。
  2. アプリケーションはその検索パターンをwcPatternパラメータとして受け取ります。
  3. wcPatternの値がクエリの「?」の場所にバインドされます。
  4. クエリが実行され、パラメータの値を使用してデータベースから情報が取得されます。

最終的に、「?」は、セキュリティ上の理由から、またはクエリの再利用を可能にするために、プログラムによって動的に置き換えられるプレースホルダーとして機能しています。

 
 
User
 
そうですね。なお、このスクリーンショットは今週撮られたものです。このことと、開発状況と開発内容から、開発を行うに至った背景について何か推測できることはありますか?
 
ChatGPT

スクリーンショットが最近撮影されたものであり、Windows Formsアプリケーションの開発が行われていることから、いくつかの興味深い推測が可能です。

まず、Windows Formsは.NET Frameworkの初期から存在するテクノロジーで、主にデスクトップアプリケーションの開発に使用されます。最近では、マイクロソフトは.NET Coreおよび.NET 5/6/7といった新しいクロスプラットフォーム対応のフレームワークを推進していますが、Windows Formsは引き続き保守され、アップデートされています。

このことから、以下のような背景が考えられます:

  1. レガシーシステムの保守・改善 - 既存のWindows Formsアプリケーションがあり、これを維持・更新する必要がある。多くの企業では、既存のシステムが安定して機能しており、それを置き換えるのではなく、必要に応じて更新しています。

  2. 特定のニーズへの対応 - Windows固有の機能を利用する必要があるか、または特定のユーザーグループが既にWindows Formsインターフェースに慣れ親しんでいるため、新しいアプリケーションをWindows Formsで開発している可能性があります。

  3. 内部ツールの開発 - 企業内部で使用するためのツールを開発している場合、特にクロスプラットフォームの必要性が低い環境では、Windows Formsが選択されることがあります。

  4. 教育目的 - 学習目的でWindows Formsを使用している可能性があります。一部の教育機関やカリキュラムでは、基本的なUI開発の原則を教えるために古いテクノロジーを使用することがあります。

  5. 迅速なプロトタイピング - Windows Formsは迅速にプロトタイプを作成できるため、新しいアイデアを素早く試すために使われることがあります。

また、このアプリケーションがデータベース操作に重点を置いていることから、データ管理やデータアクセスを必要とする業務プロセスが関連している可能性が高いです。例えば、ビジネスインテリジェンス、在庫管理、販売データ分析などが考えられます。

ただし、これらはあくまでも推測であり、実際の開発背景については開発者や関係者の意図や要件に基づくものになります。

 
 
User
 
かなり的を射た推測だと思います。付け加えて言うなら、button2やbutton3といった部品の初期名称が画面に残っているにもかかわらず、クエリやパラメータと言った具体情報がすでに画面にセットされていること、button1であったであろう左端のボタンにだけ初期名称ではない名前がすでについていることから、このツール開発画面にはその予定されている機能の一部分だけでも先行して動かせるようにしたいという願望がにじみ出ていると言えます。この特徴を踏まえて、開発背景についてさらに推測できることはありますか?
 
ChatGPT

ご指摘の特徴を考慮すると、開発プロセスに関するいくつかの追加的な推測が可能です。

  1. イテレーティブな開発プロセス: 「button2」や「button3」のようなデフォルトのコントロール名が残っている一方で、SQLクエリやパラメータが定義されていることは、開発者がイテレーティブなアプローチを採用していることを示しています。つまり、まずはアプリケーションの核となる機能—この場合はデータベースとのインタラクション—を実装し、その後にUIの洗練を行う可能性があります。

  2. プロトタイピング: 初期段階で動作する部分を重視しており、ユーザーインターフェースの詳細よりも機能性を優先している様子がうかがえます。これは、早期にフィードバックを得るためのプロトタイピングの一環である可能性が高いです。

  3. 機能の優先順位付け: 一部のコントロールには意味のある名前が付けられていることから、開発者は特定の機能やその部品に焦点を当て、優先的に開発を進めている可能性があります。ボタンに関数名や意味のあるラベルを付けることは、そのボタンが重要なアクションを触発することを示していることが多いです。

  4. 最小限の実行可能製品(MVP): 既に具体的な機能が実装されていることは、開発者が最小限の機能を持つ製品を早期に完成させて、実際のワークフローや利用シナリオでのテストを行いたい意向があることを示唆しています。これにより、開発の初期段階での利用者のフィードバックを集めることができます。

  5. 実際の業務プロセスに即した開発: すでに具体的なクエリが組み込まれていることから、このツールは実際の業務プロセスを反映したものである可能性があります。開発者は実際のデータモデルや業務要件に基づいて機能を追加していると考えられます。

これらの点を踏まえると、開発者はアプリケーションの中核となる機能を先に動作させることを重視し、実際の使用シナリオに即した開発を行っていると推測できます。また、エンドユーザーのフィードバックを早期に組み入れるために、MVPを目指している可能性も考えられます。

 

3 / 3

 
User
 
具体的なクエリがあると言ってもかなりシンプルなものであること、旧来からあるツールを使って既存の業務プロセスへの対応である場合には先行プロダクトやその中で用いられている複雑なクエリが存在する可能性が高いを踏まえると、業務プロセスに即した開発のために行っている可能性はあまり高くないのではないでしょうか。また、これだけITツールが世の中にあふれたこんにちになって取り掛かっている割には、データベースに接続してデータを取得するという基本的な機能に過度に密着したツールを作成しているというのはユーザーに提供するものを作っていると仮定した場合には少し奇妙な行動だと言わざるを得ません。となると、残る可能性で有力なものは、教育目的の習作であるというものと、データベースへの接続に関する実験的なニーズがあって開発しているというものの2通りであろうと思います。また枯れた仕組みを利用しながらイテレーティブに開発しているというのは、目標としている完成時期がかなり迫っているか、可及的速やかに動かせるようにしたいかのどちらかである可能性が高いと思われます。これを踏まえて、開発背景についてさらに推測をしてみてください。
 

2 / 2

 
ChatGPT

ご指摘に基づいてさらに推測を深めると、以下のような開発背景が考えられます。

  1. 教育目的の習作:

    • スクリーンショットには基本的なデータベース操作が含まれており、これは教育的な環境での演習に適しています。SQLクエリの構築、パラメータの使用、結果の取得といった基礎的なデータベーススキルを学習するためのアプリケーションである可能性があります。
    • 教育用のプロジェクトでは、特にプログラミングを学ぶ初学者に対して、シンプルなクエリから始めて徐々に複雑さを増していくアプローチを取ることが一般的です。
  2. 実験的な開発やプロトタイピング:

    • このツールがデータベース接続やクエリの動作をテストするための実験的なプラットフォームである可能性があります。新しいデータベースエンジンの評価、パフォーマンステスト、あるいは特定のデータベースドライバーまたはAPIの挙動を理解するために使用されているかもしれません。
    • 別のアプリケーションからの移植やアップデートを行う過程で、基本的な機能から確認している段階である可能性もあります。
  3. 時間的制約のある開発:

    • イテレーティブな開発アプローチと、まだデフォルトの名前が付いたボタンがあることから、開発者は時間の制約の中で効率的に機能を実装していると考えられます。すぐに機能する部分を実装することで、短期間でのデリバリーを目指しているか、あるいは最小限の機能を持つプロトタイプを速やかに作成している可能性があります。
  4. 自己学習またはスキルの向上:

    • ITツールが豊富に存在する現代においても、特定の技術やフレームワークについて学ぶために基本から学習を始めることは一般的です。開発者が新しい技術スタックに移行する過程で基本から学んでいる、あるいは既存のスキルを磨いている可能性も考えられます。

これらの推測は、スクリーンショットの情報から導き出されたものであり、実際の開発者の意図を完全には捉えていないかもしれませんが、一般的な開発プロセスや教育プログラムのパターンに基づいています。実際のところ、開発者が直面している具体的な課題や要件、およびその開発文化やプロジェクトの目的によって、開発背景は大きく異なる場合があります。

 

2 / 2

 
User
 
もう一つ可能性があると思います。旧来のテクノロジーに基づきながらも緊急性が高く実験的な開発と言えば、既存のソフトウェアがいままで依存してきたライブラリかハードウェアが急に利用困難になる事情が発生し、上層レイヤーはそのままにローレベル構成要素について代替手段を模索するケースで発生するものがあります。 このシチュエーションの可能性について、どのように評価しますか?
 
ChatGPT

そのシナリオは確かに現実的なものであり、ソフトウェア開発においては一般的な状況です。依存していたライブラリやハードウェアが使えなくなる場合、特に以下のような理由で発生することがあります:

  1. 技術の陳腐化: 使用していた技術が古くなり、サポートが終了したり、より新しいシステムでは動作しなくなったりすることがあります。

  2. ライセンスの問題: ライセンスの変更や終了により、ライブラリやツールが商用環境で使用できなくなることがあります。

  3. セキュリティの懸念: セキュリティの脆弱性が発見された場合、それを使い続けるリスクは受け入れられなくなります。

  4. ハードウェアの廃止: 特定のハードウェアが製造中止になり、代替品を見つける必要が出てくることがあります。

  5. 互換性の問題: オペレーティングシステムのアップデート後に既存のライブラリやハードウェアが適切に機能しなくなることがあります。

  6. パフォーマンスの要求: システムのパフォーマンス要件が変わり、既存の構成要素では満たせなくなることもあります。

スクリーンショットからは、シンプルなデータベース接続と操作を行うツールが開発されていることがわかります。このツールは、既存のソフトウェアのローレベルの構成要素を置き換えることを目的としている可能性があります。例えば、新しいデータベースドライバーのテストや、既存のデータベース管理システムの代替機能を開発しているのかもしれません。

このような状況では、スピードが重要になるため、既に慣れ親しんだWindows Formsのようなテクノロジーを利用して迅速に開発を進めることは理にかなっています。特に、アプリケーションの上層レイヤーはそのままに、下層のデータベース接続や操作の部分だけを変更するという目的であれば、UIの変更は最小限に留められるでしょう。

緊急性が高い開発は通常、短期間での成果が求められます。そのため、開発者は最初に基本的な機能を実装し、それが動作することを確認してから、より洗練されたUIや追加機能に取り組むというアプローチを取ることがあります。スクリーンショットの状況は、このような緊急性を要する開発の初期段階に見られる特徴と一致しています。

 
 
User
 
そうですね。そのような状況である可能性はかなり高そうに思われます。この開発者に何か力づけるメッセージを送るとしたら、どのような言葉でつづりますか?
 
ChatGPT

開発者への力づけるメッージとして、以下のような言葉が適しているかもしれません:


開発者の皆さん、

突然の課題に直面し、新たなソリューションの開発に取り組んでいることに敬意を表します。技術の流れは速く、時には予期せぬ状況が我々の柔軟性と創造力を試しますが、それはまた成長と革新の機会でもあります。

あなたが取り組んでいる作業は、単なるコードの行を超えた大きな価値を生み出しています。ユーザーやビジネスにとって必要不可欠なサービスを継続させることは、多くの人々の生活や仕事に直接影響を与える重要な仕事です。

既存の枠を超えた新しい解決策を模索することは容易ではありませんが、あなたの努力は必ずや報われるでしょう。イテレーティブな開発プロセスを通じて、一つ一つの小さな勝利を積み重ねていってください。そして、時には一歩下がって全体を見渡し、どれだけ達成してきたかを振り返ることも忘れないでください。

技術的な困難は、経験を積み重ね、新たな知識を得る絶好の機会です。今回の挑戦が、将来に向けたさらなるステップとなることを願っています。あなたの作業が実を結び、目的を果たす日が来ることを心から期待しています。進むべき道を信じ、一歩一歩前に進んでいってください。

応援しています。


開発は単なる技術的な試み以上のものであり、そこには創造性、持続性、時には勇気も求められます。このようなメッセージが、開発者の方々にとって励みになり、彼らの努力が実りあるものであることを再確認するきっかけになることを願っています。

 
 

パラ陸上のブラインド走り幅跳び(女子)を見て

TVでパラ陸上の女子走り幅跳び競技をやっていたのだが、健常者競技とその競技の違いは「選手が目隠しをしていること」だった。(基本的に目が見えていない人が協議参加しているのだろうが、さらにそこに目隠しをつけることで弱視の人にも参加資格が生じるのだと思う。違うかもしれないが。)

その競技の試技風景自体も驚きだったが、印象的だったのは、アシスト要員の誘導方法だった。

走り幅跳びなので、当然踏切り場所があるのだが、アシスト要員は選手が助走を始める前に踏切り場所付近に立って、発声か手拍子で選手に助走方向と距離と走行リズムをガイドすることでアシストするのである。

選手は、何も見えない中でアシストの音だけを頼りに走り始め、あらかじめ練習で把握した跳躍タイミングとアシストの合図で全力で空中に飛び出すのだ。

選手にとってみれば当然当初は存在したであろう巨大な不安を、アシストの人との信頼関係によって克服することによって、跳躍を敢行するまでに至っているのだ。これを感動的な光景と呼んでいけない理由がどこにあろうか。また、このように選手本人だけではなしえないようなことを実現させるサポートの在り方に、情報技術のあるべき姿を見た思いがする。

自宅VPN

外出先から自宅のデスクトップにログインできる環境をPPTPを使わずに構築したいと思っていたので色々調査開始。

ちょうど、昨年末ごろにL2TP/IPsec対応の比較的安価なルーターが発売されてたので、それを軸に据えて検討してみた。

IPsec対応VPNルーター : VR-S1000 | BUFFALO バッファロー 

BUFFALO IPsec対応 VPNルーター VR-S1000

BUFFALO IPsec対応 VPNルーター VR-S1000

 

 

どうやら機器購入後はIPv6パススルー設定をしてやればいいらしい。NTTのページにもIPv6パススルー設定の方法が書いてあるしこれは行けちゃうのではないだろうか~。IPSec環境がPCルーター以外で自宅に設置できるとはいい時代になったものだ~。

・・・が、思わぬ伏兵が。どうもひかり電話がいけないらしい。いくつかのサイトの情報をまとめるとこういう事らしい。「フレッツ光ネクストひかり電話IPv6機器なのでNTTのHGW(ホームゲートウェイ=ルーター)はIPv6ルーターとして設定されていることが必須であるためIPv6パススルー設定が選択できない」・・・何・・・・・・だと・・・?

いちおうIPv4の静的ルーティング越しでもできなくはなさそうだが・・・、グローバルIPは固定でないのでDynamincDNSかISPに固定IP申し込みをしないといけない予感。うーむせっかくのIPv6サービスが利用できないのは残念。

 

ほかの選択肢を考えてみたところ、

という手が一応あることに気が付いた。

このうち、RD Gatewayは、まずもってIISをセキュアな状態にしてインターネットに公開するという行為自体が個人にはハードルが高すぎる。ついでに証明書を維持する気もないし。 SoftEther-VPNはちょっと開発元の社長がアレなことを除けば特に導入の妨げになるものはないが、なんかこれ使ったら負けな気がするのは何故なのだろうか。何の追加コストもなく構築完了するはずなのに・・・解せぬ。

 

若干悔しいが、NTTのHGWを利用するかぎりは自分で購入したルータを前面に出してLANを組むのは難しそうだという結論に達した。NTTから中部電力のサービスに乗り換えることも考えたが、そっちも去年ぐらいからHGWタイプにかわってしまっているらしい。

 

ひとまず今日のところのまとめとしては、

  • ハードウェアでの実装にこだわるならHGWのNAT経由が避けられない(同時接続1台限定)
  • 他の選択肢だとSoftEther-VPNになる

ということになる。ちょっと切ない。(あ、あとただで貰ったWindows Serverのウィルス対策どうしよう。。。)

春の天気とVBA

某所VBAについてのエントリとそれに対するコメント群を読んでモヤモヤしてる。


ExcelやAccessのVBAには、
かゆいところに手が届かない、無駄に記述が冗長になる、エラー処理がイマイチ
というような割と高望みな欲求から見た欠点と、
最強のインストールベースと最強(かつ最凶)の編集GUIを誇るExcelやらの機能をフルに活用できるという、その立ち位置からくる利点があり、
褒めたものかけなしたものか評価に非常に困るところがある。


しかも、もう10年以上「そろそろ世代交代するかも?」と見られ続けている一方でなかなかサポートが切られないし(ブラウザ版のOfficeだと流石に動かないが)、本屋にはいまだに入門者のための書籍が山積みだし、Web上に非常に充実した教材が揃っていて至れり尽くせりだし、実は意外に拡張性がある(DB接続もできるし、なんちゃってマルチスレッドもできるし、COMを自作すれば何でも呼び出せる)し、リボンUIになって微妙になったとはいえ、依然としてメニュー項目のカスタマイズなんかもできる。

 

なのに、後釜にはすべてが微妙なJavaScriptを持ってこられたりしてるし、 (Sharepoint関連を含んだ)Office365とかのブラウザ版Officeではハブられてるし、以前あった便利なActiveXが同梱されなくなってたりするし、メニューカスタマイズは昔ほどやりたい放題じゃなくなっているし、以前程の隆盛どあいは見せていないことを否定できるものではない。

 

そういった事情があるために、人に勉強することを奨めるべきなのかどうか、まことに怪しいところである。ただこのままモヤモヤしていると一向に寝られないので何とか結論を出してみる。

 

少なくとも一つ言えることは、必要性が発生したらすさまじい速度で勉強することが可能な技術であるということだ。その日が来る可能性は割合多くの人にあるので、読めるようになる程度の文法の勉強とRubyPythonのような筋のいい高級言語の勉強をしておくことは奨められるのではないだろうか。

21世紀においても健在だった蟹トラップ

年初に、Nexus7で使用するための無線APとしてGW-USNano2というUSB無線LANインターフェイスを導入していたのですが、Windows8に移行してからUSBポートアクセサリーへの転用を余儀なくされていました。

が、XLink Kaiみたいなイロモノ機能を使っているならともかく、単に無線APとして使いたいだけなのにWindows8ですぐ使えないというのは悔しいので、いろいろがんばってみていました。・・・が、今までその試みはすべて失敗に終わり、いい加減、別な方法をとろうかと思いかけていたところでした。

 (この製品は、超小型USB無線I/FとソフトウェアAPとその設定ツールからなります。
 腹立たしいことに、設定ツール上は何の問題もなく動いているように見えているのに
 いざ接続しに行くとIP取得が終わらないとか色々問題が起きていました。)

 そんな中、最後の気力を振り絞って(おおげさ)、製品名その他で検索していると、同じチップを搭載した製品がチップメーカーからはWindows8対応のドライバが出ているのに、パッケージベンダーからはWindows8用ドライバが提供されていなくて難儀したという内容のブログエントリを発見。しかもデバイスマネージャ上はOS内蔵のドライバがインストールされるのでエラーにならない、という記述も発見。

なんだか状況が見えてきた気がしたので、「チップ名(RTL8192CU)+Windows8」で検索すると、
ドライバがあっさり見つかったのでホクホク顔になりました。・・・がよくよく見ると有志によるドライバ提供サイトだったのでビビりな私は「マルウェアかもしれない」と思い、改めてメーカー(蟹養殖業者・リアルテック)の公式サイトからドライバパッケージをダウンロード。

パッケージサイズが30MBほどありいやな予感がしたものの、何でも試してみるものさ、とインストール。果たして蟹謹製無線LANユーティリティが常駐しました。しかも文字化けの嵐です。(カタカナがなぜ文字化けしてしまうのか・・・)

f:id:kagehiens:20130303202623j:plain

f:id:kagehiens:20130303202631j:plain

 

 

意外なことに、このユーティリティが常駐していても、プラネックス側ユーティリティも動作するようです(おそらくどちらかがクライアントモードのときのみ)。

しかし、そんな気持ち悪い状態はいやなので、プラネックス製ユーティリティは使わないことにしました。えいやっとAPモードを有効にします。

f:id:kagehiens:20130303203533p:plain

 

サクッとNexus7からも接続できました。素晴らしい。。。ん?

なんでNexus7側の設定変更していないのにいきなり繋がるのかな?
えーと、パスワードが・・・ないですね、これ。

さすが蟹ユーティリティ、油断も隙もありません。標準で誰でも接続可能になってました。

f:id:kagehiens:20130303203407p:plain

 

慌ててWPA2-PSK設定に切り替え、常用に耐えるようにします。

※ここらへん、プラネと言っても消費者向けベンダーはパスワードありを既定値にしていて、姿勢の差を感じます。(ただ、プラネの方はAPモードにした途端強制11bモードになるあたりが痛いです。恐らく接続トラブルを最小にするための工夫なのでしょうが、ユーザーにとっては回避方法がないあたり悪質です。)

 

なにやらかなり当初の予定外の展開ではあるものの、そこそこいい感じに構成することができました。(ブロードバンドルータDHCPを確実に透過させたいのでネットワークブリッジも組んでいます)

f:id:kagehiens:20130303205913p:plain

これにて一件落着~。
たぶん、同製品を購入してWindows8で使えない!と叫んでいる人は結構いるはずなので、増田にでも設定方法を投下してみようかしらん。

 

はてブと格差

某ちきりん女史のはてな訪問エントリ( http://d.hatena.ne.jp/Chikirin/20130115 )に寄せて。

ちきりん女史(以下ち女史)は、自身のダイアリーのはてなブックマークコメントを大分前に非表示設定にしてから
それまでほど注目を集めなくなっていたのだけど、それはネガティブコメントを回避することとのトレードオフで選択したことなんだと思っていた。


だけど、前述のエントリでそうではない旨(もしくは、それだけではない旨?)が書いてあって、かつ、その近くに自身の別エントリ「横の壁がなくなる」
( http://d.hatena.ne.jp/Chikirin/20100517 )へのリンクが貼ってあったので、なんとなく非表示にした理由らしきものが分かった気がした。


つまり、
ちきりん女史の昔のエントリのはてブコメントが炎上しまくりだったのは、
前提や境遇を共有しない人たちが閲覧して思い思いのことを言うからであって、
それ自体は別に良くも悪くも無い事だ、とち女史も思っていたが、
そのコメントを付けている人々があまりにもその構造に無自覚で、
見るに堪えなかったということではないだろうか。
(さらに言うと、もともとあった格差がネットによって目に見える範囲に現れただけなのに
 その構造を理解せずに、コメントでち女史に「自分(だけと)と同じ目線で」書くべきだ、という
 ことを書き連ねる人が多かったことが許せなかったのだと思う。)


で、ここまでの推測が正しいのだとすれば、ち女史はわりと繊細な人間ではないかと思われる。
というのも、割と格差の上から話しているにも関わらず、自分を読者に対して正当化する面の皮の厚さはなくて、それだからこそのコメント非表示化だったのだろうと思われるからだ。(面の皮が厚くない=繊細、は少し飛躍かもしれないが)


個人的には、またコメント公開してフレーム連発してほしいのだけど、
一方で揮発性の高いエントリに対するはてブにはある程度のブレーキがあった方がいい気もするので、
完全公開と完全非表示の間に何らかの中間状態を設定できるように、はてな様に機能追加をして欲しいところ。


ああ、オチがない。
深夜に文章を書くとこれだから;

Nexus 7購入+その他

Nexus 7を去年買ってから1か月放置して今頃ようやく使い始めているわけですが、
これを使うようになってFacebookの利用頻度が格段に上昇しました。
そして、やはりSNSは普通のブラウザから使うものではないと再認識。
(MixiTwitterも今となっては古い携帯ブラウザからのユーザーが多かったことが思い出されます)

Google Nexus 7 タブレット 32GB Android Wi-Fiモデル 【日本国内版】

Google Nexus 7 タブレット 32GB Android Wi-Fiモデル 【日本国内版】


また更に、Wi-fi以外ネットワークI/Fを持たないNexus 7をより有効に活用するために、
モバイルルーターも契約しました。
田舎住まい、かつ移動時はさらに郊外にいることが多いのでE-MobileWiMaxはちょっとなぁ・・・、と思っていたのですが、
LTE&3Gルータで定額制のサービスが増えてきたおかげで、郊外でのアクセスも確保しつつ、
超超レア機会である市街地でのモバイル通信時の高速アクセスも可能に!

今までお金をケチることが多かったためにモバイル通信環境は敬遠してましたが、これで一気に流行の最先端に!!


で、Facebookを活用できるようになるとやはり気になる投稿の分散問題。
今日日各種APIが充実してるからマルチポストツールを作るのも楽になってるかも・・・?
モバイル通信環境構築の暁にはぜひその実装も実現したい。