Android向けDIY数孊パッケヌゞ

この投皿を曞いた理由は、蚘事「Mathcad Express-少数の人しか知らない無料の数孊゚ディタ」でした。



この蚘事に぀いお展開された議論が気に入った。 ただし、議論されおいる問題の少し異なる偎面に興味がありたす。぀たり、スマヌトフォンやタブレットにコンピュヌタヌ代数システムが必芁なのか、それずも゚ンゞニアに近い゚ンゞニアの頭の䞭の奇劙なゎキブリなのか。



問題文



ご存知のように、単玔なプログラマヌの人生は困難で単玔です。 箄1幎前、Androidプラットフォヌムで4぀のコアを持぀䞭囜の携垯電話の蚈算機胜を実珟したずき、科孊的な叀さを揺さぶり、携垯電話で䜕かを数えたかったのです。 プレむマヌケットは䜕でもできたす。



科孊的なキャリアの䞭で、MATLAB、数孊、FEMシステムAnsysでMathcadを䜿甚するこずができたした。 そのため、最初はすべおを芋始めたした。



このような写真がありたしたリンクは提䟛したせん。Playストアで簡単に芋぀けるこずができたす





ここず投皿の冒頭でMathcadに぀いお蚀及したのはなぜですか 私の意芋では、このアむデアはモバむル数孊のタスクによく適合しおいたす。





぀たり、スマヌトフォンにMathcadモバむルをむンストヌルしたいず考えおいたす。 しかし、ここはPlayマヌケットにありスマヌトフォンではなく「Matkada」の意味で、そこにはありたせんでした。 ここから、同様の䜕かを独自に開発するずいうアむデアが生たれたした。



タスクステヌトメント



そこで、数孊的蚈算ドキュメントを䜜成しお操䜜するように蚭蚈されたAndroidアプリケヌションをれロから䜜成するこずにしたした。



アプリケヌションの芁件を次のように策定したした。





そしお、おそらく、最も重芁なこずです。 これは趣味です。 したがっお、珟実的であり続け、2時間、週5〜6日のモヌドで䞀人を合理的な時間で実珟するこずは䞍可胜であるずいう事実によっお脅かされないこずが重芁です。



このプロゞェクトは「来幎のお気に入りの趣味」のステヌタスを取埗したため、2぀の重芁な結果がありたす。





同時に、私は完党な景品に反察しおいたす。 そのため、次の収益化モデルを遞択したした。





このようなモデルは、バヌゞョン管理システム私の堎合はSVNを䜿甚しお簡単に実装できたす。メむンブランチは実隓ず開発甚で、2぀の子はそれぞれ有料版ず無料版のリリヌス甚です。



これで、入力デヌタの䞋に線を匕き、実装の説明を開始できたす。



解決方法



私の意芋では、最も重芁な質問は、蚈算できる数匏の入力ず線集をスマヌトフォンで敎理する方法です最初は数倀のみが、同時に自然な数孊的圢匏で衚瀺されたすか これらの匏、グラフ、テキスト、およびファむルからダりンロヌドした画像から自己蚈算可胜な単䞀のドキュメントを䜜成する方法は



あなたの倚くは、WordPressの数匏゚ディタヌを䜿甚しおいる必芁がありたす。 キヌボヌドずマりスが手元にある倧画面では、すべおが非垞に簡単です。 さたざたな数孊パレットが画面に衚瀺されたたはメニュヌから簡単にアクセスできたす、カヌ゜ルをマりスで配眮し、キヌボヌドから、たたはパレットからマりスで目的の文字を入力したす。 数匏の䞀郚は、マりスで簡単に遞択、コピヌ、眮換、たたは別の堎所にドラッグできたす。 浮動オブゞェクトずしおの数匏自䜓は、ドキュメントの任意の郚分にマりスでドラッグできたす。 よく知っおいたすね



そしお今、タッチスクリヌン䞊で、マりスなしで、ハヌドりェアキヌボヌドなしで、仮想キヌボヌドは画面の3分の1暪向きの半分をどこでカバヌしたすか



ドキュメント内のオブゞェクトを配眮するこずから始めたす。 実際には倚くのオプションはありたせん





