今年の12月に持病のウェルニッケ脳症の検査のため、3週間ほど入院いたします。その間の進捗は上がりませんが、それまで進捗を上げるようにいたしますので何卒よろしくお願いいたします。こんな私を支援していただける方がいらっしゃいましたら大変ありがたく思います。
本日は私が開発しているシステムの進捗報告ではありませんが、私の個人事業主としての活動報告となります。現在開発している関数電卓ですが、実装する関数で複雑なロジックを組む必要があることが分かり、少々開発に時間がかかる可能性が出てきました。私自身、病気をして前職場を退職しておりますのでお金があまりなく、このまま当システムの開発をしていては生活が出来ないことが明白ですので、派遣会社と契約して派遣の仕事を受けることにしました。このシステムはその裏で開発することになります。ですので、少々開発が終わるまで少し時間がかかってしまいますが、開発の進捗は都度都度投稿しますので、気になる方は見ていただければと思います。本日打ち合わせに行ったので進捗はあまりありませんが、πとeの実装が出来ました。画面右側の計算履歴を見ていただければと思いますが、算出結果が載っていると思います。その代わり前まで動いていた箇所(lnやiなど)が動かなくなってしまいましたので、底の修正に入ります。今は虚数iを含めた計算の処理を実装しています。特にi^2=-1の解を持つ値の型が数値の型ではないので、底の処理をどうするかというところを考えています。(Complex型となっております)
ソースの話となるので、プログラマーではない人にはなんのこっちゃとなるかもしれませんが投稿させてください。(私の記憶ミス防止のため)C#で開発をしているのですが、当初Mathクラスを使用して計算を実施する予定でしたが実装している中でxFuncを使う方針に変更しました。その中で、Mathクラス内のプロパティ名とxFunk内でのプロパティ作成から計算まででかなり形が異なるので、正規表現を使って計算式の書式を直すことが発生しました。(C#でのMath関数で冪乗の計算を行う場合Math.Powを使うことになりますが、xFunk内では^で計算ができるのでxFunk内で使用されていない.の箇所でエラーとなっておりました。
虚数を用いた計算の解を算出して表示することが出来ました。引っ掛かった点として、画面上からi(虚数単位)を入力した場合とiと√(負の数)を入れた場合で通るロジックが変わってしまい、うまく算出が出来ていませんでした。詳しいロジックについてはコード管理の点からお伝えすることが出来ませんが、業務システム開発時にはほぼ使うことが無い(使うことが無いわけではないが、私が会社にいた頃のお客様の中には使う相手がいませんでした)虚数の計算で使用する「Complex」という型の扱いや計算、虚数の取り出しに時間を食ってしまいました。特にComplex型のデータと画面上から入力した虚数の計算が厄介でした。項番98の式と解を見ていただければ分かるかと思いますが、√(-81)=9iと-6iの計算結果は3iとなりますので、解の虚数部分が3iとなっております。実数部は81/3なので27とこちらも正しい値となっております。他の計算ロジックなどに問題が無いかを確認するために虚数(i)同士の掛け算や、虚数を含めた四則演算、根号の底に負の数を入れた場合など数パターンで検証した結果もグリッドに出ています。根号や虚数の計算の実装は一旦終わりましたので、画面上にある演算子や記号の取り扱いについては実装が終わりましたので、明日からは計算履歴の共有の実装に入ろうかと思います。
現段階の進捗です。画面左側にあるボタンの実装はほぼほぼ終わりました。画面右の計算履歴グリッドを見ていただけますと、formula(式)とsolution(解)の結果が正しいことが一部を除いてお分かりいただけるかと思います。ただ、πを含んだ計算をしているsin(π)やtan(π)の計算結果が不正となっております。これは開発言語のC#におけるπの小数の扱いが問題となり、0という解が得られずに非常に小さい値が解として返ってきているものになります。これは数学上、0として返ってくるべきものなので内部で何かしらの処理をして0を返すようにするか、このシステムの仕様としてユーザに認知していただくかは考えながら残りの機能を実装していこうと思います。次はユーザ定数機能の実装に入ります。ユーザ定数機能というのは、ユーザが計算によく使う値を定数としてシステムが保持する機能となっております。ユーザ定数は他人の当関数電卓ソフトとテキストベースで連携することが出来るようにしようと考えているため、セキュリティのことを考えてユーザに出力したテキストファイルを暗号化するか問うようなものにしようと考えています。このファイルの入出力機能については、ユーザ定数のほかに計算履歴についても他人と共有することが出来るようにしようと考えており、グループワークしている方や共同研究などで計算結果を共有したい場合に重宝するかと考えています。また、本日は祝日ということで作業は一旦お休みしますが、また進捗が上がりましたら投稿させていただきます。






