投稿

Xamarin.FormsのLabelのクリックイベントを実装する

Labelにクリックイベント Xamarin.FormsのLabelにタップイベントをつける スマホアプリを作るときにButtonではなくLabelにクリックイベントをつけたいと思ったことないですか? 私はButtonではなく、ただ文字が表示されている部分をタップしたら何かが起こるようにしたいと思うことが多いので、多々Labelにクリックイベントを実装します。 Buttonにクリックイベントがあるのは当たり前なので、多くの情報があります。しかし、Labelはそもそも文字などを表示するものなので、標準ではクリックイベントが実装できません。 なので、今回はLabelにクリックイベントを付ける方法をまとめたいと思います。 普通のButtonの実装例 まずはXamarin.FormsでのButtonのクリックイベントの実装方法を説明します。 実装方法はシンプルで、XAMLファイルにButtonを設置し、そのXAMLファイルに関連付けられているC#ファイルにメソッドを記述するだけです。 XAMLファイル ButtonとLabelを設置してみましょう。 属性は次のようにします。 <StackLayout> <Label x:Name="label1" Text="おしてない" /> <Button Text="ボタン" Clicked="OnButtonClick" /> </StackLayout> C#ファイル C#ファイルには次のメソッドを追加しておきます。 public void ...

Xamarin.FormsのGridを使って画面作成

イメージ
xamarin.formsのGridで画面作成 Xamarin.FormsのGridを使い画面作成 今回は Xamarin.Froms でアプリ作成を行っていきます。 アプリ作成において一番大変なのって画面レイアウトだと私は思っています。中央寄せにしたいのに左寄せのままだったり、画面下部に設置したのに真ん中らへんにあったり、、、「Excelならすぐに作成できるのになぁ」って思っていました。 そこで調べてみたら、 Grid というものが存在していることを知りました。 Grid はExcelのように行と列を作成し、そのセルの中にラベルやボタンを当てはめていくというものです。 HTML だと Table と同じ感じですかね。 Gridを使うことでよりレイアウトをきれいにまとめられると思います。 では、早速 Grid を使って画面作成をしていきます。。 今回作成していく画面は以下のような感じです。 これは今まで作成していた 重要英熟語 や My単語帳 の画面と同じレイアウトとなります。 Gridで基盤作成 まずは何行何列の画面構成にするのかを決めます。 列は Row で行は Column となっています。 今回は9行5列の画面です。 XAML の記述は以下のようになります。 <Grid> <Grid.RowDefinitions> <RowDefinition Height="10" /> <RowDefinition Height="50" /> <RowDefinition Height="*" /> <RowDefinition Height="2*" /> <RowDefinition Height="...

成績処理アプリの作成(CSV読み込み、データ格納用クラス)

イメージ
統計クラス 統計クラスを作ってみる③ 前回まで、 統計計算クラス を作成してきました。一通りの機能を実装する事ができたので、デスクトップアプリ化に向けて今回は「 CSVファイル の読み込み」機能の実装と、前回までで作成した統計計算クラスを利用するところをやりたいと思います。 今回はまだコンソールでの操作となります。 csvファイルの読み込み まずは、 CSVファイル の読み込み機能から実装したいと思います。 そもそもCSVファイルとは、データを「 ,(カンマ) 」で区切り、複数行に渡ってデータを保存しているファイルとなります。 例えば、「学籍番号,生徒名,国語の得点,数学の得点,・・・」といった形でデータを保存しています。事前に左から順に項目を決めておく必要があります。 データは一行ずつデータがなくなるまで読み込みます。その後、読み込んだデータを一行ずつ カンマ で文字列を分割します。保存形式は List を採用します。 これらをコードで書くと以下のようになります。 public class CSVAccess { public static List LoadCSV( String path ) { List list = new List (); StreamReader sr = new StreamReader( @path ); { while( !sr.EndOfStream ) { string line = sr.ReadLine(); string[] lines = line.Split( ',' ); list.Add( lines ); } } return list; } } 読み...

統計クラスの作成(中央値、最頻値、四分位数)