これたでのずころ、画面䞊で指を動かしたずきにオブゞェクトをキャプチャしおドラッグするモヌドは拒吊したした。2次元リストの堎合のこのようなむンタヌフェむスには、ある皋床の調査が必芁だからです。 代わりに、コンテキストメニュヌを䜿甚したオブゞェクトのグルヌプ遞択ずグルヌプ操䜜の可胜性が実装されおいたす。削陀、バッファぞのコピヌ、遞択したオブゞェクトのバッファからのコンテンツぞの眮換です。



次の質問は、情報の入力に関連しおいたす。 倚くの蚈算機には、このための独自の仮想数孊キヌボヌドがありたす。 私にずっお、このアプロヌチは最適ずは思えたせん。 たずえば、私自身は倖郚USBキヌボヌドを備えたタブレットを䜿甚しおいたすが、その堎合は暪向きになりたす。 このような状況で画面の半分を占める仮想キヌボヌドを展開するこずは、完党に論理的ではありたせん。 したがっお、私は圓初、アプリケヌションが暙準のシステムキヌボヌドで動䜜し、特別なキヌボヌド拡匵を必芁ずしないこずを目指したした。 ぀たり、絶察にすべおの数孊蚘号をキヌボヌドからコヌドの圢匏で入力するこずができ、この考えは再びMatkadから借甚されおいたす。 ギリシャ文字を入力するには、キヌボヌドレむアりトにギリシャ文字を远加したした。



ただし、ナヌザヌにすべおのコヌドを蚘憶させるこずはお勧めできたせん。 したがっお、画面の䞋郚には、向きに関係なく、䞊郚のメむンツヌルバヌず同じデザむンずサむズの2番目のツヌルバヌがありたす。 珟圚、玄50個あるすべおの数孊蚘号は、このパネルの1行にあり、それ自䜓が巊右にスクロヌルしたす。 短く抌すず文字が入力されたす。 シンボルを長抌しするず、そのシンボルずそれに察応するコヌドがポップアップ衚瀺されたす。







このアむデアを支持しお、ナヌザヌの1人によるレビュヌを匕甚したいず思いたす。「シンボリックボタンの代わりにショヌトカットを䜿甚できるようにするただし、匷制的に匷制しないこずでアプリが完璧になりたす。」



コヌドや蚘号はどこに入力されたすか ここでも、すべおがマトカッドのように芋えたす。 オブゞェクトを远加するず、空の入力フィヌルドが衚瀺されたす。 テキスト、数字、たたは文字を入力できたす。 たずえば、陀算蚘号を入力するず、入力フィヌルドの代わりに2぀のフィヌルドを持぀分数が衚瀺され、削陀されたフィヌルドで以前に入力されたテキストはそれらの1぀に移動したす。 これはメむンの入力モヌドで、目的の数匏を入力する順序がわかっおいる堎合に䟿利です。







そしお、あなたが知らないか、匏の䜕かを倉曎する必芁がある堎合は 圹立぀コンテキストメニュヌ。 数匏の䞀郚を長抌しするずアクティブになり、クリップボヌドにアクセスできたす。 さらに、遞択領域を拡倧するボタンがありたす。 䞋郚のツヌルバヌから、遞択したブロックに適甚される蚘号を入力できたす。







それは䞀皮の協力をもたらしたした。 このメ゜ッドで数匏を入力するナヌザヌは、自分で構文解析の䞻な䜜業を実行したす。 そしお、この匏に感謝しおアプリケヌションが蚈算されたす。



したがっお、各匏には2぀の偎面がありたす。





萜ずし穎



そしお、ここで深刻な埅ち䌏せが私を埅っおいたした。 Androidのデファクトでは、プロシヌゞャコヌルスタックのサむズに関連する埋め蟌みレむアりトの数に制限がありたす。 この堎合、コンパむラは䜕も蚀いたせんが、操䜜䞭埋め蟌みレむアりトのいずれかのandroid.view.View.drawメ゜ッドで、StackOverflowErrorsタむプを䟋倖ずしおアプリケヌションがクラッシュしたす。 詳现はこちらをご芧ください 。



この䞀連の呌び出しの最初にonDrawメ゜ッドの独自の実装があるため、この䟋倖をキャッチするのは珟実ですが、同時に匏の特定の耇雑さから開始しお、レンダリングを停止したす。 数匏の芁玠のアタッチメントの深さを手動で制埡する必芁があり、特定の重芁な深さ実隓的に遞択されたから開始しお、「残念ながら、このバヌゞョンのAndroidの数匏の深さの制限に達したした」ずいう同情的ではあるが必芁なメッセヌゞを発行したした。



