質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

3回答

1344閲覧

ライブラリやフレームワークの作成

Aneks

総合スコア114

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2016/02/08 13:52

プログラミング上達のために、たまに言われることが、自作のライブラリやフレームワークを作るのが良いよ、ということがありますが、みなさんは初めて作ったライブラリって、どんなのがありましたか?
言語と一緒に、どんなのを作成されたか教えてほしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ある有名サイトのエンハンスを請け負っていましたが、フレームワークなどを利用しておらず、その結果当初XSSなどインジェクション系の攻撃耐性が弱いため、セキュリティインシデントが度々指摘されてました。
そのため、既存の実装に影響をあまり与えず、WEBリクエストをサニタイズして取得・出力させるフレームワークを作成しました。言語はPHPです。

Javaでは当初strutsなどのWEBアプリ用フレームワークが流行っていましたが、XMLが膨大化したり、パラメタの入力チェックのほか、相関チェックも併せて凝集させるために、付属のvalidatorなども不要で、ちょっと機能が大すぎた事がありました。
そこで、もっと軽量で、XMLを利用しないでアノテーションで制御できるフレームワークを構築しました。

その他、画像加工の必要がある業務では、画像メモリの1pxずつ処理する必要があり、それをインラインで行うことは効率的に不可能なため、フェードインやフェードアウト、他の画像とブレンドしたり・・・などの機能を簡単にできるライブラリを作成したりしました。

ライブラリやフレームワークは確かに、ご指摘通り上達につながりますが、上述のとおりいずれも「利便性や安全性を向上させ、効率的にしたい」という目的のもとに作るものになります。

例えば、現在プログラムを作っていて、「不便だから改善したい!」と思うものはありますでしょうか?
賛否ありますが最初は「もっときれいに、美しくしたい!」という動機でも、かまわないと思います。

完成度がどうあれ、先ずは「こうあって欲しい」という最終形がイメージできていて、それを追究して研鑽していくうえで、結果として上達していきます。

「上達するためにライブラリ開発をする」というのは、その作業自体がノルマ化されて、つまらなくしてしまいそうなので、気を付けてくださいね。

投稿2016/02/09 01:50

編集2016/02/09 01:52
Toyoshima

総合スコア422

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Aneks

2016/02/11 02:44

ありがとうございました。 他の方と迷ったのですが、左の数字で1票が入っていたToyoshimaさんをベストアンサーにします。
guest

0

CSVを読み込むためのライブラリだったら、何度も作ってました。同じ言語でもスクラッチで何度もつくってた。

WindowsのDosでバッチジョブを管理するフレームワークを作っていました。コマンド実行時のログ出力や入出力の管理や異常終了時のリトライが実行時のコマンド引数で管理出来る仕組みになっていました。

メーンフレームの端末エミュレータを操作するAPIが使いづらかったので、オブジェクト指向で画面をVBAから操作できるようにしました。

基本的には、システム毎に作ったプログラムが、ある程度綺麗にかけていれば、自然と別システムでも使えるはずです。という考え方なので、とくにライブラリやフレームワークができたからってスキルが上がったという感じはしないです。

コードがあまりイケてないヒトに、”重複したコードを排除して、再利用可能なコードを書いて”とお願いしたら、再利用と称してひとまとめにすべきでないものまで同じルーチンに入れていたという経験があります。そこから得た教訓は、”簡潔に書いたものが再利用性し易く、高機能なものは再利用を難しい”というもので、はじめからライブラリ化を意識するのは危ないかもしれません。

投稿2016/02/09 13:02

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

かなり昔にC言語で、今で言うLog4jの様なライブラリを作成しました。

機能を実現するだけでなく、利用者が使いやすいようにインタフェースを設計するのが非常に勉強になりましたね。

投稿2016/02/09 00:47

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問