統計クラス 統計クラスを作ってみる② 前回に引き続き、統計計算のクラスを作成していきたいと思います。 今回は、前回作成した「 昇順メソッド 」を利用し、 中央値 と 最頻値 を求めるメソッドと 四分位数 を求めるメソッドの作成を行いたいと思います。 正直どちらも本当に必要かわかりませんが、統計クラスを名乗っているので実装したいと思います。 中央値 まずは、 中央値 を求めるメソッドから実装しましょう。 中央値とは、その名の通り「中央の値」です。データを昇順に並べ替え、左と右から個数を数えていき、真ん中にある値が中央値です。 この処理では、データの数が奇数か偶数かで方法が少し異なります。 奇数の場合 奇数の場合はシンプルで、昇順に並べ替えたデータを真ん中の値は一つに定まります。 例えば、「1,2,3,4,5,6,7」のような7個のデータが存在するときは、中央値は「7」です。 偶数の場合 偶数の場合は少し計算が増えます。データを昇順に並べ替え、真ん中の値を探すとデータは1つに定まりません。 そのため、データの個数が偶数のときには、真ん中の前後にあるデータの平均をとり、その結果が中央値となります。 例えば、「1,2,3,4,5,6,7,8」のような8個のデータが存在するするときは、真ん中の前後のデータは「4」と「5」になります。よって中央値は「4.5」となります。 これをコードで書いていきます、 public static double Median( double[] x ) { int n = x.Length; x = Ascendi...

統計クラスの作成(標準偏差、配列昇順)

統計クラス 統計計算クラスを作ってみる① 今回は行列計算クラスの作成に引き続き、統計計算クラスも自作してみようと思います。 最終的には、統計計算のデスクトップアプリなどを作成したいと思ってます。まだ構成などは決まっていませんが、成績処理などに使えるアプリを想定しています。 スマホアプリでもいいんですが、データの読み込みなどを考えるとPCでの操作がいいかと思います。 成績処理に必要なものといえば、「標準偏差」や「中央値」などのデータです。難しいことを考えるならば「○○分布」なども必要になると思いますが、今はまだこの辺は考慮しません。 ということで今回は、「標準偏差を求めるメソッド」と「中央値などを求めるために配列をソートするメソッド」を作成します。なお使用する言語はC#です。 標準偏差メソッドを作る まずは、テストなどの採点を行ったときに必要となる標準偏差を求めるメソッドを自作していきます。 学生時代、試験の成績表をみると得点以外に、「偏差値」なども記載されて要ると思います。学生が一番気になる部分ですね!この「偏差値」を求めるためには標準偏差が必要となります。 標準偏差を求めるためには 平均点 が必要となります。なので最初に 合計 と 平均 を求めるメソッドを作成します。 合計や平均を求めるメソッドはシンプルなのでコードを載せるだけにします。 public static double Sum( double[] x ) { double sum = 0; for(int i=0;i<x.Length;i++) { sum += x[i]; } return sum; } public static double Average( double[] x ) { return ( Sum( x ) / x.Length ); } ...

セッターとゲッターは必要なのか?

セッターとゲッターの必要性 セッターとゲッターは必要か? そもそもセッターとゲッターとは? プログラミングを始めるとそのうち「 セッター と ゲッター 」という言葉を耳にすると思います。 セッターとゲッターとは、オブジェクト指向で使うメソッドで、そのクラス内の変数(フィールド)に値を代入したり、参照するためのメソッドとなります。 実際、この説明を聞いて、 「セッターとゲッター使わなくても代入参照できるよね?」 と思った人もいると思います。 そうなんです。セッターやゲッターを実装しなくても、変数に代入や参照はできます!! C#で書くと以下のようなコードになります。 class Test { public static void Main( string[] args ) { A a = new A(); a.number = 10; System.Console.WriteLine( "number=" + a.number ); } } class A { int number = 0; } 実行すると、「 number=10 」と表示されます。 「 A a = new A(); 」でAクラスをインスタンス化し、「 a.number=10 」でAクラスの変数 number に10を代入しています。 そして、「 a.number 」でAクラスのnumberの値を参照します。 このように、セッターやゲッターを使用しなくても、インスタンスの変数を操作することは可能です。 しかし、このままだとセキュリティ的に問題があります。「 a.number 」に代入する際に自分の好きな値を格納することが可能なのです。 開発者の意図しない値を代入されてしまうと、プログラムが正常に動作しないとき...

C#で行列計算プログラムを作成(基本計算と行列表示メソッド)

自作行列計算クラス C#で行列計算プログラムを作成 はじめに 今回は、 自作の行列計算クラス の説明を行います。 私は一応大学で数学を学んでいたこともあり、学生時代に行列計算のプログラムを作成したことがありました。 どのプログラミング言語でも 行列計算 のライブラリは存在すると思います。しかし、自分でコードを書くことに意味があると思うので今回はメソッドとして作成を行っていきたいと思います。 NumPyでよくね って思った人。その通りだと思いますが、私は NumPy には負けない(?) 作成自体は終わっているので、解説を書いていく感じになります。ちなみに言語は C# です。 今回のコードは こちら 行列の足し算、引き算 まずは、簡単なところから作成します。足し算です。 行列は 2次元配列 で表すので、引数は double型の2次元配列 を2つ指定します。計算した結果も行列を返すので、戻り値は double型の2次元配列 となります。 行列の足し算の仕組みは以下のようになっています。 1 2 3 4 + 5 6 7 8 ...