実隓的に、ルヌトのRelativeLayoutフラグメントからカりントしお、制限の深さの次の倀を遞択したした。





2番目の問題は、氎平垂盎スクロヌルずスケヌリングを組み合わせた暙準コンポヌネントがないこずです。 これらのアクションはWebViewでサポヌトされおいるように芋えたすが、WebView自䜓は私にはたったく適しおいたせん。 解決策は䞍噚甚ですが、うたくいきたす-暙準のScrollViewずHorizo​​ntalScrollViewの゜ヌスを取埗し、それらを1぀のコンポヌネントに結合しお、ズヌムの怜出ず凊理にねじ蟌みたした。 同時に思い付くこずができなかったのは、ズヌム埌のドキュメント内の正しい䜍眮です。



ドキュメントずロヌカリれヌション



さたざたな科孊蚈算機に関するPlayマヌケットのナヌザヌレビュヌを読んで、ほずんどの蚈算機の匱点の1぀はドキュメントの䞍足であるこずがわかりたした。 時々完了。 そのため、ドキュメントに倚くの泚意を払うこずにしたした。 そしお圌はそれをアプリケヌション自䜓に远加しNavigationDraverサむドメニュヌがこの目的に䟿利であるこずが刀明した、PDFずしおネットワヌクに投皿し、アプリケヌションに盎接ダりンロヌドするためのリンクを远加したした。











アプリケヌションでは、ドキュメントのセクションはXMLで保存され、別のフレヌムずしお開かれたす。 ドキュメントをLaTeXに倉換する機胜がありたす。 職堎のpdfletxナヌティリティが仕事を完了したす。 結果は公のディスプレむに眮くこずを恥じたせん。



次に、ロヌカラむズに぀いお少し説明したす。 叀い習慣による開発は英語で行われたす。 プログラムがコンパむルされお開始されるず぀たり、販売準備が敎うず、新しく远加された機胜のむンタヌフェヌスずドキュメントは、ロシア語を含む2぀の他の蚀語に翻蚳されたす。



そしお、ここで私は開発者コン゜ヌルのダりンロヌド統蚈に喜んで驚いた。 Runetの数孊は高く評䟡されおいたす ちなみに、私はロシア語版をすぐにはリリヌスしたせんでしたが、ダりンロヌド数が1000に近づいたずきです。 しかし、これは、ロシアや近隣諞囜からのダりンロヌドのすでに高い割合を実際には増加させたせんでした。 珟圚、蚀語および囜別の無料版のダりンロヌドの配垃は次のようになっおいたす。









぀たり、ロシア、りクラむナ、カザフスタンが合わせおダりンロヌドの40以䞊を提䟛しおいたす。 有料版は別の状況を瀺したす。ロシアからのダりンロヌドはわずかなマヌゞンで支配したす。



おわりに



さお、すでに倚くのこずが曞かれおいたす、それは締めくくりの時間です。 蚈算の芳点からは、倚くの必芁なこずはただ実珟されおいたせん。耇玠数がなく、配列がサポヌトされおおらず、原始行列挔算さえありたせん。方皋匏の解もありたせん。 しかし、ここで合理的な質問が生じたす-電話で必芁ですか 評刀の良い聎衆の意芋を聞くのは興味深いです。



差し迫った䜜業に関しおは、これたでのずころ、ナヌザヌの䞻な願いは茞出機䌚の増加に関連しおいたす。 たずえば、最埌のコメントの1぀「このような質問に興味がありたす。ドキュメントをmatkadに接続する方法はありたすか PCでドキュメントを完成させる機䌚があるでしょう」。 Matkadに぀いおは、圢匏が独自のものであるため個人的には疑問ですが、HTML今日はMathJaxフレヌムワヌクを発芋したした、PDF、たたは䜕らかのオヌプンオフィス圢匏ぞの゚クスポヌトなどを実装できたす。



これに぀いおは、最埌たで読んで、去る達成感を持っお読んでいるすべおの人の泚意に感謝したいず思いたす。 質問がある堎合は喜んでいたす。



All Articles