今回は、プログラムの基本の配列について、いくつかサンプルを作成してみました。(言語は、c#を想定しています。)
[1] 最初のパターンは、文字列の配列宣言と同時にデータもセットする方法です。(宣言と同時に配列数が決まります。)
|
// ■ // ■ // ■ パターン① // 文字列配列、宣言&初期化 string[] sArry = new string[] { "Jan", "Feb", "Mar", "Apr", "May" ,"Jun", "Jul","Aug","Sep","Oct","Nov","Dec"}; // 配列のループ(foreachを使った方法) foreach (string str in sArry) { // 出力 Debug.WriteLine(str); } |
[2] 次のパターンは、配列を宣言してから、追加してゆく方法です。こちらも基本的に配列数が最初に決まっていますが、後から増減させることは可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
// ■ // ■ // ■ パターン② string[] sArry2 = new string[12]; sArry2[0] = "Jan"; sArry2[1] = "Feb"; sArry2[2] = "Mar"; sArry2[3] = "Apr"; sArry2[4] = "May"; sArry2[5] = "Jun"; sArry2[6] = "Jul"; sArry2[7] = "Aug"; sArry2[8] = "Sep"; sArry2[9] = "Oct"; sArry2[10] = "Nov"; sArry2[11] = "Dec"; // 配列のループ(forを使った方法) for (int i = 0; i < 12; i++) { // 出力 Debug.WriteLine(sArry2[i]); } |
[3] 3つ目のパターンは、List<> を使用した方法です。この方法が汎用性が高く、<>の中には、classで宣言した型を指定できるので、配列をデータテーブルのように使うことができます。
業務系アプリで、データを扱う場合は必須な方法かと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
// ■ // ■ // ■ パターン③ List sList<> = new List(); sList.Add("Jan"); sList.Add("Feb"); sList.Add("Mar"); sList.Add("Apr"); sList.Add("May"); sList.Add("Jun"); sList.Add("Jul"); sList.Add("Aug"); sList.Add("Sep"); sList.Add("Oct"); sList.Add("Nov"); sList.Add("Dec"); // 配列のループ(foreachを使った方法) foreach (string str in sArry) { // 出力 Debug.WriteLine(str); } |
[4] 最後のパターンは、System.Data.DataTable を使った方法です。業務系のアプリの場合は、必須かと思います。
名前の通りにメモリー上にテーブルを作成して使用します。型宣言が面倒に思われるかと思いますが、データベースとのやり取りがあるシステムなら、親和性が高くデータのやり取りがとてもスムーズにできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
// ■ // ■ // ■ パターン④ DataTable dt = new DataTable(); dt.Columns.Add("No", typeof(int)); // 列(項目)を追加 dt.Columns.Add("月",typeof(string)); // 列(項目)を追加 for (int i = 0; i < 12; i++) { // データセット DataRow row = dt.NewRow(); // テーブルの新しい行宣言 row["No"] = i; row["月"] = i.ToString("D2") + "月"; // 行の項目に値セット // テーブルに行を追加 dt.Rows.Add(row); } // 配列のループ(foreachを使った方法) foreach (DataRow data in dt.Rows) { // 出力 Debug.WriteLine( data["No"].ToString(), data["月"].ToString() ); } |
Python学習の初心者(小・中学生)向けに、解りにくそうな点を書いてゆこうと思います。私自身は普段は別の言語を主に使用しているので塾などで教えてもらった表現と少し違うかも知れないけど、できる限り解りやすいように頑張ります。
変数(へんすう)と型(かた)
・「変数(へんすう)」は、データを一時的に記憶しておく箱のようなもの。実際にはパソコンのメモリー上にデータが記憶されるよ。
・「型(かた)」は、変数の型とよく言うけど、その変数の中身の種類のことだよ。種類というのは、「文字」なのか「数値」なのか「日時」なのか。配列とか。(他にもいろいろあるけど)
Pythonは、変数を宣言するときに、型を指定しないので、何が入っているかによって扱い方(足したり、つなげたりする時)に注意が必要になるからね。
↓Pythonサンプル
|
import tkinter as tk root = tk.Tk() root.title("タイトル") root.geometry("200x100") label1=tk.Label(text="サンプル",background="yellow") label1.pack() button1=tk.Button(text="ボタン",command=lambda:button1_click()) def button1_click(): text = "ボタンを押したよ!" label1["text"] = text button1.pack() root.mainloop() |
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 変数と型の説明 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
いよいよ2020年度から、日本でも小学校のプログラミング教育が始まります。
既に始めている学校もあるようですが、「プログラミング的思考」を育てる事も目的の一つらしいです。
日本の教育は、単なる詰込み教育だったので、やっと変わるのかなあと期待しています。
プログラミングとは、自分で考える事だと私は思います。
個々の個性やレベルに合わせた教え方をしないと、ついて来れなくなります。
また覚える人も、自分の言葉に置き換えながら理解が間違っていないか、確認しながら自分の物にしなければいけません。
答えは無数にあります。途中で道に迷うこともあります。
逃げないで最後まで自分でやり遂げる力を養うには、本当に良い教育になると期待しています。
先生も生半可な忍耐力では、教えれないと思いますが・・・。
最近始めたLINE STAMPですが、古武道編をいろいろ考えていたところ、最初に参考に切り取っていた自分の写真を、いくつか集めてみました。
挨拶に使えそうな言葉が思い浮かばなかったので、アドバイスという形にしました。普段、古武道の稽古を通じて、仕事やスポーツ競技等で助言として役に立ちそうな言葉を当てはめてみました。

自分で使ってみて思うに、このスタンプは文章も添えて送らないと、何についてアドバイスしているのか、わからない・・・と思われます。ので、ご使用の際には、注意が必要です・・・。
訳あって、LINEスタンプを作ってみようと思いました。
元々、絵の才能が無いので業務アプリの開発しかできないのですが、描いてみないことには始まらないので、やってしまいました。
①古武道系

↑大人向けに、居合道をイメージして描きました。
②鳥系(すずめ)

↑野鳥の知識が・・・・なので、
ペンタブレットが無いので、とりあえずマウスで頑張ってみました。一枚の図柄の作成に最低30分はかかり、それから何度も手直ししてゆく感じです。最初に描いたものも、手直ししてゆくうちに、まるっきり別の図柄になったり、言葉を変えてみたり・・・行ったり来たりです。
今回は、試行錯誤でどこまでやっていいのか分からないし、やり過ぎると滅茶苦茶になりそうで、とにかくここでリリースしなければ・・・という感じでした。
次回からは、身近な人のアドバイスをたくさんもらったり、感情や動きを入れる技術を磨いたり(モデルの知識とか・・・も)と思っています。


Android スマホを使用した、倉庫内検品プログラムデモです。
Android ハンディーターミナルを持っていないので、提案用に手持ちのAndroid スマホで検品システムを作成してみました。
今回の検品データの取得および実績送信は、http通信を使用しました。(一番一般的な方法だと思います)
SQL Serverは、ローカルネットに用意してもいいですが、今回は試しに、Microsoft Azureを使いました。実際に業務で使用する場合は、クラウド化が常識なので、自社クラウドかAzureになると思います。データベースの扱いは、ローカルもクラウドも特に違いはありません。
Android と SQLサーバーの橋渡しは、IISを使います。というかそれ以外の方法があるのでしょうか? ASP.NET(Visual Studio)でSQLを使ってやりたい放題できます。
Android Studioでのhttp通信は、HttpUrlConnectionでやりました。内部では、定番のSQLiteでデータを溜めておいて、まとめてhttpで送信します。1データ毎に送受信すると、IISの同時接続数が常に高くなるので、1作業毎にまとめた方がよいと思います。私が思うに、IISはローカルPC(Windows 10 Pro)を使用した方が安上がりだと思います。AzureでIIS用のVMを立ち上げると、毎月の費用がそれなりにかかるので、検品端末が、10台程度ならデスクトップPCの方が、無難だと思います。セキュリティ管理上もAndroidからは、ローカルネットワークにしかアクセスしないので、安全性も高いと思います。
パッケージ化したいと考えています。が、ユーザー毎に若干のカスタマイズは必要になるかと思います。
表示上、文字数が多過ぎたりすると画面上で他のコントロールと重なったり、また、Androidの専用機の場合は、スキャンモジュールが異なったりするので。


BarCode Easy Check / Windows 10 Mobile
UWP開発の勉強目的で、バーコード照合プログラムをWindows 10 Mobile向けに作ってみました。
今回、デバッグに使用した端末は、NuAns NEOという機種なのですが、スペック的には普通のAndroid端末と変わらないのですが、バーコードの認識には、若干手間取ってる感じがしました。
機種による差なのかもしれません。他にWindows 10 Mobile端末を持っていないので、比較できないのが残念です。
開発ツールは、Visual Studio 2017です。Windowsアプリストアで公開するには、UWPで開発する必要があります。
Windows 10 のUWPで開発することの魅力は、デスクトップPC用のプログラムとモバイル端末のプログラムが、同じ言語で開発できる事にあるかと思います。特にデータの受け渡しなどは楽になるのではないいでしょうか?
ただ、Windows 10 Mobileに関しては、現時点では、シェアが少な過ぎ、端末も少ないので、実用性は低いかと思います。それでも、Windows 10は毎月のようにUpdateが行われ改良されていっているので(Mobileも含めて)、将来的に期待はしています。
Windows 10 Mobileが、業務向けOSとして完成度を高めて行って欲しいなあと個人的に思います。


Andorid プログラムの「QR Send」「Easy Inventory」向けに作った、PC側でメールを受信~CSV出力を行う、ImportImap.jar をJava作ったのですが、メールの受信が正直遅いので、Windows向けに.Net Framework版を作成しました。
今回は、コマンド引数に1を付けて起動すると、受信~CSV出力まで自動で行い、終了するモードを追加しました。
例) “ImportImap.exe 1″
通常は、”ImportImap.exe” をそのまま起動すれば、手動モードで開きます。

やはり、クライアントPCは普通Windowsですし、たまたまAndorid開発がJavaだったので、Javaで作ってみたのですが、私のJavaスキルの問題ないのか、C#で作った方が結構早いというか普通でした。最近、MicrosoftのVisual Studioもマルチプラットフォームになってきているので、開発者も今後はこちらにシフトしてくるような気がします。


Wifi / 画面自動回転の ON/OFF スイッチを、自分用に作りました。
よく使う機能なので、今まで、誰かが作ったものをダウンロードして使っていましたが、どれも広告付きでうっとおしいので、広告無しの超シンプルなのを自作しました。
 |
電池の節約が、最大の目的です。
広告は、バッテリーやパケットを食うので悪です。
|
WiFiを使わないときは、WiFiをOffにしています。常にWiFi検索していると、バッテリー消耗が早いからです。
画面自動回転をOffにすると、電池の節約になります。ポケットの中で、立ったり横になったりすると、画面が切り替わる度に、電池が消耗するからです。
相変わらず、デザインがアレですが、ウザい広告から解放され、デザイン性が無いので飽きないかと・・・。


以前作った、Legacy Launcherを少しいじって、myStart にアプ名を変更して、リリースしました。

今回は、Navigation Drawer(ナビゲーション・ドローワー)の勉強が目的です。
 |
ナビゲーション・ドローワーは、最近のアンドロイドアプリのメニューとしては、標準になっているようです。 |
Toolbar(ツールバー)にメニューを追加する方法や、FloatingActionButton(フローティング・アクションボタン)しか使っていなかったので、どういった場合に使うべきか、よくわかりませんでした。
何となく、Windows のスタートメニューに似ています。違うのは真横から出てくる点でしょうか。画面を大きく使えるので、視認性も良いと思います。
今までは、ほとんど1画面で完結の、簡単なものしか作った事が無いので・・・。今更ですが、複数画面に渡るアプリでは、メニュー階層が解りやすくなります。
Android Studioは、どんどん進化して行っています。古いものは(古いアプリや手法)、どんどん捨てて新しいものに作り変えていかなければ、世の中に受け入れてもらえないんでしょうね。


There's an idea, there's a way.